这是阿里巴巴面经补齐后的重发贴
公司 | 笔试 | 一面 | 二面 | 三面 | 四面 | 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.平时有玩什么游戏吗
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++的智能指针你了解哪些?
.智能指针怎样实现的?
-
同一个进程连续调用互斥锁(未释放)两次会发生什么,怎么解决,你知道有一种锁可以调用两次吗,他说这个可以当做课后思考题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) 回帖