朋友先后折戟腾讯、字节、快手、网易、滴滴、深信服后,终于成功上岸了

作者:阿秀

原文链接:https://mp.weixin.qq.com/s/MsaAr1ofstCgxqs749W1wg (opens new window)

大家好,我是阿秀

阿秀粉丝群里一位小伙伴顺利上岸百度实习岗了,把他的经历分享给大家!

新年就该分享一些喜庆的事情鸭!

# 背景介绍

本人本科就读于某计算机评级为 B 的双非学校,大学四年完全晃悠过去了。

本科时完全没有和工作有关的概念,就是该上课上课,老师的作业能混就混,后来随大流,迷迷糊糊去考研。

结果可想而知,考研结果比较差,大四春季跑了春招,被吊打的体无完肤。

还好后来,调剂去了一所比较差的一本学校,有点水往低处流了。

到了那里以后,才知道本科时候都在浪费时间,所以决心要好好找工作。

从研一开始就选择了C++,不为别的,就因为C++技术栈基本上只有大厂有,也就是想断掉自己去小厂的路,逼一逼自己。研一寒假开始刷题,我主要是刷力扣和剑指offer,其中力扣已经刷了440道了。

由于网课的存在,刷题的时间多了起来,并在那个时候看了 redis 的源码和游双老师的 Linux服务器开发,后面还看了 muduo (这个真没啥用,我看了还是不懂,哈哈)。

研二开始后,差不多十月份开始自己整理找工作相关的知识,就有点类似于阿秀前期发布的两期C++49问和59问一样,然后开始投实习,前段时间上岸百度实习岗,来分享一波,以下是面经。

阿秀的《逆袭进大厂》系列目前已经出了两期了,反响还不错,没看过的欢迎各位去移步。

# 一面

1、介绍项目

2、针对项目:这个日志如何实现

3、deque的实现原理

4、vector与deque的优劣

5、vector的扩容实现

6、讲讲C++内存分区

7、讲讲移动构造函数

8、讲讲指针和引用

9、讲讲顶层 const、底层 const,引用更接近哪个

10、说下虚函数机制

11、深浅拷贝,深拷贝除了改写拷贝构造函数以外还要做什么操作(不太会,他提示下赋值操作符呢,我就说是要重载一下赋值操作符么?)

12、什么情况会调用拷贝构造,什么时候会用赋值操作

13、析构函数设为虚函数可不可以?

14、public、protected、private继承分别可以访问什么(woc,这个东西没怎么用过,也没背到八股文,猜着说了一通)

15、简洁说说进程、线程,不要展开太多

16、进程 fork 的时候,虚拟地址空间的五大分区哪些不需要写时复制过去?(猜了下 data 段?他质疑了一下,我说 bss 也不会?因为 static 不能多次初始化,他说 static 可以多次赋值啊,然后跳过了....)

17、算法:链表相交(先装死说了个求全部长度的思路,然后断线了,他让我把代码发邮箱,我在写代码的时候再写了一个不用求长度的思路)

# 二面

1、问了一下你看过什么书

2、你看过 STL,讲讲内存配置器

3、讲讲迭代器(通过萃取迭代器的类型,面试官非要问具体怎么实现。我说我看的时候不太明白,他说没事,其实我第一次看也不太明白2333)

4、说说 vector,你自己想一个 vector 的设计方法

5、map 和 unordered_map 的区别

6、list 和vector 的区别

7、说一下 tcp 和 udp,tcp 如何保证有序,如何保证不丢失,如何保证不重复?

8、http 懂什么(说了一通,他说不用展开,我明白了)

9、说一下如何实现一个线程池

10、说一下如何实现一个线程安全的队列(我还想展开无锁队列,被叫停了)

11、malloc需要指定内存的大小,free为什么不需要?(我不会,他说你自己想一个实现方法,我说能不能在指针的上一个地址保存所要开辟的数组个数,然后free的时候先向上查找得到元素个数,然后再进行一个释放。他说行吧,这也是一种实现方法)

12、算法:LRU、旋转数组的查找