2010百度牛叉笔试题

tyzqqq 2010-09-05 10:18:51

请写出以下程序的运行结果,并解释导致这样运行结果的关键性原因。

#include <iostream>

using std::cout;

class P

{

public:

virtual void print()

{

cout << "P";

}

};

class Q: public P

{

public:

virtual void print()

{

cout << "Q";

}

};

int main()

{

P * p = new P;

Q * q = static_cast <Q *> (p);

q->print();

delete p;

cout << endl;

q = new Q;

p = q;

q->print();

p->print();

cout << endl;

p = new (q) P;

q->print();

p->print();

cout << endl;

p->~P();

delete q;

return 0;

}



一道难的

实现一个简化的搜索提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中出现频率最高的前10条query。

提示:

1、可以预处理日志

2、假设query不超过10亿条,每个query不超过50字节。

3、考虑在大查询量的情况下如何实现分布式服务


希望求思路及程序的实现
...全文
372 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ithiker 2010-09-07
  • 打赏
  • 举报
回复
百度理论和应用都考这么难???
duruo850 2010-09-07
  • 打赏
  • 举报
回复
第二题好难
harderman 2010-09-06
  • 打赏
  • 举报
回复
期待第二题答案.
康斯坦汀 2010-09-06
  • 打赏
  • 举报
回复
想起那句经典:众里寻他百度
kaoyan2005 2010-09-05
  • 打赏
  • 举报
回复
先记下
cswuyg 2010-09-05
  • 打赏
  • 举报
回复
⊙﹏⊙b汗,上边说错了,应该是就一个虚函数表指针。
cswuyg 2010-09-05
  • 打赏
  • 举报
回复
第二道,没练过。。不懂
只懂C++的:
输出(验证过了):
P
QQ
PP
原因:
1、static_cast转换之后,q指向的还是那个对象。还是通过p对象的虚函数表指针来调用print。故输出:P
2、Q对象,故输出两个Q。(这个应该很好理解)
3、new (q) P;这句使得P对象建立在了原来Q对象的空间上,所以这时候虚函数表指针变成了指向P对象的虚函数表。所以后边的两个输出都是P

最后的析构,应该是多析构了一次,p = new(q)P之后p和q指向的是同一个空间,原来的Q对象(就一张虚函数表)已经没有了。
libinfei8848 2010-09-05
  • 打赏
  • 举报
回复
第一个:
打印
P //内存只有个P对象存在
QQ //内存只有个Q对象存在,虚函数运行时调用
PP //内存由P对象和一个被P覆盖的残缺不全的Q对象

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧