百度后台开发提前批面经汇总(更新至2021-08-11)

恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

一面:

候选人A: 1h10min(8.6)

  1. 自我介绍

  2. 问项目,问有没有什么高并发的操作(并没有)

  3. 问使用过redis没有(并没有),redis使用场景,特点(扯到了淘汰算法)

  4. 那现写一个lru算法吧(先用linkedlist和hashmap写出来了,然后面试官让用linkedhashmap写一个,然后我卡在移除节点上,后来面试官指导用迭代器写出来了)

  5. 讲讲JVM的各种GC算法

  6. 标志整理算法如何判断结点存活?然后举例比如A指向B,B指向A。(不知道)

  7. 问了s’y’nchronized,lock,和volitale的底层实现和一些细节

  8. 线程池参数,添加线程池流程,还有几个细节问题

  9. 如何判断select的sql语句是否命中索引

  10. Explain有什么用

  11. 索引的结构,B树和B+树区别

  12. 反问

候选人B: 86min

面试岗位:C++/GO/PHP研发工程师 面试部门:搜索技术平台研发部

  1. MySQL索引如何实现?

索引底层是用B+树实现的,B+树非叶子节点存储的都是索引,只有叶子节点才存储真正的数据,并且叶子节点用链表连接起来,主要是方便范围查找。

  1. B+树与红黑树有什么区别?为什么MySQL索引不用红黑树?

经典八股文,我竟一时想不起来,沉默了一会儿我说忘记了,面试官继续下一个问题。

  1. 谈谈你对I/O多路复用的理解?select与epoll有什么区别?

项目中有用到I/O多路复用,所以问了。

  1. 实习项目中的解耦与优化具体是做了什么?

我是接手的一个QT项目,之前的开发人员把所有功能函数全都写在一个mainWindow文件中了,导致文件很臃肿,改起来很累,于是我把每个页面单独拆分成一个文件,函数根据功能分成字符串处理类、I/O类、按钮功能类等等,根据类拆分到不同的文件中,这样就是解耦了。

  1. 聊天室项目最大的难点是?以及一些实现细节?

网上找的一个很简单的项目,总共只有六百行代码,基于命令行的项目。之前面试的时候面试官都不屑于问我项目相关的东西,没想到这次终于问了,结果因为太久没复习了,答得不是很好,项目具体用了哪些数据结构都记不清了。

  1. 介绍快排原理?

首先快排是不稳定排序,因为它是通过交换元素来实现的,接着说了快排实现原理,这里就不详细展开了,然后说了快排适用于完全乱序的序列,不适用与基本有序或基本逆序的序列。

  1. 介绍虚函数?
    虚函数是为了实现C++的多态性,运行时多态。在基类中声明一个虚函数,在其派生类中重写该函数,在程序运行时就可以根据指针所指对象的类型来调用对应的方法,而不是根据指针本身的类型来调用方法,这是虚函数的一个用法;

  2. 一个大文件中存了很多URL,如何找出相同的URL(应该是问找出重复出现过的URL)?

一般来说遍历文件对每个URL建哈希表,就可以得出重复出现过的URL。但是对于大文件,有可能几十甚至几百个G,不可能对其建哈希表,因为内存放不下,像这种大文件数据处理首先是要想到分而治之,将其拆分成若干个小文件,具体拆分成多少个,取决于文件大小以及所给内存大小。比如我要拆分成1000个小文件,先遍历整个大文件,对其中每个URL做哈希计算,或者其他单向散列算法,计算出一个数值,将这个值对1000取模,最后得到的值作为小文件编号,该URL存入此编号的小文件,因为是单向散列算法,所有的URL都会较均匀的分布到这1000个小文件中。又因为相同的URL计算出来的散列值相同,所以相同的URL必定会分到同一个小文件内,这时只要逐个遍历小文件建立哈希表就可以得到相同的URL了,因为小文件的话内存是能够装下的。

在函数中能返回局部变量的地址吗?返回后在main函数中是否能根据此地址取到该局部变量的值?
不能,因为局部变量在函数返回后就销毁了,再到它的地址去取值是没有意义的;

  1. 追问:为什么局部变量在函数返回后会销毁?

我想是因为局部变量是存储在栈上的,栈空间由系统来分配,当局部变量离开作用域,其内存空间就会自动被释放,只有用new或者malloc分配在堆上的空间才是不会被自动释放的。

  1. 你目前还面试了哪些公司?

秋招的话,百度是我第一家面试的公司,目前还没有面其他公司。

  1. 算法题部分

手撕反转链表
手撕约瑟夫环问题
内存管理算法LRU思路

  1. 反问环节

二面:

候选人A: 45min(8.9)

  1. 自我介绍

  2. Try catch finally执行顺序

  3. 类和方法的区别(我直接问号)

  4. 讲讲静态的方法,静态类的特征

  5. Jvm gc收集器 收集算法

  6. 创建多线程有哪几种方法

  7. 问了s’y’nchronized,lock,和volitale的底层实现

  8. 线程池参数,添加线程池流程

  9. 讲讲联合索引

  10. 如何判断select的sql语句是否命中

  11. Explain后执行计划中的不同type的性能区别 从高到低说说

  12. 索引手画索引结构,并模拟插入过程

  13. 算法判断链表有环

  14. 算法找到有环链表的入口

  15. 写一个单例模式

  16. 反问

因为和一面有些类似的问题所以答得挺流畅,题目也都做过所以很快就结束了。

候选人B: 45min(8.9)

  1. 介绍项目
    
  2. Zookeeper的节点有几种类型?临时顺序节点有什么应用知道吗
    
  3. Zookeeper是怎么保证其高可用的,听说过zab吗?
    
  4. Redis怎么设置分布式锁
    
  5. 锁续期不好使了怎么办,怎么能尽可能减小损失
    
  6. Tcp三次握手四次挥手
    
  7. Tcp的半连接队列知道吗
    
  8. 上述半连接队列满了怎么办,syn cookie知道吗
    
  9. Csrf知道吗,知道的话说说怎么处理
    
  10. Raft算法知道吗

  11. 现在在学什么技术?

  12. Mysql范式讲一讲

  13. Mysql事务说一下

  14. Mysql事务能应用到分布式吗

  15. 算法(双向链表的反转)

  16. 算法(和最大连续子数组)

  17. 反问

三面:

候选人A: 45min (8.11)

  1. 自我介绍

  2. 聊项目

  3. 从项目问到和人协作的问题

  4. 聊人生

  5. 反问

候选人感想:总的来说三次面试体验非常好,流程很快,面试官很有耐心,说错了也会安慰说没关系,许愿还有后续呜

候选人B:

面试岗位:java后端开发 面试部门:百度基础架构部(inf)

1.说一下项目(基本没问什么,看不上这个项目,问我有不有别的,这里就凉了一半)

2.虚拟内存说一下

3.页面置换算法说说

4.逻辑地址物理地址怎么转换

5.手撕LRU(第一次写,撕了半天,忘记一些细节处理了,最后还是没整好,挺可惜的,到这里基本就凉了)

6.mmap

7.为什么不考计算机的研

8.mvcc说一下

9.oom怎么处理

10.反问(居然还有反问,就很神奇)

候选人感想:三轮面试官真的都很好,很耐心,给我的体验特别好,在此感谢他们!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值