百度C++工程师面经(社招)

笔试题

1. 包括几种算法的复杂度

2. linux的基础知识

3. C/C++基础知识

4. 下面的程序可以从1....n中随机输出m个不重复的数。请填空knuth(int n, int m) { srand((unsigned int)time(0)); for (int i=0; i<n; i++) { if ( ) { cout<<i<<endl; ; } } }分别为:rand()%(n-i)<m和m--;

5. 以下prim函数的功能是分解质因数。请填空void prim(int m, int n) { if (m>n) { while ( ) n++; ; prim(m,n); cout<<n<<endl; } }分别为:m%n和m/=n

6. 下面程序的功能是输出数组的全排列。请填空void perm(int list[], int k, int m) { if ( ) { copy(list,list+m,ostream_iterator<int>(cout," ")); cout<<endl; return; } for (int i=k; i<=m; i++) { swap(&list[k],&list[i]); ; swap(&list[k],&list[i]); } }分别为:k==m和perm(list,k+1,m)

7. 主观题:

(1)用户启动程序时,服务器会以uid,login_time,logout_time的形式记录用户的在线时间;用户在使用程序下载时,服务器会以taskid,start_time,finish_time的形式记录任务的开始时间和结束时间。有效下载时间是指用户在开始时间和结束时间之间的在线时间,由于用户可能在下载的时候退出,因此有效下载时间并非finish_time和start_time之差。假设登录记录保存在login.txt中,每一行代表用户的上下线记录;下载记录保存在task.txt中,每一行代表一个任务记录,记录的字段之间以空格分开。计算每个用户的有效下载时间和总在线时间的比例。注意:请尽量使用STL的数据结构和算法

(2)在8X8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间像8个方向移动(当然不能走出棋盘),请计算n个骑士的最早聚会地点和要走多少天。要求尽早聚会,且n个人走的总步数最少,先到聚会地点的骑士可以不再移动等待其他的骑士。 从键盘输入n(0<n<=64),然后一次输入n个骑士的初始位置xi,yi(0<=xi,yi<=7)。屏幕输出以空格分隔的三个数,分别为聚会点(x,y)以及走的天数。

8. 指针用法,以及几种排序方法的实现等。

机试

1. 要求2个小时内编写出某个模拟系统的程序。

技术面谈

1. 问了linux的几种通讯方式

2. 非阻塞IO、select、poll和多进程多线程、排序算法等知识

项目负责人面试:

1. 主要是询问项目经验等

#百度##C++工程师##面经##社招#
全部评论

相关推荐

点赞 15 评论
分享
牛客网
牛客企业服务