热头条丨写在2023年初的后端社招面试经历(四年经验):字节米哈游富途猿辅导
1. 背景
距离上一次面试[1]已经过去快 3 年了,又碰上 2022 年互联网行业大动荡,很多企业都做出了裁员决定。
(资料图片仅供参考)
身为互联网人要时刻关注自身成长,所以会对 “跟面试官切磋” 这种事情比较感兴趣,其实也是一种打探行情的手段:
因此收集这两个信息是我面试最初的目的,当然整个过程很长,最终的选择也会受很多事情影响。
2. 面试准备
毕业之后我在两家公司工作过,触及的业务包括营销数据分析、供应链物流、社媒广告投放等。
每个领域包含的内容都比较多,除非是手上正在负责,其它内容想回忆起来是相当难的。因此在简历撰写上,尽量将业务转化为技术模型,好处在于:
正常来说简历准备好之后,要有具体的专业知识做支撑。考虑到工作年限不长,所以仍是以基础为准,对接触一线业务的后端来说计算机网络、数据库、操作系统三大块是一定绕不开的,在此之上搭建分布式、微服务架构、服务治理等知识框架。
最后补充对工作项目的思考,例如做的项目在业界中是否有竞争对手、大家的方案横向对比有什么优劣点,自己的创新点在哪里等等。
但是面试准备是服务于我的面试目的的,基于评估自身技术水平的想法,我最终也没有拿起课本,而是决定看看在 “不刻意准备”(摆烂)的情况下能表达到什么程度。
个人不认为裸面(again,摆烂)是个好的、值得推广的实践,这导致在面试的时候很多问题(例如:是否了解 Kafka、是否了解一致性哈希)我选择直接回答 “不会”、“没了解过” 来避免 follow up questions,但是在一些特殊背景下确实可以更真实反映出自身的水平。
当然,面试中有一些比较 “硬” 的条件要求(算法题咱说的就是你)是须要有所积累的。因为本身不擅长算法,解新题其实会需要一定的时间,所以我选择反复写 Top 100 Like 的老题目来保持手感。
最后关于求职方向的选择,更多是出于个人偏好,不具备什么可参考性。对我来说,由于未来倾向于换到云原生相关的赛道,那自然是以基础架构相关的岗位为主。
但是找到 100% 符合目标的职位其实是很难的,而且所谓的 “云原生”、“基础架构” 本身就是个非常大的范围,其中细分方向、职能无数。征询了一些朋友的意见,最后也是尽可能地往目标方向靠拢即可。
3. 面试
求职过程中,有一些公司是直接拒掉了简历的,一方面是简历比较普通,其次也可能确实没有招人的需求。这也是符合预期的,平时大家开发的时候 Liveness Probes[2]也会有失败,说明(简历)该回炉重造了。
Anyways,最终进入面试流程的有 4 家,如果只对其中某一家感兴趣的话可以从导航目录直接跳过去。
在面试过程中我都会进行录音,这是个很有收益的事情,过往面试中我观察到有些同学会自认为回答得 “尚可”,殊不知很多细节只是在脑中形成思路,在表述上则是断断续续。
任何细节的缺失在面试官听来都可能导致理解上的差异,最终予以不够好的评价。面试后听录音重新 Review 面试,可以从面试官的角度听自己的回答,也方便整理面试经历。
3.1 字节跳动(国际化电商)
字节的面试流程是:组内面试官->组外面试官(交叉面)->组内面试官,当然因为菜的原因没继续走到第三面。
两位面试官都很感兴趣所做的业务,聊业务的比重也是 4 家中最多的。
另外字节的面试的时候有个小插曲,二面刚好是疫情爆发最严重的时候,顶着发烧面试也算是一次独特的经历吧。
详细记录:写在 2022 年末的字节跳动面试复盘[3]
一面摘录
反问环节:
二面摘录
反问环节:
3.2 米哈游
整体来说面试问题都很基础和简单,能不能通过的话(如果没特意复习)就靠平时的积累了。
Golang 岗位里对数据结构的提问非常频繁,个人认为对 map
、sync.Map
、context
等的熟悉程度应该达到能完整记忆每个结构体字段的水准。
详细记录:2023 年初的米哈游面试复盘[4]
一面摘录
反问环节:
3.3 富途牛牛(互联网-基础/接入)
4 家中富途牛牛问的基础知识是最多的,给我印象很深刻的是跟每位面试官的沟通都(提)很(示)顺(很)畅(多),那因为一些不熟悉的知识点我基本是依靠同类的工具去类比和猜想,面试官很愿意听我的这些猜想。
有些思路上和所问的实现确实是不同的,面试官会提出来那(正确实现中)某某问题是如何(在我提出的实现中)解决的,引导我慢慢靠近或者推导出正确实现。
我认为作为面试官,这些应该是标配培训的能力,但是实际上在面试中能见到的甚少,一是面试时间有限,二是作为面试官一天面试很多人,耐心难免也会有消磨,这都是可以理解的。
所以实际上能做到如此的话,对面试者确实会是非常好的体验。
详细记录:2023 年初的富途牛牛面试复盘[5]
一面摘录
funcmain(){fmt.Println(test1())fmt.Println(test2())fmt.Println(test3())fmt.Println(test4())return}functest1()(vint){deferfmt.Println(v)returnv}functest2()(vint){deferfunc(){fmt.Println(v)}()return3}functest3()(vint){deferfmt.Println(v)v=3return4}functest4()(vint){deferfunc(nint){fmt.Println(n)}(v)return5}
反问:
二面摘录
反问:
三面摘录
三面反问:
3.4 猿辅导(大监控-日志)
其实最初有一点点惊讶原来猿辅导在国家一些政策影响下仍在继续活跃。由于投递的是更贴近基础设施的岗位,很多问题能听得出来都是从基础架构工程师的角度发问的。
另外它们家的面试有一个比较印象深刻的点就是,每位面试官都喜欢问:“你觉得 XXXXX”,例如 “你觉得哪些项目挑战最大”、“你觉得这里面最难的点在哪里”。
不过作为投递里面唯一完全没接触过的领域,他们问的很多问题我都非常有兴趣继续探讨下去,也是少有的关注简历上**CDC 同步方案**[6]的团队。
详细记录:404 orz
4. 总结
整体来说面试没有出现想象中的地狱难度,几乎所有的面试官都很有耐心交流。但是被问到这么多的基础问题确实有一点点出乎意料,正常以为会是项目 & 基础各占 50% 的比例。
不过或许这也是好事情,个人非常赞同基础扎实但业务薄弱的工程师 > 对业务有不错理解但基础不扎实(或比较远离一线开发、代码生疏)的工程师。
另外其实计算机基础确确实实有在我的日常开发中帮到过我(quick question:你有在实际工作、排查问题中找过 TIME_WAIT
的网络连接吗?)。
然后回到最初面试的目的,是为了回答下面两个问题:
5. 一些推荐
关于面试我认为下面的材料很大程度帮到过我,所以也会推荐给在看本文的你,或者要求职的同学。
USENIX:https://www.usenix.org/conferences[7]
如果想树立一些属于自己的亮点,一个捷径是了解面试官不懂的知识(不是)。关心前沿的学术和工业论文非常简单有效,USENIX 上覆盖了很多基础方向,例如计算机网络、操作系统、存储、分布式、安全,以及按职能划分的 SRE 等等。除了 USENIX 上的以外,如果有你关注方向的其他顶会那当然也是可以的,例如我以前会去看看 VLDB 和 SIGMOD 上的论文了解 KV 存储的一些新知识和研究方向。
操作系统导论:https://book.douban.com/subject/33463930/[8]
一本很有意思的操作系统的入门书,可以写写里面代码了解一下 Linux 的 API,对于进程和内存相关的讲解让我印象非常深刻。
Go 程序员面试笔试宝典:https://book.douban.com/subject/35871233/[9]
首先声明一点这个书没帮到我面试,因为在面试前我没什么时间看它...正常来说我也不会推荐这种速食读物(手动狗头),但是结合面试遇到的提问来看,我认为它会对急着在一两个月内找到工作的同学很帮助。不过无论如何,程序员的学习是不建议走捷径的,如果对 Golang 感兴趣的话,有很多更好的替代品,包括 Draveness[10]老师、Russ Cox[11]的博客等等。
6.学/复习路径
总结一下我学/复习 golang 的路径:
如果你在未来半年内不考虑面试,那应该是有时间吃透其中几本书的;如果马上就要面试了,或许更推荐以抽象程度比较高的博客、文章为主。
参考资料
关键词:
2023-03-23 09:21:48
2023-03-23 07:07:11
2023-03-23 02:42:11
2023-03-22 22:42:46
2023-03-22 20:36:05
2023-03-22 20:13:08
2023-03-22 17:08:43
2023-03-22 17:01:37
2023-03-22 15:59:01
2023-03-22 14:13:21
2023-03-22 11:41:20
2023-03-22 10:02:28
2023-03-22 08:07:16
2023-03-22 03:56:28
2023-03-21 23:20:56
2023-03-21 20:29:48
2023-03-21 14:20:20
资讯
品牌