22届双非一本跟谁学字节腾讯阿里面经

说在前面

经常“吸”社区,也要时不时反馈一点,一起延续开源精神。

个人情况:22 届双非一本,从去年 12 月开始面试找寒假的实习,由于学校疫情原因没去成功,于是经过寒假复习“二战”。先后面了跟谁学,腾讯,字节,阿里。

由于我个人情况特殊,从大一开始使用 Go 语言到现在,了解比较多,C++ 用来写题,有的问题可能不具有参考价值,理性看待。

另外有的问题确实记不得了,大家不要太看重问题,因为大部分都是八股的题型,网上一搜一大堆,博客的总结能几万字,但是没有面试官喜欢听这种东西,都是搞技术的不喜欢花里胡哨,我曾经就因为答协程区别和特点被反问 你这个有点像背的,,不过我也没反驳,下次总结避免就好了。你要答出问题的本质,底层的思考,说出跟别人不一样的地方,用有些面试官的话来说就是 这个问题我只想听你说一句话,我看我能不能听到。说白了就是你说了一大堆可能在对面听来都没听到,说不到点子上等于没说。

另外本文我主要突出面试过程,不是面试问题的总结帖(有的问题我真的记不得了 :(。

好了,不说废话了,大家看正文吧,有什么问题欢迎找我聊~

跟谁学两面 oc,第一次面试

一面

自我介绍

项目:

  • 用go写的rpc框架的具体功能细节,注册中心单机还是分布式的,其中一个挂了怎么办?一致性,可靠性怎么保证的。超时控制,加锁和管道支持并发,单机(考虑了多机情况,说了已经在todo里了)。

  • Go+QML 利用cgo实现的跨平台桌面应用功能,场景,为什么要写这个东西? 我说为了性能,追问性能如何体现,如何测试的,如何优化。答宏观上从任务管理器,top中看,细节上从pprof进行性能定位调优,从火焰图上看。追问pprof还有什么功能,你一般是怎么定位问题的?回答还是先具体再细节。

这时候我就俩项目,后面怕不够,又想拿go写个web的,正好学校说需要重构某个子选课系统,就跟同学接了,这个下面说。

写个快排?时分复杂度分析?看你了解过go的标准库实现,说说go的快排源码怎么实现的,答三数取中,根据数据量选择多种排序方式组合,追问细节我就不知道i了,,确实没看过这个。。他说没事。

协程与线程区别?为什么快,快在哪了?自定义了4个伪寄存器 fp sp sb pc,轻量,初始2KB动态伸缩,由runtime管理,对os透明等等各种原因,又说了以下gmp调度的优势。追问寄存器是什么,你对寄存器还有什么了解。我说了一点关于go和c 在寄存器方面使用的不同,函数传参,调用堆栈等等,扯了点汇编区别,就又问了几个汇编指令,过了。

虚拟地址,物理地址区别

rpc与http区别,使用场景,自己总结一下再说几条

还有点八股没啥难的 有点忘了。。

也没问啥难点一面就过了

二面部门leader

详细聊虚拟地址与物理地址,为什么分这俩,段页作用,为什么内存占用能比实际要大的多(还是虚拟地址作用),循序渐进的从现象到技术实现来问,不是考试。

go+qml项目问了几个关于cgo的特性,聊了聊优劣势,看得出来这个项目好多面试官也不懂,cgo特性一是用起来结合其他语言的时候确实有坑点,二是拿go写gui有点杀马特,不招人待见?

闲聊网络跟os,最后问了个智力问题,就过了。

总结

感觉难度不大,缺人进来打杂,要求不高。问了一下前辈,说加班严重,校招的话工资高了可以放备选考虑去。。面试体验还不错,自己缺乏一点回答技巧上的经验,聊技术不能一下到点子上,废话略多。

字节二面挂,腾讯二面挂

这俩对我帮助最大。

字节

字节对我最大的帮助是深度思考算法,为什么要这么写,别的方法行不行?

自己感觉有了点面试方面的经验,就投了较大的厂,遭到毒打。

字节一面是算法面,最后写了个单链表归并非递归,勉强通过。

二面上来扣20分钟rpc项目,挖出你这个项目的所有特点为止:

  • 序列化方式有哪几个,区别是什么,自己写过吗
  • 协议用的哪个,为啥不用udp
  • ...鞭打。。。

当时确实缺少对项目的深度思考,也是参考了声哥的项目,不过他是java写的,用go写起来参考了不少框架源码,rpcx,grpc,实现起来略费劲,时间仓促,底层思考略少。

二面挂是因为问了个快排复杂度,详细分析这三个时间复杂度的结果,怎么来的这个值,举例子说明等等,自己算法这方面当时确实弱项,挂了正常。

腾讯

腾讯对我最大的帮助是看源码,有的东西嚼别人的东西是不够的,应该学习一手资料,详情参考曹大的博客《工程师应该怎么学习》。还是太菜了,缺乏深度思考

几个亿找中位数

搜索树旋转过程

对面应该是c++的,问我map,我说我用go,他就说go也行,你说说go map 时间复杂度,为啥是这个值,为什么这么多数,O1能直接访问到,当时map只了解了一点,遂答的浅。

问 gc,gmp模型

后面忘了。

从这里开始,我去把go map的源码包括 runtime/map.go还有相关的汇编代码过了3.4遍,逐行注释源码,写成了博客,这才有了后续跟阿里面试官(技术专家)扯map 20分钟,详细问到扩容的代码实现。。

也看了channel的源码,挺多的,假期期间算是把底层源码这块入了个门,能扯几句了。

阿里三面挂

笔试算法还是写的不好。

这个是寒假回来的了,阿里云的,一面跟技术专家聊了45min,面试官应该是c++的,懂go,全程比较愉快,最后15分钟写了个题,改编版无重复字符最长字串,10分钟a了就过了。这里记录几个有意思的问题:

  • 有什么方法可以让函数无限递归不爆栈?尾递归,返回还是函数本身,栈帧覆盖?
  • 什么方法可以限制从堆分配内存的内存范围?
  • 逃逸分析,有哪些情况会逃逸,为什么?(go的逃逸分析)
  • 几个地址段,中断向量表的1024,代码段,数据段,堆栈等等。

二面是笔试面,1小时俩题,20分钟a了,接雨水改编版,左视图。问思路,把接雨水改了改,写完了过了

三面应该是主管,到这里的时候项目补了个选课系统,全程问项目整体设计,不具体扣到最深的细节,又问了职业规划,除了go 还意向什么语言,答py c++ rust也可,,貌似对c++意愿不够,其实我c++还可以的,go封装太多了,其实挺想学c++的,之后对方声音变低了,还问了俩问题就结束了,最后问一面的技术专家说原因是笔试不好所以挂了。。

原因我是没想明白,,二面不是补笔试都a了,问题也都答了。。玄学,也不纠结。

阿里区块链测开

被捞了。一面摸底面,先问你学过哪几个方向,答网络os组原都学过,于是每个都问了一遍,问题有点多,记不住了,挑几个印象深的吧,不分先后:

  • docker用过吗,隔离实现底层?dockerfile,dockercompose,指令说几个,看我说了expose,问端口映射方式,追问冒号左右哪个是主机哪个是容器。。。我还真忘了,上一个dockercompose和dockerfile是几个月前了。。
  • vlan了解吗,学校做过,但没深入了解。对方看我不太懂就没追问。。
  • https详细握手过程,说了tls 12 13,psk,sessionid,sessionticket,ecdhe,rsa反正一大堆,你懂的。
  • 从源码到二进制代码的整个流程,编译链接载入内存等等。我说了这里看到的地址都是虚拟地址,平常看到的0xc00000xxxx里的c是虚拟地址与物理地址的转换表的下标,瞎扯了程序领空和用户领空的区别。

昨晚突击二面,我说不想测开,他说给我转到平台研发部,还详细说了一下他们部门的工作,说不是BS架构,没后端,只能到平台研发,是C++,我就说也行,面试3分钟就结束了。。。

腾讯过

开学面了俩除了阿里云就是这个,比较顺,刚oc。

一面是俩人,问项目,应用层协议,https过程,最后写了个树的题,递归写的比较简单,忘了。。

二面就20分钟,全程问go rpc,穿插一些网络方面的问题,比如tcp udp选择,区别,技术实现等等,没写题,有的问题我还没打上来,感觉对方也不是很满意要凉了,给我的感觉是随便聊了几句就结束了。。最后还是过了,,要求略低,可能缺人。。。

#实习##面经##腾讯##golang工程师##字节跳动##阿里巴巴##高途#
全部评论
666😌
3 回复
分享
发布于 2021-05-20 08:28
楼主用go写的RPC有放在github吗?
3 回复
分享
发布于 2021-05-20 09:30
小红书
校招火热招聘中
官网直投
楼主能给个博客地址和github链接吗?
点赞 回复
分享
发布于 02-15 21:27 香港

相关推荐

16 82 评论
分享
牛客网
牛客企业服务