设为首页 加入收藏

TOP

百度2010年实习生招聘笔试题RD-2
2014-11-23 21:44:21 来源: 作者: 【 】 浏览:15
Tags:百度 2010年 实习生 招聘 试题 RD-2

第一题 简答题


1. 多线程和多进程模式有什么区别?在用两种模型开发服务程序时,分别有什么优缺点?采用长连接和短连接模式有什么区别?分别有什么优缺点?采用同步和异步模式有什么区别?分别有什么优缺点。


进程一般指一个程序,线程是指程序中一个单一的顺序控制流,进程间的关系比较疏远,各个进程在自己独有的地址空间内执行,寄存器和堆栈动态数据堆静态数据程序代码都是独立的。线程之间共享同一地址空间,共享动态堆、静态数据及程序代码。为保持自己的控制流线程独有寄存器和堆栈。线程是处理机调度的基本单位。用多线程模式开发服务,可以提高系统运行性能,充分发挥多cpu体系结构的优势。



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


#include


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 (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;


}


P


QQ


PP



第二题 算法与程序设计题


1给定如下的n*n的数字矩阵,每行从左到右是严格递增, 每列的数据也是严格递增


1 2 3


3 5 6


4 8 9


现在要求设计一个算法, 给定一个数k 判断出k是否在这个矩阵中。 描述算法并且给出时间复杂度(不考虑载入矩阵的消耗)


初始化M[n][n];
bool function
{ while(i i++;


flag=i-1;
return Search(M,k,flag)
}
Search (M[n][n],k,flag)
{
if (n==flag) return false;
else
{
if(k>M[n-1][n-1]) return false;
else
{
if(第n行和第n列中的元素都不等于k)
return Search(M[n-1][n-1],k,flag)
else return true;
}
}
}


时间复杂度O(n*n)


2.设 一个64位整型n,各个bit位是1的个数为a个. 比如7, 2进制就是 111, 所以a为3。


现在给出m个数, 求各个a的值。要求代码实现。


Int countone(int aa){


Int counter=0;


For(int e=0;e<64;e++){


If( 2^e&aa !=0)


Counter++;


}


}


Int main(){


Int[] m={1,2,3,4,5};


Int len=sizeof(m)/sizeof(int);


For(int i=0;i

Printf(“%d”,countone(m[i]);


}


第三题 系统设计题


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


提示:


1、可以预处理日志


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


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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2012.9.22参加百度笔试,应聘职位.. 下一篇ibm面试失败过程, 前车之鉴!没见..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: