百度C++/PHP研发工程师校招面试
1面1h20min
基础知识
(1)自我介绍
(2)项目介绍
(3)论文介绍:论文创新点,困难点,解决方案。
(4)指针和引用的区别与联系
(5)虚函数的实现,虚表,虚函数指针
(6)系统调用与库函数调用的区别
(7)静态链接跟动态链接的区别
(8)内存泄漏遇到过吗?怎么检测,如何避免?
(9)数据库会吗?
(10)进程和线程的区别,何时使用多线程?
(11)进程间通信方式
(12)死锁的条件和处理死锁的方法
(13)TCP特点,三次握手与四次挥手
(14)TCP序列号是如何选择的,如果客户端有多个进程发起TCP连接请求,序列号重复了又怎么处理?(唯一没答上来的点,跟面试官讨论了很多种可能性,但是好像思路不对,其实应该这个序列号没关系,有端口跟IP区分就好了)
编程题
(1)链表反转
(2)最大子序列和(DP入门题)
=====================================================
2面2h10min
基础知识
(1)自我介绍
(2)项目介绍。难点,创新点
(3)new和malloc的区别
(4)内存泄漏的种类,如何防止内存泄漏?
(5)资源泄漏
(6)http和https的区别,https证书如何校验?
(7)tcp如何保证可靠性
(8)vector,list,map区别
(9)vector如果开始分配的内存不够了,系统怎么处理?
(10)红黑树和AVL树的区别
(11)InnoDB怎么实现的?
(12)进程内存分配
(13)共享内存原理
编程题
(1)找出一个数组中重复出现的数字
(2)找出一个数组的中位数(O(logn)算法)
(3)数组循环右移K位(12345循环移2位是45123),时间复杂度跟空间复杂度最优怎么实现?
(4)给定一个字符串,找出最长的回文子串
(5)判定一个给定的字符串是否是合法IP
#面经##校招##百度##C++工程师##PHP工程师#