百度提前批C++/PHP工程师面经(已口头offer)
一面(8.21)
1.项目
2.实习
3.四道代码题(四选二)
爬楼梯,元素插入有序数组(无重复元素),全排列,删除倒数第n个节点
选了第一题和第四题写,时间充裕让说了下第三题的思路
操作系统相关
4.进程通信几种方式
5.进程有几种状态
6.死锁的条件
7.避免死锁常用的算法
8.缓冲区溢出的原因
9.分段和分页的区别
计算机网络相关
10.http和https的区别
11.http常见的状态码
12.get个post方法的区别
13.DDOS和XXS(这个不知道,就没继续问计网了)
C++相关
14.面向对象的三个特点
15.重写和重载的区别
16.引用和指针的区别
其他
还问了我学过设计模式、网络编程和计算机组成原理没(表示都没学过),数据库问了我sql注入我不会就没继续问了。
更新二面,问得挺难的,C++为主
二面(8.21)
1.项目
2.实习
C++相关
3.vector底层实现,我就只讲了讲会提前在尾部额外分配内存,如果达到capacity了会怎么做,有没有什么优化方式,没答上
4.哈希冲突几种解决方法,如何从设计上尽可能减少哈希冲突
5.哈希负载因子知道吗
6.map和unordered_map的区别,sql中你会用哪种结构,为什么
7.内存对齐,说一说你的理解
8.为什么要内存对齐
9.内存屏障知道吗
10.快排最好最坏复杂度,快排的优化(如何减少递归栈深度,提高效率),快排的非递归实现大概怎么做
11.快排无论是递归还是非递归,都可能出现栈溢出,如何解决?
12.static全局变量执行初始化时可能出现什么问题
13.说一说C++中的内存分区
14.两个static全局类变量a,b,a的构造函数需用到类B中的static变量,如何保证在构造a时类B中的这个变量已经初始化了(当时没太理解面试官意思,下来编程验证了下,确实有这个问题,编译器会报错)
计算机网络相关
15.https流程讲一下
16.常见的加密算法分类,每类里具体有哪些
操作系统相关
16.锁用过哪些,分别讲讲(说了了解互斥锁读写锁自旋锁概念)
17.你说的这些锁分别适用于什么场景
手撕代码
寻找重复数 leetcode287
又问了我一个知不知道二叉树空间复杂度为O(1)的中序遍历方法(morris方法?)反正不会就完事了
智力题
有三个箱子,有一个中奖,你选定了一个箱子,主持人打开一个没有奖的箱子,问你换不换成第三个箱子(条件概率)
更新三面,给百度的效率点赞
三面(8.23)
正在外地出差突然接到了三面面试官的约面,他说今天晚上必须向公司反馈一个面试结果,问我下午什么时间方便电话聊聊,我说现在就行(结果通话质量不好,很多问题没听清楚,一直叫他重复问题)
数据结构相关
1.数据结构学过没,说说堆排序创建堆的复杂度
2.有没有比O(nlogn)更好的方法(有)
3.堆排序和快排优劣
4.哪种时间复杂度O(nlogn)的排序是稳定的(归并)
计算机网络相关
5.三次握手,为什么要第三次握手
6.四次挥手,这里我讲得比较清楚,就没有追问细节了
操作系统相关
7.进程生成到结束的流程
8.进程内存分区
C++相关
9.如何在main函数执行前输出helloworld
10.还学过其他什么语言
11.数据库学过吗(没有),然后问了一下我的专业有哪些课,主要的课程
12.项目实习
13.介绍了一波部门,是百度搜索下的一个部门,感觉百度的部门负责人在这方面都很健谈
他说对我的评价不错,希望我能在后续的所有offer中考虑他们部门,算是给了个口头offer吧,等一个正式offer