一共历经3次技术面试+一次hr面,终于得到腾讯offer啦。深圳的朋友一个都没得,有腾讯实习的小伙伴,********可以聊聊租房攻略之类的,另外想找找球友(篮球),虽然想到可能实习很忙,但一周打一两次篮球还是ok的吧!
-------------------------好多牛友问,更新下时间线------------------------------------------------
3.11 游戏部门一面,之后一周没反应
3.18 发现回到测评状态
3.19 新部门teg一面,面试完毕后过十分钟约 3.20 二面
3.20 二面
3.27 hr面
3.28 晚oc (之前回复评论区两天记错了,看电话记录是隔一天oc)
3.29 发offer
3.30 红围脖
--------------------------------------后面更新了美团面经-----------------------------------------
美团二面刚刚结束,还没出结果;钉钉电话一面(比较轻松,全谈简历上的,还没约二面);其他的如淘天集团还没约面,笔试也还没写;拼多多笔试前正好坐了一个多小时地铁从外面赶回来,时间过了十几分钟,脑袋也不清醒,本以为难度是美团笔试的水平,结果....;蚂蚁简历挂(听蚂蚁师兄说蚂蚁以及开始搞后端高级外包了,c++方向可能还好);快手后端简历挂;还有七八个小厂offer,小厂感觉大多都是走ai方向,和后端结合这样子,纯做后端开发的还遇到的比较少
面试期间遇到了好多面试官,有人超级好的。印象最深的一位面试官,现场手撕的时候,一边撸猫,一边花了半个多小时教我手撕前缀树(因为完全没做过这题,甚至没听过),现场给我画前缀树的结构,我写一行他指导一行,像是给中学生上课一样和蔼地提示....最后还是没去,感觉心里还挺对不起他们的,浪费了他们的时间
还有一个印象深刻的是做直播卖货的offer,感觉面试官人也是非常好,就面了半个多小时,纯java技术栈,整体非常紧凑,从一开始就进入状态,双方都没多说一句和技术无关的话。面试官表示并发量还是挺大的,会有一定的挑战性,但是没关系的,我们做技术的每次遇到问题都是对自己的一次提升。其实我个人觉得这个岗位是很能够锻炼到的自己的,如果直播卖货这个方向是放在大厂,比如淘天集团之类的,我估计99.9%的概率自己接触不到这么核心的业务,就算接触到了也是打杂。整体上从开始那一刻好像就和面试官有一种“默契”一样,相互聊着抢购场景下的技术方案,比如限流,分布式锁,分流处理,上流快速判断抢购资格,中游消息队列,下游数据库慢慢处理,以及各种方案的优缺点,有点意气相投、相谈甚欢的感觉,面完hr马上就联系我问我什么时候能来之类的了...也是感觉很抱歉自己其实从一开始就没打算要去,就是因为重来没面过,消除一下自己的紧张后面面大厂用的...
好了最后说一下字节,其实从去年开始,我最想去的一直都是字节,准备的都是字节相关面经,字节经常手撕的题全做了几遍,字节的框架hertz、kitex、gorm有些部分源码也读了不少,比如hertz的jwt全过程的源码...自己的一个很牛的师兄也在字节做抖音核心业务,本来想走的师兄的内推,结果在那前几天被boss上的一个hr迷惑了,hr的岗位是上海国际电商的,我说我其实想去杭州找我师兄的,然后她说那就给我挂到杭州那边,我当时也不知道什么意思,没同意也没拒绝,说自己还没准备好,两周以后再考虑。
好了,两周以后来了,我都差点忘记那个hr了,想走我师兄的团队内推,结果简历投递失败-----折腾了挺久才知道就是之前那个hr,已经给我约面了(约的两周以后),不是我师兄那个团队,但是无法投递,表示重复什么的...
好吧,那就面它,我自己完全看不到进度,上午和hr沟通完说下午就可以面,面试官一上来,问知道不知道对象存储minio的存储原理,我当时就懵了,mysql、redis、kafka的存储结构那些我都很熟悉,一问就问到我第一个不会的...然后说看我用了etcd注册中心,问我懂不懂etcd注册中心的原理,和nacos区别是什么,etcd的脑裂是什么,如何解决.....脑裂这些我也知道,但是etcd如何解决我不懂啊。这也不是关键,关键是,我知道我不懂etcd,我只是当注册中心用了一下,面试之前,我让hr更新简历(之前说了,两周之后才面的,两周前的简历刚刚做的,是有一些问题..),新的简历里面已经没有etcd的任何字眼了.....面试过程中想起来平时hr回消息也很懈怠,觉得她是真不靠谱啊....
没办法,接着面,有一说一,字节这个面试官水平确实非常高,他问我,你点赞的时候利用是的golang的map进行限时聚合点赞操作以减小对数据库的访问,但是你做的是分布式架构,那用户点赞和取消操作可能在不同机器上进行,最后操作的其实是不同的map,你这个技术方案是否有问题?当时我就给佩服了,自己没想到这个问题,这确实是一个问题,有点像分布式锁,应该用第三方的中间件比如redis来搞的....然后我说,因为在map聚合点赞之前,有kafka消息队列,只能靠消息队列的有序性解决了,然后承认自己考虑不足...
这还没完,在把数据(视频)上传到minio对象存储过程中,我用了kafka,面试官问我为什么这里要用消息队列呢?我说削峰解耦之类的,用户上传视频之后,kafka生产完消息之后代码里面就直接返回了,让用户可以访问其他功能,不用被卡在这里。面试官:后续怎么知道成功没有?难道用了websocket吗?我说没有,后续用户有点击这个页面,前端会再发送查询请求,看数据上传成功了没有....但是面试官不是很满意:他说软件肯定是多线程的,这个过程中访问别的模块也是没有问题的,所以解耦.....而且你上传视频本来就是要等的,这个站在用户角度是ok的......接着来,面试官:你说削峰,上传视频这个功能一般不会像秒杀之类的服务那样有集中请求,本来是不需要太多削峰或者限流的逻辑的,服务器的处理能力和用户上传视频的并发是匹配的...所以你这个消息队列感觉是为了用才用...
上面这么多就是字节面试卡住的地方了,其他的比如redis集群挂机怎么处理怎么选举、如何分片,多加一台机器数据是怎么变动的之类的都答的还行,题也做出来了,总结起来就是简单的八股都没怎么问,整体难度是我面这么多最难的了
因为hr给我投递的,我看不到进度,第二天一问hr,一面挂了......这么久的字节梦就这样破碎了.....我直接化身志杰黑子!(不过听说字节最近招人很谨慎,师兄那组最近就来了个北大的,飞书也在裁员,tiktok的事件...)
最后附上腾讯一面面经(一个半小时,没录音,记录不全(大部分记得住的是答的上来的),全是计算机基础,全八股,也是压力巨大)
1.网络建立连接的过程
2.TCP四次挥手的time-wait
3.数据从网卡发送到内存的过程
4. tcp滑动窗口
5滑动窗口受哪些因素的影响
6.一亿数据取最小100个,你说堆排序,那堆排序的复杂度,构建过程的复杂度等,除了堆排序,还有能够实现的吗
4.x86,x64指令集,对应寄存器....
5.进程线程协程,区别,优点,内核态用户态
6.redis持久化
7.mysql如何保持主从同步
8.用哪些框架了解过哪些框架保证微服务的一致性、原理是什么
9.raft算法
10. 图论的四五个,邻接矩阵等
11. 进程线程、之间的通信,还有五六个操作系统的问题搞忘了是啥
12. 分布式事务
--------------------------------------------------------------------------------------------------
hr面:
------------------------------------------------------------------------------------------------------
二面:
--------------------------------------------------------------------------------------------------------
手撕笛卡尔积
springcloud和springboot的源码是否看过
秒杀比如一亿个人过来,分布式锁肯定是扛不住,想想其他解决方案
kafka如何实现消息查找,定位,底层是如何实现的看看