「百度实习」C++后端开发面经
一面
没有自我介绍
看你写了很多 Linux C++,你 C 和 CPP 区别是什么
指针和引用的区别
线程间的同步方式
进程间的通信方式
请介绍五大 IO 模型
数据库了解多少
什么情况下建立索引
能不能讲具体点,什么情况不建立索引
MySQL 存储引擎有哪些
为什么做一个 RPC 框架,是 demo 吗
看你用了 protobuf,它和 JSON 的区别是什么,为什么使用它
RPC 协议和 HTTP 协议的区别和特点
你用到了 zookeeper,它在你的项目中起到什么作用
字节跳动青训营是做什么的
看你写了熟悉的排序算法,你写个归并吧(后来只讲述了思路)
那你写个快排吧(有个符号写反了,稍微 debug 了一下)
你有什么想问的
技术栈是什么(go 语言,gin,gorm,grpc 这类的)
多快出结果(很快)
下午三点面的,六点多在地铁上收到了二面通知。
二面
面试官感觉比较严肃,介绍面试流程
自我介绍
说一下 C++ 内存分布
你提到了 .stack,这只是编译器搞得内存吗,你不能在代码里处理吗?
如果在 .stack 中定义某个很大的对象,这可以吗
你说到了栈溢出,那什么情况下会栈溢出,你了解吗
你有了解在哪个数值上会溢出吗,比如你的栈设置了 1K,2K,1M,2M,这样
C++ 重载和重写的区别
你提到了虚函数,可以讲一下虚函数的实现吗
C++ 的友元有用过吗
为什么要这么做,C++ 为什么要有这个,这个不是破坏了封装吗
我看你有说了解 C++ 11 的智能指针,有哪几个,具体实现了解吗
你提到了两个概念,一个是 shared_ptr,一个是 weak_ptr,它们的区别和使用场景
我们一般不会发生循环引用,weak_ptr 那还有什么使用场景
TCP/UDP,HTTP/HTTPS 都很熟悉吧,讲一下 TCP 三次握手
为什么要三次握手,不能两次吗
这个是官方给的,你自己有思考过吗(保证双方互相得知了收发信息的能力,维护了序列号)
TIME_WAIT 状态是做什么用的
如果你在 TIME_WAIT 状态下 read 函数会发生什么
read 函数的返回值你了解吗
写个程序吧,中等难度可以吧,不使用 if else switch 等条件判断语句,判断 a b 谁比较大
那就写个简单的,判断闰年
你有要介绍的项目吗
你的 epoll_wait 是怎么处理的,time_out 值等
那你的项目的模型是什么
线程池的实现
网络问题再问一个,网络大小端知道吗
我这边没什么问题了,你有什么问题吗
晚上接到了来电,第二天三面
三面
三面好像忘记发我邮件了,我直接一个电话打过去,然后就是电话问问题了。大致就是实习够用,但是考虑我大概率不会留在这里,就把我转到北京的部门看看也没有匹配的。