首页 > 字节跳动 微信 阿里巴巴 暑期实习 后台开发C++ 十五面
头像
Muki.
编辑于 2021-03-20 21:09
+ 关注

字节跳动 微信 阿里巴巴 暑期实习 后台开发C++ 十五面

阿里巴巴面经已经补齐:https://www.nowcoder.com/discuss/619406

投递简历:
腾讯:2021.2.22(官网投递)
字节:2021.2.25(闪电内推)
阿里:2021.2.22(提前批邮箱)阿里面经之后有时间再整理
基本情况:无ACM经验,无公司实习经验,有公司面试经验,研一的时候上课无聊就跟着b站的一个c++项目视频打了几百行代码,剑指offer刷了36道题,leetcode快速浏览了20道常考题。

腾讯(后台c++)

微信一面 2021.2.25 (一小时20分钟)

自我介绍

1.你的发送方的write采用的是阻塞还是非阻塞。

2.如果发送方没write,接收方read会发生什么

3.你的select是阻塞还是非阻塞

4.算法题:用递归和非递归方法反转链表;n的阶乘后面有多少个0

5.c++中类如果没有自定义构造函数,系统会默认为类提供什么构造函数(共两个:默认构造函数和默认拷贝构造函数)

6.多态是什么以及多态是怎么实现的

7.malloc和new的区别, new失败会返回什么。

8.计算机网路五层结构

9.交换机在哪一层

10.子网内计算机通信需要用到路由器吗,什么时候需要用到路由器。

11.TCP三次握手,和四次挥手,如果第二层握手服务端返回的ACK丢失会怎样,为什么要四次挥手。

12.TCP传输过程中ACK丢失会怎样。

13.进程和线程的区别。

14.不同的线程的什么内存空间共享,什么内存空间不共享(代码段,栈区,堆区,静态区,全局变量分别说明)。

15.一个小数:0.a0a1a2a3....an 其中an+2=(an+an+1)%10,n无限大,问这个小数是循环小数还是非循环小数

16.现在有一个random函数,可以均等概率产生整数0和1,怎样利用这个函数写成一个新的函数,使得该函数可以均等概率产生0-n中的任意一个整数。

17.你有学过数据库方面的课程吗,你是一点都不会mySQL吗。

18.你有了解过epoll吗,select模型和epoll模型,poll模型的区别是什么。

19.select模型有什么不足吗。

20.你可以说一下什么是中断吗。

微信二面 2021.3.1 (一个小时)

1.自我介绍

2.聊项目

3.服务端正在处理大量的数据包请求,怎样做到有新的客户端加入的时候立即返回服务器正忙的信息。例如双十一在淘宝点击购买时,虽然服务器已经满载,但是客户端仍然能够收到服务器正忙这个消息。

4.怎样实现网络数据包的限流

5.浏览器输入网址到显示页面的过程

6.算法题:实现LFU

微信三面 2021.3.4 (40分钟)

1.自我介绍

2.聊项目(30分钟)

3.对象的什么函数不能被声明为虚函数(构造函数,内联函数inline,静态函数)

4.说一下c++的编译过程

5.为什么说共享内存是进程高级通信方式最快的。

6.平时有看开源社区的习惯吗,有了解过什么开源架构吗

7.怎么样实现一个高并发的 整形 递增 数字分发器(说了多线程,时间戳,都不正确,面试官也没有提示,气氛很尴尬,8分钟)

8.算法:递增数组去除重复数字(弱智题)

微信四面 2021.3.9 (40分钟)

1.自我介绍。

2.聊项目。

3.进程线程协程的区别

4.有看过开源库的源码吗,像STL等的(我说我看过select的源码)

5.有用epoll来写过什么代码吗(我说我用select写过)

6.有参加过ACM吗

7.微信用户这么多,怎么找到附近的人(不太会,但还能水)。

8.怎么找到微信收红包最多的top10000个人。

9.你觉得你最厉害的方面是什么,举个例子(下面开启我最擅长的吹牛逼模式)。

10.你觉得你在你们班什么方面做得最好,为什么可以做的比别人好。

11.你觉得你有什么不足。

12.你是哪里人。

13.什么时候可以来实习,实习多长时间。

后来想起:
14.用TCP和UDP分别发送1000个包,接收方分别会收到多少个包?

没有反问环节

Tips:听声音面试官是一个四五十岁的中年男子。

HR面 2021.3.11 (25分钟)

1.自我介绍
2.对于微信的了解
3.平时有玩什么游戏吗
4.觉得腾讯游戏怎么样
5.将来的规划
6.身体健康吗
7.有遇到过压力很大的时候吗
8.家在哪里
9.同时有拿到其他offer吗,分别是什么,base在哪里,你怎么选
10.独生子女吗,有家属在腾讯吗

HR面完一小时后,邮箱收到腾讯云证邮件。至此春招第一个offer流程便已经结束(不得不说腾讯效率真的很高)。

字节跳动(后台c++)

字节HR声音超级甜,等我到了HR面我要问她微信号!

一面 2021.3.8 (一小时)

1.自我介绍

2.聊项目(28分钟)

3.算法题:用两个栈实现队列 (10分钟)

4.在3的基础上实现一个入列和出列复杂度为O(1)的队列 (要求:出入列复杂度O(1),多线程读写)(提示:用4个栈,用一个线程来复制栈间数据移动,但是移动的时候又要避免阻塞读写进程)

tips:一面面试官人很好,全程聊天,不会的地方会给提示,题4本来是要求手写多线程编程和互斥机制的,后来就简单的说出思路就好,此外一面没考基础(很意外)。

二面 2021.3.8 (45分钟)

一面结束2分钟就开始2面

1.基本情况闲聊(什么时候实习,什么时候毕业,一面感觉怎么样 5分钟)

2.算法题/智力题/数学题/概率论:有n个人参与公司抽奖,规则如下:n个人用一张纸条写上自己的名字放进抽屉里,然后n个人再分别地从抽屉里不放回地取出一个纸条,若拿到自己名字的纸条则中奖,问无人中奖的概率。(想了20分钟没有思路,直接下一题)

3.算法题:找出两个链表的公共节点(10分钟)

4.你了解c++的动态绑定吗

5.accept是在三次握手的哪一步,为什么

6.为什么要四次挥手

反问环节:等下会有三面吗,没有,今天的面试到这,之后会有通知。

三面 2021.3.12(一个小时)

这一面的时间我记错了,本来是下午2.00开始的面试我记成了下午3.00,2.10分的时候接到了面试官的电话叫我面试。顿时觉得很慌了。
然鹅意外的是面试官也很和蔼,全程微笑聊天,面试开始他说他看过我在github的代码了。
这一面我也发现了一个规律,就是你的简历的项目如果写的好的话,面试官基本就不会问太多很细的基础问题了,如果你没什么项目经验,他就会考察那你的基础和算法能力。
聊天内容基本就是那种开放性讨论的问题,例如
1.你说如果很多客户端跟服务端建立成功了连接,但是服务端没有accept的话会发生什么, 关系到listen函数的一个参数,可是我不太了解?
2.服务端没有listen,客户端建立连接会怎样?
3.bind的参数要传送IP地址吗?
4.客户端成功建立连接,但是服务端没有accept,会发生什么?(这个问题当时答的不好,面试官想考察的是listen函数中的backlog参数,即内核监听队列的最大长度)
虽然我上面的几个问题都不是太了解,只能按照自己对网路的理解进行回答,面试官全称笑嘻嘻的。
面试半个钟后问我:你有刷过leetcode吗
我答:我大概知道你们面试的时候想考什么类型的题目,就是那种可以快速读懂题意,只需要一个小技巧就可以做出来的题。
面试官:“举几个例子”
我答:“像链表翻转,链表公共节点,链表倒数节点,链表环,最大自序和,LRU,LFU这些”。
面试官:“那来做道我自己的提吧”
算法:4x4密码锁
有个4x4的密码锁:
---------------------
a b c d
e f g h
i j k l
m n o p
----------------------
如果以a为起点,那么a可以以日字型到达g和j,g又可以日字型到达其他字母。
完成一个函数 int CountNum (int i, int j, int k)
i和j为字符起始点的坐标,例如a的坐标为(0,0),k为所求密码的长度,计算密码x1x2x3....xk的个数,
其中x1的起始位置为(i,j),x2必须是x1走日字型可到达的点,x3必须是x2走日字型可到达的点。
例如 :CountNum(0,0,1)=1;
CountNum(0,0,2)=2;

这个题目很简单,但是我想到了一个很麻烦的做法,后来面试官给出提示:
int psCount(int i, int j, int L)
{
if (! In44(i, j))
return 0;
if (L == 1)
return 1;
.....
}
我:“好吧,我是sb!”

写完后又跟他聊了一会,面试结束,希望不要挂我。

3月14号接到字节Hr的电话跟我约一面,说是之前的那个部门把我挂了,说什么业务不匹配。。。我一开始是拒绝的,我是我已经拿到offer,但hr说让我再去面一面,说到时候可以比较,她说我可以加她微信(还是之前的那个hr),她帮我加快流程,好吧,那我就再去面一次吧。

挂后一面 2021.3.17 (一小时)

这一次面试总的来说还是很少问基础,主要还是扣项目。
1.c++的自解锁std::lock_guard的底层原理
2.c++为多线程提供了哪些工具,除了thread ,mutex外
3.分布式服务器(不了解)
4.有看过什么开源库吗
5.c++的智能指针有哪些,我答了share_ptr和unique_ptr,他说你知道循环应用的事情吗,怎么解决(想问weak_ptr,可是我忘记了)
6.TCP怎样实现可靠传输, TCP的流量控制和拥塞控制
7.为什么要有IO多路复用
8.c++ thread的 joid 和 detach
9.TCP客户端与服务端建立了连接,两种情况分别会怎样:1.服务端进程突然崩溃 2 .服务器突然断电 (1.我知道会发送RST包,但2不太了解)
10.动态库和静态库,你有了解有哪些动态库吗
代码题:
实现一个线程池

你的线程一直在while循环,有什么更好的改进吗,答加入PV机制

一面结束已经是下午6.00, 我好饿了,可是也是接着二面

挂后二面 2021.3.17 (一小时20分钟)

二面面试官是中年男人,好像他很忙的样子,面试过程经常要打断回复信息。
没有自我介绍,一上来就说让我简短说出自己有什么优势,语速很快,好像很急的样子
扣项目,非常细节,你谈话说到什么,就专扣什么,记得的问题如下:
1.你的项目用select的原因是什么,select和epoll的区别,你可以具体说说select读取文件的时候,操作新系统底层做了什么工作吗(不会)。
2.你的项目如果用epoll来设计的话你打算怎么设计,效率会降低吗,怎么解决。
3.select的文件描述符集合大小有限制吗,可以更改这个限制吗
4.TCP和UDP的区别,有什么特性?(其中我说到了UDP比较适合流媒体如视频的传输)
5.你说UDP的效率比较高,这个高表现在哪里?你说TCP需要建立连接,那TCP建立连接之后效率还会比UDP低吗,如果不考虑ACK和流量控制,TCP可以一直发一直正确接收,效率还会比UDP低吗?
6.你刚刚说到UDP适合视频的传输,你知道现在的抖音视频和今日头条的视频都是用UDP做得吗?我说这个不了解,然后他说,既然这个和你的理解相矛盾,你可以说出三个原因吗,既抖音采用TCP的三个原因?(盲猜 1.网络条件改善,2.硬件提升 3.建立连接耗时减小)
7.你知道STL的哪些容器,其中的queue有锁机制吗(就是读和写同时发生的时候会阻塞吗),你知道怎样实现一个读和写不需要加锁的缓冲区吗?
8.C++的智能指针你了解哪些?
9.智能指针怎样实现的?
10. 同一个进程连续调用互斥锁(未释放)两次会发生什么,怎么解决,你知道有一种锁可以调用两次吗,他说这个可以当做课后思考题a?
11.自己做这个项目有什么收获吗,遇到什么问题吗,怎么解决的,举个具体例子。

代码题:
给一个map<int,int>,将map里面value为单数的迭代器删除。
面试官说给到很简单的题,我就一个for循环遍历了一遍,不知道是不是坑。
思考题:
给定一块数据,大小为 n,现在网络传输的最大单元是1200B,现在需要对这个数据进行分块,要求:1.分的块数越少越好。2.块与块的大小越相近越好

然后问了一下我本科成绩,参加的数模比赛和ACM有什么区别,拿的奖是什么水平
又问我还有什么要展示的吗,有什么优点可以让他录用我吗。。
最后他问我,他还有什么知识没问到的吗,我说都差不多了吧,我可以反问你吗。
问了他两个问题后面试结束,饿死,心累。

阿里巴巴

阿里巴巴面试之后会详细整理

阿里云云原生

一面 2021.3.4 (一小时10分钟)

二面 2021.3.9(40分钟)

(这个面试是我遇到的最有趣的一次面试,所以先写下来)

1.做一道题:翻转链表的每2个元素:例如 1,2,3,4,5 变成2,1,4,3,5

我看到这道题以为是翻转链表,三分钟就写完了。

面试官说:“卧槽,这么快!”

我:“我之前被考过三次这道题了”

面试官:“那看来要换一道题了,我先看看,诶,不对啊,你这个是翻转链表啊”

我:“哦,不好意思,看错了”

然后用了15分钟写完。

面试官:“行,这道题还行,那我们开始问一些基础问题吧,同一个进程下的不同线程什么内存共享什么内存不共享呢?”

我:照常回答

面试官:“行,哎呀,好像也没啥可面的了,一面都问的差不多了,要不你看看有啥问题可以问我的吧”

然后就开启了闲聊模式。。。。。

聊了40分钟后,面试官加了我微信,面试结束。

3月10号接到三面通知,但由于已经接受了虚拟网络部门的内推邀请便拒绝了这一次面试。(之前的面试都是不计入系统的提前批)

阿里云虚拟网络

一面 2021.2.26 (30分钟)

二面 2021.3.3 (一小时15分钟)

三面 2021.3.10(25分钟)

1.自我介绍
2.逐个介绍了一下自己的项目,就是那种闲聊模式(15分钟)
3.你有看过select底层的源码吗,然后我就说了一下c++中select的源码和底层的一些原理,他又问有没有了解更深层的操作系统层面的一些调用(不了解)
4.你的第三个项目(室内可见光定位)用的是ARM还是MIPS?有了解过交叉编译吗?(这是啥啊,不是写个c代码直接keli烧进去就得了,不了解)
5.你分别用过c,python,c++,你能说一下这些相对来说高级的语言和低级的语言有什么区别吗?
6.你在学习过程中有没有遇到压力很大的情况,怎么解解决的。
7.面试结束,我说我可以问你几个问题吗,面试官说可以,然后我就问了他实习生进去主要是干啥的,有没有人带啥的,又聊了一会儿。
面试结束一个小时后,HR微信说面试已经通过,需要接受内推邀请,走完接下来的流程。

HR面 2021.3.17(20分钟)

3.12参加了阿里的笔试,第一道题需要手写迪杰斯特拉最短路径算法,由于太久没写,考试结束也写不完,结果笔试0分(第二道题没看),我以为要凉了,结果还是收到了hr面的通知。
hr面正常聊天就好,没啥好说的。


阿里云数据库

一面 2021.2.25 (45分钟)



多次面试心得

1.早点投递确实会有优势,企业HC多,面试的难度相对会较低,比我晚一周投递的同学的面试感觉上比我的难,面试考的算法题也比较难,所以早点准备早点投总是好的
2.面试不会的千万别瞎猜,不熟悉的名词提都不要提,例如不会linux千万别在面试中提到linux,否则等待你的下一个问题将会是:“那好我们来问一下linux相关的内容吧”
3.不会的问题千万不要立刻说不会,可以假装思考一下,把你能想到的与此相关的说出来,尝试把问题往你熟悉的地方引。
4.可以尝试在面试过程中保持一定的幽默感
5.不会的问题可以通过轻微反问的语气让面试官给出提示。
6.可以尝试把面试往聊天这个方向带(要看面试官)
7.其实面试也很看运气的,幸好我遇到的面试官人都超级好。

更多模拟面试

全部评论

(12) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐