百度服务器/后台开发一、二、三面面经(已拿offer)

春招找实习,三月中旬才投递了百度。4.11一天内连着进行了三场面试,从早上10点面断断续续面到了下午两点。下面是面经:

一面 技术面 60min左右

一面是一位女面试官,还是挺nice的。不过在面试中经常不断问我“你确定是这样吗?”有点压力面的感觉,搞得我心态有点波动。问题主要分为项目、计算机基础和算法三部分,具体如下:

  1. 项目
    项目中主要就我的文件存储进行了提问,指出我的文件存储方式可靠性不够高。指出采用服务器备份甚至发个邮件
  2. 计算机基础
    1. 数据库
      因为我简历商写了对数据库比较熟悉,面试官上来首先问了数据库相关问题,还说她总算可以问数据库问题了,具体问题如下:
      • MySQL数据库有哪两种引擎?它们之间有什么区别和联系?
      • 索引的底层实现原理是什么?B树和B+树的区别是什么?
      • 查询时命中主键和普通值有什么区别?
      • 事务了解么?事务回滚有什么实现机制?除了日志之外呢?
    2. 操作系统
      • 进程和线程区别?进程与线程共享什么资源?线程独占什么资源?
      • linux系统中查看进程的命令?文件相关命令有哪些?
      • 硬链接软链接了解么?
    3. 计算机网络
      • TCP建立连接过程。为什么要三次握手呢?
        我回答了为了解决延迟SYN报文到达的问题。面试官觉得我没答道点上,而是引导我思考如果第二次握手的SYN+ACK报文丢失了之后,客户端会不断发送SYN报文,而由于没有第三次握手,服务器端会认为连接建立,不断发送数据。这时就产生了死锁问题。这也是个不错的角度,拓展了我的思路。
      • HTTP错误码有哪些了解么?
  3. 算法
    1. 判断链表中环相关问题
      在这个问题中问深挖了一系列问题。
      • 如何判断链表是否有环?时间复杂度是多少?
        快慢指针,O(n),时间复杂度这里多问了一点,问了时间复杂度具体是怎么计算的。
      • 如何计算环的长度?
      • 如何找到环的入口?
      • 如何计算整个链表中节点数量?
    2. 最长公共子串
      经典dp问题,结果写代码的时候还是在边界情况中有点卡壳。说明还是加深理解。

二面 技术面 70min左右

问题主要分为计算机基础和算法。

  1. 计算机基础
    1. C++语言
      • 析构函数是否可以为虚函数?构造函数是否可以是虚函数?
    2. 计算机网络
      • 浏览器打开一个网页经历了怎样的过程?
        dns解析,tcp链接,https连接中的ssl加密过程,https链接
      • HTTP错误码有哪些?502,200,404?
    3. 操作系统
      • 进程与线程
    4. 数据库
      • 索引的底层机制是什么?为什么采用B+树?
  2. 算法
    1. 1亿个数中找1000个最大的
      最小堆实现,考虑内存大小问题,不能一次全部将数据读入内存
    2. 判断链表中是否有环?
      又来一次
    3. 升序的数组中寻找是否有两个数相加为给定值?
      一开始想成了leetcode 1 two sum问题,回答用哈希做。结果反应过来排好序了,直接双指针即可。
    4. 二分查找
    5. 八个字母共有多少组合?每个字母可以使用多次,但类似abb,bba算一种
      我没做出来...
    6. 僵尸吃人问题,僵尸吃人后变成人,一个人能够被两个僵尸吃,人被吃后牺牲。问最后多少人存活。
      前一个问题没做出来给了一个补救机会,做出来了

三面 技术面 50min左右

这次面试官应该级别比较高,问的问题很深很难。

  1. 以后读研么?问什么想来实习?为什么不读研想工作?
    一上来搞得我以为是HR面...
  2. 操作系统
    1. 程序装载进内存后分别在哪里?
      代码在.init .text .rodata,初始化的全局变量在.data,未初始化的在.bss,还有堆和用户栈
    2. 程序在调用中发生了什么?返回时又发生了什么?
      这个问题我真是没想到,我一直以为这种底层问题不会被问到。不过幸好我在学校里上过相关课程。具体可以参考《计算机系统基础》(袁春风)。大概就是在用户栈中压入参数,返回地址,%ebp,接着跳转,开辟栈空间,保存需要保存的寄存器。返回时反过来从栈中进行恢复。
    3. 你怎么接触到这些的?
      在学校里上过一门ICS课里接触过。
    4. 你调过core么?
      我以为是延续上一题,我给听成了call,结果会错意了哈哈。
    5. 同步/异步 阻塞/非阻塞
    6. 接触过多线程编程么
      比较少
  3. C++
    1. 多态有哪些?分别怎么实现的?
      静态多态,动态多态。
      • 静态函数多态通过编译时不同的函数名来实现。
        不同的函数名是怎么组合出来的?真不知道了...
      • 动态多态通过虚函数实现,讲了下虚函数表原理
        虚函数表头指针属于类还是对象? 对象
        虚函数表属于类还是对象? 类
        虚函数表存在哪里? 静态数据区
    2. 静态变量和非静态变量有什么区别?分别存在什么地方?
      要分为静态全局变量,静态局部变量,非静态全局变量,非静态局部变量来答
  4. 算法
    1. 说说你了解的排序算法,分别有什么适用范围?
      快排,归并,堆,分析了下时、空复杂度,讲了点适用范围
  5. 计算机网络
    TCP建立连接和断开连接
  6. 向面试官提问
    技术栈是什么?
    跟你的背景比较契合。linux下用C++编程,也会接触到汇编语言。

后续

4.29日收到offer call,是北京凤巢的,具体没说哪个部门。5.14收到offer邮件,确认部门为商业架构部。

总结

整体面试效率还是很高的,过程也比较流畅,跟面试官交流不错。不过等offer邮件的过程有点漫长。好在最后结果不错。

#百度面试##百度##C++工程师##实习##面经#
全部评论
刚刚oc啦,是凤巢的,具体没说哪个部门
1 回复 分享
发布于 2020-04-29 19:30
感觉我们三面是一个人,问的都一样
1 回复 分享
发布于 2020-04-11 16:47
楼主有消息了嘛
点赞 回复 分享
发布于 2020-04-20 16:32
感觉你这面试纯靠背
点赞 回复 分享
发布于 2020-04-17 21:57
请问大佬,“查询时命中主键和普通值有什么区别?”这个问题的答案是什么呀
点赞 回复 分享
发布于 2020-04-11 18:40
最后让等通知吗
点赞 回复 分享
发布于 2020-04-11 16:53

相关推荐

zhch7:建议9✌️把学历加黑加粗,如果实在offer可能是觉得佬不会去
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
15
116
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务