2022届暑期实习小结(腾讯&字节&美团offer)
从2021.3.7第一场面试开始,到2021.4.29收到美团的offer,我的春招历经两个月算是正式结束了,趁着五一有空(不是写不下去论文)整理一下。
个人情况
本科在美团·云计算部实习过10个月左右;目前研二(22届),暂无论文,有项目和比赛。
投递岗位主要是「运筹优化」和「后台开发」。挂掉的有「阿里」、「便利蜂」、「百度」、「网易严选」(笔试挂。。。)、「南方基金」,收到offer的有「腾讯」、「字节跳动」、「美团」,其他在流程中的应该也不会继续面试了。
笔试
简单整理了一下各厂笔试题目,不全(有些公司不允许用本地IDE,或者一些题目很简单就没在本地写),而且答案也不一定对。
感觉我这个笔试情况还是比较惨烈的,平均每场只能A一题。其实大部分公司笔试成绩只是做个参考,甚至没做笔试都能发起面试(已知阿里、腾讯);但有些公司(美团、网易严选)笔试是会刷人的,所以还是要做好准备再投递简历。
关于「笔试」还有几点感受:
- 最最重要:不要搞歪门邪道!首先「毁一生」的后果很严重;其次,不必要的外界因素肯定会影响答题状态,因为你对自己要求其实无形中提高了,借助外力题还做不出来会更不甘心;最后,这种「坏事」只有零次和无数次,因为外力会让你始终认不清自己的水平,下一场笔试还是会心虚,还是会去寻去外力。
- 最重要:放松心态,不必过度紧张,找到正常敲代码的感觉即可,可以提前上「牛客」做一些模拟。
- 算法岗可能会比开发岗难一点,点名网易严选,算法和后台简直是两套题,吐了。。。
- 尽量错开投递,以免笔试撞车;如果撞了要量力而行,有的公司(点赞字节)可以调时间。
- 我对自己要求不高,有些题太难过后也就算了;但有些自己应该会的题没写出来要及时上牛客观摩一下大佬的答案。比如京东有道题就出错了,上牛客一讨论果然发现不少人都在吐槽,而且有行动力强的同学直接给校招组发邮件反馈了,所以我只A了「18%+9%」也收到了面试邀请,要感谢发邮件反馈的同学(点赞)。
面试
(所有面试都没有录屏,有些面经整理也不够及时,所以也太不全。。。)
阿里·达摩院·运筹优化·一面挂
- 项目相关。。。
- 快排、计数排序、桶排序时间复杂度
- dijkstra算法:如果每个节点都带时间窗(红绿灯),代码怎么改?
- A*算法
- C++如何垃圾回收,为什么没有垃圾回收机制?
- C++如何确定Struct大小
- C++栈内存和堆内存效率
- C++多态机制
【总结】永远不要第一个投阿里!!!因为你永远不知道你第一场面试会表现得多烂!现在回想起来自己实在是头铁,竟然敢拿阿里·达摩院的算法开图。。。其实阿里一面后我冷静了一周左右,没有再投任何公司,而是找学长学姐改了三四版的简历,因为面试官直接否定了我本科在美团的实习经历(太久远且与求职岗位不相关就是扣分项),所以我干脆做了算法和后台两份简历;同时感觉算法可能找不到工作了,所以也找了好多后台开发的八股文去看,两手准备。阿里的面试官人还是很好的,给了很多中肯的建议,包括面试和职业规划等,即使挂了之后也积极帮忙转部门(点赞);但是阿里的流程实在是一言难尽,尽管可以填多个志愿,但依阿里这个体量和热度,基本挂一次就没了,可能会反复被捞,进度一直在那卡着。。。当然如果你足够优秀就会推进得比较快,所以「菜是原罪!」
腾讯·CSIG·后台开发·五面offer
- 算法题:跳台阶、判断回文数(不能转成字符串)、链表交点、零钱兑换(求组合数);
- C++:虚函数表、虚析构函数、new和malloc区别、智能指针、函数重载、stl-map原理、多线程;
- 操作系统:内存管理、分段机制、堆栈增长方向、进程vs线程vs协程、IO多路复用、软硬链接;
- 计算机网络:time_wait阶段、TCP和UDP区别及应用场景、TCP拥塞控制、UDP如何保证传输可靠、二维码登录和过期机制;
- 数据库:mysql和redis区别;
- 场景题:两个大文件怎么找出相同的记录?
- 项目:beam search相关;
- 其他:三四面会适当给点压力,问一些给个项目你会怎么设计、怎么落地的大问题。
【总结】腾讯的面试特别重视基础、细节,面试官水平也都很高。上面列举的问题,大部分都不是简单粗暴地抛出问题跟你要个答案,而是要拐个弯然后慢慢引导你到正确的方向上去,因此个人感觉从腾讯的面试上反而能学到不少东西。比如,「从C++内存分段到操作系统的堆栈增长方向、共享内存,再到进程间通信方式」,还有问「TCP下载文件单条连接快还是多条连接并发下载快」其实是在考察「TCP拥塞控制」,这样从一个点出发问出一连串相关知识点的方式更能看出面试者对知识的理解和掌握程度。有的问题答不上来面试官也会引导,比如三面问「二维码机制」我完全不会,但面试官给了很多提示,最终引导我回答出「负载均衡」和「鉴权认证」等,虽然可能不对,但据面试官的反馈应该是满意的。关于自己的项目,面试官虽然不太熟悉也完全没有装的感觉,直言不「会」hhh,然后抛出一个角度一起讨论。总之,面试体验极好。
字节跳动·视频架构·四面offer
算法题:
- 设计高考查询系统(计数排序);
- 不使用变量a修改a的值(有点意思);
- 3×3滑动谜题(用A*写,这题笔试也考了);
- 抽牌游戏:抽一张放桌上,再抽一张放牌堆底,两种操作循环执行,给出桌上牌的顺序,要求输出牌堆原始顺序;
- 给一个函数f(),能以p的概率返回0,1-p的概率返回1,实现一个函数g(),等概率地返回0/1;
- 给一个函数f(),能以p的概率返回0,1-p的概率返回1,实现一个函数g(n),等概率地返回1~n。
概率题:赌博游戏,列出所有情况手算的。。。
网络:ARP、NAT、iptables命令(理解成了路由表,扯了半天rip和ospf)、TCP三次握手和四次挥手、DNS解析过程;
操作系统:进程vs线程、进程地址空间、分段机制、堆栈增长方向(引出不用a修改a那道题);
C++:虚函数作用、引用vs指针;
实习:主要是redis和系统主从同步设计等。
【总结】写出题来就是爷!!!字节跳动对数据结构和算法的要求确实是高一些的,但也没有特别离谱。至于「八股文」可真就是一问一答了,都是特别简单的。二面2h手撕四道算法题,让写3×3滑动谜题的时候我脱口而出BFS,然后面试官马上改口让用启发式写,我:???额,不会写。面试官邪魅一笑:简历上不是写着会A*吗?不为难你了,换一道。本来我都挺紧张的了,一听这语气马上就放松下来了hhh。三面主要问实习,一路穷追猛打直到翻车,其实相关工作我当时肯定是做了的,不然项目也上不了线,但就是过去太久忘了,最后只好缴械投降。这两轮面试也给我长了个记性:简历上的每个字以及可能延申到的每个点,都要非常非常熟悉!!!至于【面试体验】,吹爆字节!周围的同学也是没有不吹字节的,流程反馈实在太快了,打回去电话一定能找到人,改时间、催流程、问结果,无不顺畅。而且感觉他们的hr也是懂业务的,或者应该叫hrbp,不像其他公司单纯就是那套「优点」、「缺点」、「最成功」、「最失败」啥的,她会从业务的角度问你的「职业规划」,同时主动解答「这家公司这个组能带给你什么」这个很关键的问题,给与了面试者充分的尊重,「年轻公司」名副其实。要是不那么顶就完美了(逃。。。
百度·后台开发·二面挂
- 算法题
- 合并两个排序链表(迭代+递归)
- 一个数字串翻译成英文串,一共有多少种翻译方法?(动态规划)
- 无向图的直径(性质:从一个节点出发的最长路一定终止于最长路的某一端点)
- 升级:所有节点到其他节点的最长路(两遍dfs)
- 项目:PCB版图设计要靠考虑的约束有哪些?软硬约束如何处理?
【总结】(先吐槽一下周六加班面试,比字节都顶。。。)百度的面试有点像外企,是那种流水线式的面试,半天时间面完三面直接就offer,然后再分配部门。个人感觉这种形式不太好,因为面你的人不是将来的mentor或leader,也就说公司单方面地考察了面试者,而面试者并没有机会考察与自己共事的人(不过毕竟大厂,能进去都很艰难了,不能要求太多),优点是半天面完收工的节奏肯定反馈及时,不会把你一直挂着。同时这种面试形式下要求可能会高一些,算法题感觉是比较难的,二面写了40min,挂。
便利蜂·运筹优化·二面挂
- 项目相关。。。
- 场景题:便利蜂规模扩大要新建若干配送点,根据提供场景数学建模。
【总结】便利蜂的面试流程和百度一样,半天搞定,每面严格半小时。一面出了个场景题没听懂要干什么,我问面试官「优化目标」是什么,他让我自己想一个。。。二面全程聊项目,我说我在GitHub上放了算法流程图,面试官说不看就用白话给她讲明白。。。对不起,讲不明白,挂。有趣的是:一面的时候对面坐了俩人,耳机一人戴一个,一人提问另一人窃窃私语,我以为是跟流程的hr,结果是二面面试官。。。便利蜂应该是我春招体验最差的面试了。
美团点评·到家事业群·运筹优化·三面offer
- 算法题:
- 返回数组中最大元素的下标,如果是相同元素,则等概率地返回,限制空间复杂度为O(1);
- 旋转数组二分查找;
- 二叉树Z字形遍历。
- 项目相关。。。
【总结】整体来说美团的面试中规中矩,算法题也比较简单,由于我是算法岗所以重点也在项目上。特别吹一下美团二面面试官,应该是我春招体验最好的一场面试了,思路特别清晰,有机会与其共事的话肯定会学到很多。美团的流程还是比较慢的,基本稳定一周一面的节奏,老是麻烦帮我内推的学姐查进度最后都有些不好意思了。
总结的总结
- 最大的感受是算法岗和开发岗考察重点确实差异很大。由于我不是机器学习岗,所以也没有问机器学习的八股文,重点都是问项目。我感觉自己做得比较好的一点是特地整理了一下自己的「Github」(目前私有了),将项目的代码和算法流程以「图」的形式展示上去,只要提到大部分面试官也都会点开看,这样和面试官交流的时候更有抓手,不是单纯吹水。
- 开发岗都会问到诸如「某种技术的应用场景」这类问题,如果能结合自己的实际使用体验回答比单纯八股式的回答更加分,腾讯面试这点深有感触。
- 面试一定要不卑不亢,回答语气要确定,不要犹疑、不要虚。「完全不会就直接说不会」,如果有思路就说「我猜一下」,但面试官都告诉你错了就不要倔了,记下来回头复习就好。
- 最后,笔试、面试、实习、工作不是生活的全部,你自己才是。当你觉得一个问题无解的时候,觉得很难坚持的时候,求助父母、老师、朋友,或者像我这样的陌生人: ),也许无法得到完美的解决方案,但直面问题本身已经是在解决问题了,加油~