首页 > 字节跳动 腾讯 阿里巴巴 暑期实习 十七面经
头像
Muki.
编辑于 2021-03-21 06:23
+ 关注

字节跳动 腾讯 阿里巴巴 暑期实习 十七面经 内部员工回复


这是阿里巴巴面经补齐后的重发贴


公司 笔试 一面 二面 三面 四面 HR面 结果
腾讯微信游戏 2.25 3.01 3.04 3.09 3.11 已OC
字节跳动 基础架构 一 3.8 3.8 3.12(挂)
字节跳动 基础架构 二 3.17 3.17(挂)
阿里云 数据库 0分 2.25(挂)
阿里云 云原生 0分 3.04 3.09
阿里云 虚拟网络 0分 2.26 3.03 3.10 3.17 已OC

腾讯(后台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.独生子女吗,有家属在腾讯

3.12OC

字节跳动(后台c++)

一面 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适合视频的传输,你知道现在的抖音视频和今日头条的视频都是用TCP做得吗?我说这个不了解,然后他说,既然这个和你的理解相矛盾,你可以说出三个原因吗,既抖音采用TCP的三个原因?(盲猜 1.网络条件改善,2.硬件提升 3.建立连接耗时减小)

7.你知道STL的哪些容器,其中的queue有锁机制吗(就是读和写同时发生的时候会阻塞吗),你知道怎样实现一个读和写不需要加锁的缓冲区吗?

8.C++的智能指针你了解哪些?

.智能指针怎样实现的?

  1. 同一个进程连续调用互斥锁(未释放)两次会发生什么,怎么解决,你知道有一种锁可以调用两次吗,他说这个可以当做课后思考题a?

11.自己做这个项目有什么收获吗,遇到什么问题吗,怎么解决的,举个具体例子。

代码题:

给一个map<int,int>,将map里面value为单数的迭代器删除。

面试官说给到很简单的题,我就一个for循环遍历了一遍,不知道是不是坑。

思考题:

给定一块数据,大小为 n,现在网络传输的最大单元是1200B,现在需要对这个数据进行分块,要求:1.分的块数越少越好。2.块与块的大小越相近越好

然后问了一下我本科成绩,参加的数模比赛和ACM有什么区别,拿的奖是什么水平

又问我还有什么要展示的吗,有什么优点可以让他录用我吗。。

最后他问我,他还有什么知识没问到的吗,我说都差不多了吧,我可以反问你吗。

问了他两个问题后面试结束,饿死,心累。

3.18HR跟我说我被挂了,她让我再去面另一个部门的一面,我说我已经找到实习了,深感暂时无法达到字节跳动的招聘要求,希望秋招有机会在合作。

阿里巴巴

阿里云云原生

一面 2021.3.4 (一小时10分钟)

1.你在研究中的角色是什么,是自己做的吗,你负责哪一部分的工作

2.select和epoll,当时为什么选择select

3.epoll有哪两种触发模式,有什么区别,分别适用于什么场景

4.阻塞和非阻塞IO的区别

5.你的内存池是怎么设计的

6.多线程之间的同步机制你用了哪些

7.除了互斥锁外你还了解哪些同步机制

8.线程和进程有什么区别呢

9.同一个进程下的线程间什么资源公有什么资源私有

10.你有了解过携程吗(我不了解携程,我一般用去哪儿,狗头)

11.TCP和UDP

12.TCP通过哪些方式做到可靠

13.为什么要三次握手

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

15.你在编程主要有用到哪些算法和数据结构

16.vector的动态扩容机制

17.平时会用到hashmap吗,如果要你自己去实现hashmap,你有什么思路吗

18.说一下开放地址法

19.你了解的排序算法有哪些,堆排序,插入排序的时间复杂度是多少,哪些是稳定的,哪些是非稳定的。

20.c++ 中malloc和new的区别

21.c++中的构造函数有哪几种

22.拷贝构造函数什么时候会用到

23.c++怎么实现多态

24.为什么基类的虚构函数要声明为虚函数

25.B类继承A类,B类被销毁的时候B类和A类的析构函数的调用顺序,为什么?

26.有看过什么开源社区,对开源社区有什么了解吗

27.函数的普通局部变量和static 局部变量的区别

28.算法题:动态规划 剑指offer 最小路径和

二面 2021.3.9(40分钟)

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

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

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

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

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

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

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

然后用了15分钟写完。

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

我:照常回答

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

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

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

阿里云虚拟网络

一面 2021.2.26 (30分钟)

比较水的简历评估面

逐个项目聊了一下

1.c++ volatile关键字

2.c++相对于c的变化

3.c++面向对象的含义

4.c++多态的概念详细地解释一下

5.select,epoll,poll;select和epoll的区别和优缺点

6.你对linux系统有什么了解

7.内核态和用户态,linux的内核态是怎么实现的了解过吗

8.你的缓存被击穿的时候会发生什么

9.你的内存池怎么实现的

10.外部碎片和内部碎片的区别

11.你觉得matlab的优点是什么

12.美模的M奖是什么水平

二面 2021.3.3 (一小时15分钟)

算法题:

1.对字符串按指定字符进行分割,如输入"aabsdbn" 和'b'返回{"aa","sd","n"};

2.第二道算法题实在想不出来了。。。。

3.既然你经常使用python,那为什么不精学一下python

4.你是考研还是保研

5.为什么考本校不考虑其他学校

6.假设让你把你的项目的连接搞到100万,你有什么方法(又想考我epoll)

7.select和epoll的区别

8.你看过哪些网络编程方面的书

9.你系统看过的linux和编程的书有哪些,你从那本书上面有映像的点有哪些,你现在有映像的是哪些(那本书我就没看过。。。,我答TCP)

10,你可以说一下TCP的窗口机制吗

面试结束后面试官跟我聊了很多,关于业务,工作,他建议我离开广州去杭州看看。

三面 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面正常聊天就好,没啥好说的。

3.19收到OC邮件

阿里云数据库

一面 2021.2.25 (45分钟)

1.二叉树的遍历的各种算法

2.平衡二叉树的概念有哪些,你说一下

3.红黑树的查询和修改,删除的时间效率

4.哈希表的原理,地址冲突的解决方法

5.讲一下你知道的排序算法和他们的时间复杂度,哪个是稳定,哪些非稳定

6.c++ map 的底层原理

7.malloc 和 new 的区别

8.内存泄漏的概念,内存泄漏如何避免

9.智能指针的概念

10.线程和进程的区别

11.同步和互斥有哪些方法

12.有哪些锁机制, 什么时候需要用到锁

13.阻塞IO和非阻塞IO的区别

14.平时有学习到什么知识学到了项目中

15.工作中有遇到别人负面反馈的时候吗,你怎么应对

16.算法题:一.翻转链表 二.会议安排 https://blog.csdn.net/alxe_made/article/details/96481740

(面试结束后,面试官通过钉钉联系我说我的基础还行,但是算法还需要加强(第二道题写了20分钟),所以把我挂了。)

三家公司面试心得

总了来说三家公司的面试体验都很好,可以学到很多东西,就我个人的经历感觉,腾讯和阿里比较看重基础知识,字节对暑期实习生的要求除了基础外,还比较看重一些较为深入的业务逻辑,一些在阿里和腾讯面试中的加分题却是字节的必答题,腾讯和阿里愿意把你当做学生,招进去培养,字节希望你能尽快上手工作。三家都很重视算法,一些中下难度的算法题如果做不出来,或者做的慢的话,大概率会挂。



更多模拟面试

全部评论

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

推荐话题

相关热帖

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

近期精华帖

热门推荐