阿里 | 智能引擎开发 | 技术面 2 面 + HR 面经 已拿下 | 2021.5 | 结尾比较一下阿里,腾讯,华...
12302
发布于 未知归属地

前言

个人背景

学历:本科陕西某211,非科班;研究生跨考武汉某985,科班。
投递方向:暑期实习,C++/C开发
投递企业: 华为, 阿里, 网易, 腾讯, 字节, 美团。
项目经历和比赛情况: 某国家网络相关比赛 top3,python爬虫项目*2,收尾项目测试工作。

总体情况

经过一个月的笔试面试,终于收获了2个实习去向。怎么说呢,投递的比较晚,4月10号左右才开始实习的投递,大佬们估计2月份就发车了,3月份就拿下了,4月份就做办公室里愉快加班了。感觉投递的晚也是失去了一些机会和可能性吧,但是结果还是不错的。建议大家(来年实习)如果有把握的话就尽早去投,以战养战比较好。我个人全面开始准备差不多是在年后了,所以错过了第一波(2月),让过了第二波(3月),在最后阶段才上车。

无论是实习还是秋招,大家还是要早准备,早投递。不要想着自己万事具备了,再去冲。很多岗位不等你的,你准备好了再去,别人面你就当刷kpi了。早投递的好处就是可以尽早把握当期的面试官想问的问题,因为自己投递的岗位都是相似的,所以遇到的问题会有一定的重叠,或者说至少方向上可以把握,这样再去抓紧时间补足短板,这就是以战养战。

目前我经历过面试的企业有华为,阿里,腾讯,美团。腾讯和美团可能还有后续面试,华为和阿里流程走完拿下

经历过笔试的企业有华为、网易、阿里、字节、美团

下面就从刚刚结束的阿里面试讲起,说一说实习面试的感受和不同大厂的侧重点

介绍不同的流程

阿里技术2面+HR面

笔试基础: 阿里是2道题 1小时, 当时是一道都没AC,一道95%, 一道 < 40%。

阿里技术1面 (时间约80分钟)

  1. 自我介绍

  2. 爬虫项目介绍一下,怎么做的,用到什么开源模块,功能是什么。

  3. 比赛的作品是什么,怎么做的,负责哪一部分,实现什么功能,遇到什么问题,未来可以往哪些方面进行改进。

  4. 查找一些数据的方法有哪些。
    我说了二分,大顶堆小顶堆,哈希,根据应用场景来说还有位图, 粗糙一些布隆过滤器。||面试官问聊不了解前缀查找,我说我知道有Trie树这样的方法,但是具体不了解。感觉面试官这里是希望深入讨论一下,然后我拉了。

  5. 转换到语言的问题上,说一说你知道的C++有啥新特性嘛?
    auto,decltype, 智能指针,override,final。这种开放性问题尽量多说,说的时候要尽量全面的讲。

  6. 如果要向一个 socket write一下, 然后对端recv一下收到,这之间经历了什么过程。
    我从tcp连接建立开始说,说了系统调用,上下文切换,封装包,网络路由传输大概这些。

  7. 做题,N叉树遍历,奇数层从右👉左,偶数层从左👈右。不写输入输出,只写函数和数据结构。大概20分钟吧
    leetcode差不多原题,之前有做过,队列+栈。

  8. 反问环节,介绍部门,面试官人很好,给我介绍了10+分钟的部门情况。

阿里技术2面(时间约80分钟)

-1. 聊天,面试官(巨佬)人很好,开场先聊了一小会

  1. 自我介绍

  2. 比赛作品情况介绍,是什么,为什么,怎么做,为什么获奖。根据我们的作品内容,面试官提出了一个实际场景下应用的可行性问题,对问题展开了讨论。2面主要的问题都集中在这里,对项目深入的剖析,各个模块实现细节,讲了讲其中用到的架构含义。

  3. 做题(40~4?分钟)

多个有序32位整数集合求交集:

eg: A = {0,1,3,4}, B = {1,4,5}, C = {1,4} 交集 {1,4}

做题的时候拿到题目,我简单想了一下直接说可以用hash表来做,简单介绍了一下思路,面试官认可,然后提示想想怎么用有序

再想了一小会,说用二分法可以,简单介绍思路,面试官认可,表示可以写代码了。代码写完,面试官认可,说还可以改进一下。

思考改进的做法,和面试官交流,最后说可以利用有序,从缩短二分的区间,然后改代码。脑子瓢了有点小插曲,不过也有惊无险面试官认可。

最后面试官说还可以在改进,问我知不知道间隔着查找(就是先查位置1 然后 2 4 8 16 ...)可以更加简化提高效率。面试官给我简单的讲解了下思路,没让写代码了。

  1. 反问聊天,到这部分时已经约70分钟了,面试官又简介了一下部门,人员,实习生培养的一些机制。

  2. 个人发展和职业规划。后来从HR姐姐那里才知道面试我的是大boss,所以这个地方也问了写职业规划。

阿里HR面

流程很快,上午面完,当天中午HR姐姐就约当天晚上面试,结果我有事情就到了第二天。

HR面试还是比较轻松愉快的,下面是一些问题,但是整个流程并不是一问一答这样进行的,而是在聊天(你和朋友怎么聊就怎么聊)中推进的

  1. 问了个人的情况,学校情况,(另一半情况),以后(两人)的发展打算。

  2. 自我介绍。
    面对HR的自我介绍,建议和技术面有不同的版本,技术面可以多说一些技术相关的内容。HR面要覆盖广一些,成绩、比赛/项目、日常生活、社交都展现一些比较好。

  3. 说一些个人对部门的认识。 HR姐姐也补充了一些部门的介绍。

  4. 投了哪些公司,进展怎么样。

  5. 为什么现在才投阿里,为什么先投了腾讯和华为,这是投的第几个阿里的部门。

  6. 周围人学长学姐来阿里的多不多?

  7. 聊一聊你对你投的这些公司的印象和认识。

  8. 反问环节。

阿里总结

整体上面试过程都是很充实的,时刻都有问题和思考。在流程上,流程没走的时候很慢,比如我就在笔试和第一个电话邀约之间卡了10天多吧。但是面试流程走起来了,就很快,三次面试5天内搞完。而且offer出结果的速度也可以(可能是实习面试快结束了,所以存量少比较快)。具体的对比后边再写。大家接着看啊!

腾讯两次面试

这一个月中,我还参加了腾讯的两次面试,为什么是两次呢?因为人生中的第一个工作面试给了腾讯,因为临场状态不适应拉了,被放回去了,所以有了第二次面试。下面聊一聊腾讯这两次面试中问到的一些问题吧。

腾讯面试很扎实,太扎实了。

腾讯一面 腾讯QQ后台开发

  1. 自我介绍

  2. TCP 和 UDP区别

  3. TCP怎么实现可靠传输

  4. 为什么3次握手,4次挥手

  5. C++ Map底层怎么实现的

  6. C++ vector底层怎么实现,增删内存怎么变化

  7. 数据库服务器宕机怎么办,分布式怎么解决

  8. 从上一问转到这里,redis了解吗

  9. 消息队列 kafka了解吗,说一说

  10. 每秒20000个QQ号登录,怎么找出5分钟内的重复qq号
    我说的Hash,他说也是一种实现方法,有没有别的更好的。

  11. 2个脑筋急转弯。

  12. 反问

第一次面试我发挥的极其拉垮,嘴瓢了很多,好几个题会但是也慌了说不明白, 所以最后都给我整上脑筋急转弯了。但是我心态爆炸了,也没有转明白 T T。然后结束的时候,反问完,面试官直接说把我放回去了,之后可能会有别的部门捞我。。。。然后我就极其意外的等到了他说的其他部门。

腾讯第二次面试 IEG 的一个新部门,负责游戏直播电竞赛事。 部门主要Golang Lua。 面试官说语言不是问题。

  1. 自我介绍

  2. 比赛相关同之前,是什么,为什么,怎么做的,blabla

  3. 爬虫项目,是什么,为什么,怎么做的。URL去重怎么做,你提到了布隆过滤器,可以说一下布隆过滤器原理嘛?

  4. python线程用过吗,知道GIL是什么嘛。

  5. C++虚函数调用过程是怎么样的。

  6. C++新特性说几个呗

  7. 你知道右值/右值引用这个东西吗,说一说(新特性我漏了,所以面试官提出这个问题)

  8. 指向结构体的指针+1会怎么样(结构体类型的指针加1)。

  9. 如果我要构建一个hash数据结构,我应该怎么构建,考虑什么因素。如果满了,除了用STL那种处理方法(我在说构建时采用这种方法),还有什么别的方式吗。

  10. map是怎么实现的,底层怎么实现。

  11. Mysql调优的话怎么看语句执行过程(调优的依据)-> explain

  12. Mysql索引怎么实现的

  13. 最左匹配了解吗
    这个我在 《MySQL技术内幕innodb》中看到过,当时印象有点不深刻,想的是对的,但是怂了没说这个投降了。现在想起了之所以会有这个问题,大概是我上边没说联合索引,然后面试官就引申了这个问题出来。

  14. 如果Mysql对设置了索引的列进行查询,但是explain出来发现并没有使用这个索引,可能的原因是什么?
    我说的可能where a = 1这样的查询方式,在内部就直接通过自适应hash走了。面试官肯定了一下,也没有说别的。 现在想想,这个问题可能也和联合索引有关系,联合索引也可能由于查询的顺序或者条件判定不同,mysql就没有用建立的索引。

  15. DDos的原理及防御手段

  16. 输入url到浏览器中,从输入到显示经过了什么过程。
    我说的缓存->DNS缓存->DNS->IP->GET发送出去->服务器响应->浏览器渲染。但是面试官表示少点什么,于是就有了下边问题

  17. 上面过程中,IP层的流程呢
    路由表 ARP 之类的

  18. 协程是啥,有用过嘛。
    python yield相关

这次面试个人觉得也就是在数据库索引的地方忽视了联合索引,然后最左匹配不太扎实,别的回答的还好。不过腾讯面试这太扎实了,其他公司都没有这么扎实的提问。而且。。腾讯我还没有笔试。。电话面也没有笔试,这也很神奇。。。

目前还有下一面,流程还没结束,之后会有更新。

美团面试

美团同样投的C++后台开发的岗位。美团的两次面试和腾讯的第二次面试挤到了一天,给我人整麻了从早上面到晚上。

美团第一次面试 ***配送(好高端)

-1. 先上来面试官介绍了部门的情况,在做的工作,未来的方向。

  1. 自我介绍

下面的内容是对着我的简历从上问到下。

  1. 比赛的情况,是什么,为什么,怎么做。引申出下面这些问题:

    1.1 用udp编程和TCP编程有什么区别

    1.2 DDos攻击怎么回事

    1.3 UDP是怎么从传输层封装到链路层的,写一下常用的头部

    1.4 比赛作品的细节问题

    1.5 用TCP原语,实现一个C/S架构的生产者消费者模型。
    我有问是用互斥信号量这样的东西吗,他说都可以,然后我就是用epoll复用这样去写的一个简单的收发,没往传统OS关于生产者消费者的实现上引,面试官也认可我的写法。

    1.5 一些关于项目的其他问题(忘记了)

    1.6 在Linux中有用过一些http的服务器嘛

    1.7 如果我有一个IP协议,然后我没有定义链路层协议,那么计算机之间怎么进行交互。

  2. 我简历中有涉及5G的部分,然后面试官又问对5G安全的了解

  3. 现在5G与4G的区别,为什么没有大规模应用。

  4. 简历中有用到爬虫的项目,说一下实现,是什么,为什么,怎么做。

    4.1 有没有实现步进

    4.2 出现循环连接怎么办 hash 布隆过滤器

    4.3 由上边的爬虫引出问题,网页看成链表,如何确定一个链表有环
    我回答,双指针可以,简述了一下做法,也没让写。然后我又多嘴问了一句,要找到这个成环节点吗,然后面试官说找到最好。。。。然后我就开始推公式了。这个题之前leetcode上做过,hash表可以,推公式更简单,但是想到面试官说链表可能有无穷多个,然后觉得hash表有点拉垮,就推公式,然后推拉垮了(太奇怪了,第一遍leetcode做推出来了)。面试官也没说啥(毕竟后面这个找节点是我提的。。。),说判断有环这个问题最初就是爬虫引申出来的。

  5. Mysql简历上说了解,在Linux中用C++操作过嘛?

  6. 反问。

    面试官人蛮好,会引导,有互动。。。不过提的问题都很硬核和开放。算是面过的几家公司里最不好把握的了。

美团二面面了一半,面试官有事溜了

华为面试

华为的话我之前有写过,就不赘述了,偷偷放个链接,感兴趣的同学可以去看一看。

https://leetcode.cn/circle/discuss/zjzf3k/

最后总结与比较

比较

对于面过的这4家企业中,不同企业的侧重点是完全不一样的。

阿里

对于阿里来说,据我个人的感受以及实验室小伙伴们的感受,可以下结论为阿里十分极其重视个人简历中出彩的项目和比赛,并会根据其中的内容进行深挖。具体来说,他考察的不仅是技术层面的东西,更有一些设计的思想,调优的思想在里面。也就是说阿里很重视你的实践能力,对于基础知识考察并不是最重点的地方。

所以准备的时候一定要仔细想一想,自己为什么要做这个东西,自己做这个东西经历的过程是怎样的,遇到了什么问题,怎么解决的,有哪些技术难点,怎么进行团队合作的,为什么能拿奖,潜在的优化方向,和现实中结合一下可以吗,有什么场景限制? 上面每个问题都是我所经历的,所以大家去投也要提前有过思考。有的问题我没有答得很好,因为过分重视基础知识了。

腾讯

腾讯目前还没有走完,但是就经历过的情况,腾讯面试是最扎实的面试了。你所学的,背的面经可以充分展示用武之地。像腾讯和字节都是很重视这种基础知识的考察,所以在准备的时候,要充分收集信息,去学习重点基础知识。尽量做到思维敏捷,对答入流,自信一些。具体来说,OS、计算机网络、常用的大数据查找、去重算法、语言的特性要特别熟悉、掌握一个数据库的内容、掌握缓存中间件redis内容。其他的像消息队列分布式系统都是有可能(低概率)考到的东西,有更好,没有的话最好了解了解。

通过上面放出的面试收到的提问,可以发现一般来说一个岗位,重点问题就那么多,所以集中力量先搞定常见的问题。比如说我搞服务端,我就要对TCP/UDP弄得门清, 我会C++,我就要对面向对象,指针引用这些东西很熟悉。所以大家在准备和复习的时候,先重点击破,再进行慢慢的补充。不要广撒网,广撒网会分散注意力,会影响对重点知识的记忆。

华为

最开始先走完了华为的流程,觉得华为真棒。结果养鱼了,之前还是年轻。不过华为的话整体面试难度倒是不高,有一种很轻松的感觉,问项目也不深入,问基础知识也比较简单。但是华为和字节都很重视算法题目的解答,字节一般是错了就拉了,华为也差不多。但是华为比较轻松,考察的广度和深度低于腾讯。 就是华为的最后流程很慢很慢很慢,心急的小伙伴可以斟酌一下。

美团

美团是这4个公司里,面试最最最硬核的了,他除了要求像阿里一样对项目的掌握,他还会针对你项目中涉及的技术进行很开放很开放的外延,会提出一些实际工作中的问题问你是否可以进行一个结合。比如说虚拟一个场景,将你的项目中一些技术带入,进行思考。或者说对于一些基础知识,他会进行虚拟场景的模拟让你进行思考,提出解答。所以再日常学习,背面经的过程中,不要只背,还要理解,然后适度的进行延申与思考。对于技术的背景也要有一定的了解。这样在应对开放性问题的时候,可以有思考的方向。

个人感想

刚经历过一天三面,面均80分钟,我已经麻了。上面写的可能很多废话,如果有一两点能帮到大家,给大家一些感悟,那么我还是很欣喜的。

最后做个个人吐槽总结吧

作为一个人生头一次找工作、找实习的跨考小菜鸡,这段时间的准备感觉强度其实蛮高的,仅次于考研那年了。从3月份回学校,就开始了看书,刷题,背面经,针对面经中的问题找博客和书籍补足短板的循环往复,每天过的还是非常充实。中间也经历过了一些难受痛苦的时刻,比如人生第一回面试结果是腾讯打的电话,全程紧张懵逼,最后拉了,面试官问无可问都开始问脑筋急转弯了,我觉得很难过;还有字节2次笔试都拉了,连面试机会都没有,当时挺自我怀疑的,觉得200多道题刷给西北风了;还有一些玄幻时刻,网易笔试2/4? 2.5/5?,结果没人通知面试,网易要求这么高吗?面试刷我也行啊,机会都不给也是耐人寻味。

对于学习,这段时间有的技术博客可能看了有7-8遍,现在时常还看一看;自己收集的好几百页面经有的都看了3遍了,每到没把握的时候也会抽出一点时间刷一刷。 我以为考研那年是我努力的巅峰,现在觉得也是有些天真了,卷是无处不在的,总会有无形的手推着你不断的前进,卷都成了内在推动力了,化身成对技术和知识的渴望了。回头看一看过去两个多月,人麻了,但是也变强了,综合起来就是强麻了。hhh

最后的最后,来电鸡汤

秋招对大家的要求更高,考察的问题更深,面试时间更长,可能连面试流程都从实习的2+1,3+1。变成了秋招的3+1,4+1,5+1。但是还有时间可以准备,还有时间可以丰富自己,希望大家一起进步。没有什么卷不卷的,既然选择了计算机这个行业,不断地学习就是必不可少的,心态要放轻松。当每拿到一个题目都可以AC,当每次面试官的问题都可以被你轻而易举解答,当你学技术的脚步越来越快,你就会觉得之前的卷和累都有成果,都很欣慰。希望大家可以坚持下去,不管起点怎么样(我都是考研跨考),不管时间有多少,合理规划自己的复习,遇到挫折不气馁,取得阶段性成果小骄傲,在接下来的秋招或者来年的春招中拿到自己想要的offer,迈出职业规划的第一步。~~

评论 (12)
暂无评论