后端秋招24场100%胜率的SSP,真的只是靠卷技术吗?
前言
秋招100%胜率,7家offer,剩余面试场次皆过,属拿到字节意向后取消面试流程。目前开奖4家皆为SSP。
背景:澳洲本硕,计算机专业,一段互联网大厂半年实习。
或许很多同学看到这个背景就会觉得没有参考价值了,本科出国,还有大厂实习。但是写这篇文章,就意味着我自己还是觉得,有很多和大家的相似之处,也有过相同的困境和无助。希望大家读下去会感受到,我的不出众有多么平凡,我的不一样又会给大家带来怎样的启发。
本篇文章主要会涉及本硕个人成长经历,遇到的挫折,如何改变,如何成长展开。
若一些闲聊过长,则大家可以直接看最后的经验贴。但可能难以理解为什么我会这样想。可以当小说看看。
学生时期
2019
18年底高中毕业,前路迷茫,不知道自己到底对什么感兴趣,家里劝我学医,但是实在对生物不感兴趣,最后选择了软件工程,渴望着以后可以成就一番大事业,或许做软件对创业有帮助?现在看看,高中的自己这些想法确实远大,又充满了童真。
我一窍不通,正如绝大多数刚刚结束高中生活的同学,前一秒生命的目标是语文数学英语如何取得更高的分数,考完的一瞬间,就需要决定今后的一生从事的事业。
没有任何前辈给予帮助,没有任何就业辅导,学术规划,摸黑式地走进了这条路。
不出意料,大一第一周学shell和python,加上刚来澳洲不久英语欠佳,弄了两周各种打扰同学才知道终端是什么,为什么写代码需要两个窗口,一个写,一个执行。两周才搞明白这个,也意味着我的进度是无限脱节的,不出意料,大一第一门专业课挂科了。选修了一门商科,同样挂科了。
第一学期,以五门课挂两门收官。19年7月的那个暑假,生日那天,凌晨五点蹲着邮箱等成绩到达的那天。能够感受到的只有竭尽全力后的无助,不止如何走下去,更是不知道如何和家里人说这两门课挂科必须重修七万元的无助。
还能如何,你总得走下去吧。但我已无不开始怀疑自己对于计算机的能力。
大二下,因为是重修,所以没有挂科。
2020
19年底回湖北过年,疫情爆发。
学校提供了网课的选项,体验了两周,效率实在太低且线上课当时还不太成熟,选择了休学一年。(一开始休学半学期,结果还是来不了澳洲,再休学半学期)
转折点慢慢改变。
由于休学一年,大一也没学到什么技术,就尝试找一些非技术岗实习,也算是累计一些职场经验。
当时小红书似乎还没什么人用,在各种地方找资源学习如何找实习,有什么我能做的,如何面试。B站,豆瓣,微博,找到实习僧,boss直聘。面了三次运营实习,两次HR实习。从一开始什么都不懂,到最后对社区用户留存,拉新,人力资源三大支柱什么的滚瓜乱熟,最终成功面到了TCL的HRCOE实习生,当时的前女友也在深圳,疫情导致异地需求,便毫无犹豫地去了。
实习俩月,意料之内,全程在打杂,天天就是包装宣讲会的物料,寄邮件,以及给各个高校预约线下宣讲的邮件和电话。于是也在一边实习一边找其他的机会。难得的是认识了一群很好的朋友,因为每天都在一起打杂,也没啥压力哈哈。
运气较好,恰逢20年字节正在大力扩展业务,hr实习生需求超多。经历两次电话面紧张导致挂掉后,TCL这段实习经历,似乎给我了点信心。进去后才知道mentor只是想看看计算机专业hr实习生的来招聘计算机的人,会不会有奇效,最后让我进去的。(事实证明,mentor错了哈哈)
字节hr实习了4个月,当年字节正举力投入教育和游戏产业,我负责的是招聘iOS客户端的社招。一个hr实习生每天需要工作到十点半,因为我们需要等待候选人下班之后再给他们打电话。对比TCL每天六点下班,我当时是绝望的。
当时的我对客户端后端等技术其实没有什么清晰的认识,只记得一些模糊的关键词。“中台概念最近很火”,“校招生为什么都不学客户端”,“怎么隔壁后端那么多简历我们这么难招”。
是呀,实习那么久,每天白天就筛选简历找简历,晚上就紧张地候选人打电话,好不容易介绍后愿意来面试,要么简历挂,要么面试挂。但是不入职,又全部工作就都是白干,每天都在崩溃边缘挣扎。根本不存在KPI一说,有时候看到别的地方说字节KPI面试,虽然我没招进去几个社招的,但是说字节HR招人是KPI就是纯骗人了。
这段实习的收获是什么?
很多,足以改变我整个人生的视野和规划。
- 每天的筛选简历,了解到了原来大二大三就得需要找实习。以及实习需要学习什么知识。当时因为在深圳,收到的Offer很多都是隔壁哈工大,以及广工的,个人实习都非常强,一堆大二大三就能来实习的同学。通过不断的学习和筛选简历,对他们所投递的岗位,以及简历上所需具备的技能,自己进行了一些关键词的整理。“后端:Springboot、MyBatis”;iOS客户端:Flutter”,虽说现在来看有些可爱了,不过对于当时刚读完大一,没有任何以后学什么概念,该走哪条路的我,还是提供了一些帮助。
- 我以后该干什么?当时再怎么说,我也是技术岗的招聘。或多或少主动和被动都有地去了解了每个岗位分别是干嘛的,以及优劣势。算法?我没那个智力啦。前端?听说鄙视链底端。测试?钱好像最少。客户端?我都招不到客户端,求着学生来实习结果都去后端了,那我也不去。后端?哇塞隔壁后端简历都挤爆了,不得卷死。 迷迷茫茫地,但似乎也只有后端给我选。于是去B站上开始学后端,是的,不出意外,尚硅谷黑马动力节点三条龙服务。从前端三件套,到SSM...
- 约面的过程中,不免会和一些业务Leader进行沟通,偶尔的面试旁听,了解到了面试的流程是什么样的。候选人怎么样的表现可能会称之为好,怎么样的称之为坏。
- 优秀的同事,将永远是未来生活或职业路上的无尽珍宝。结交到了很多优秀且厉害的同事,在日后给予了很多帮助。
- 认识到了和同龄人的差距,并以此为勉励。看到那么多985和计算机高校同学的简历与面评,实习里无一刻不对自己感到不满。对于以后想要以技术岗再次来到这里,证明自己大一挂科的无能只是我没有准备好,证明我招不到人不代表我技术也不行!
实习结束后, 我开始了长达两年的Java后端学习之旅。
2021
为了弥补大一挂的科,大二大三学校的学业不得不更重了,因为要多上一门课。切国外宽进严出的体系在这里体现的格外严重。每天起码需要花6h的时间在学校的作业里,才能保证一个好的成绩,来弥补大一绩点的空缺,后续才能申请研究生。
21年底,和大一同学去了一趟北京跨年。说是去北京玩,因为他们都在北京实习,因特尔,小米,网易。而只有我,是真的只是去北京玩。你怎能不有所感想?
一整年,每天6-10小时的学习,我的内心开始变得麻木,和越发迷茫了。
“现在不卷以后就没路走”,“把握当下!现在不玩,以后都没机会玩了”。两种内心的声音不断在我脑海里使劲掌控我,卷与不卷,玩与不玩,感觉自己已经学成了傀儡,连偶尔的休息都觉得是对自己未来的不负责,对家人的辜负。
2022
日以继夜的挤时间,终于才花了一年多的时间,从Java,C,计算机网络,操作系统,SSM,Redis,学到Springboot,VUE,完成了第一个前后端小项目。
我得开始找技术岗实习啦!两年的狂卷成果,总得来点收货吧!投递两个月,只收到了3次面试。
网易1面:https://www.nowcoder.com/discuss/417792778371956736
百度1面:https://www.nowcoder.com/discuss/425305942188679168
百度2面:https://www.nowcoder.com/discuss/425308388944248832
小米1面:https://www.nowcoder.com/discuss/425304473477578752
准备了两个月的算法与八股,依然全挂,毫无悬念,毫无招架之力。
如何才能不怀疑自己?如何才能做到当时实习的时候想象的自己想成为的那种人呢?
我好像那个目标越来越远了。真的是我不够努力吗?还是我真的就是太笨了,不适合读计算机?为什么别人都能有实习?
22年底,实习全部挂掉之后,疫情再次来袭,奥密克戎,又出不去了。
花了一个月的时间,看完了谷粒商城,学到了ES, 微服务,消息队列。
看到凌晨1点的B站,200集,同时观看数量30+,“哈哈,真的有出路吗?”
时隔接近两年,澳洲终于解封,能够回去上课了。实习没有找到,就这样回澳洲了。
出国前,做了一个重要的决定,转Go。
在hr实习的经验告诉我,即使澳洲再被调侃为水校,但是QS实打实在那里,HR就永远不会以学校卡住你。以及当时字节已经全面转go,同一时期,国内公司听说大规模用go的也就只有字节,百度和b站。那时的我,就是纯粹的孤注一掷。
花了一个月看完了尚硅谷的Go,以及刘丹冰Aceld的go课程,就这样一无所获地又回到了澳洲。和大一似乎并无区别。
2023
熬过了大二大三,大四的课业比较轻松,几乎整一个23年我都在做Go的项目,以及为找实习做准备。(当然不得不提我作为留学生带来的便利,就是我可以申请研究生而不是考研,以及可以在本科研究生中间的空档期进行实习。)
再次准备了接近一年,从11月份,我再次开始面试了。一共只有三家进入面试,其余简历全挂。
字节1面:https://www.nowcoder.com/discuss/551074669743378432
字节2面:https://www.nowcoder.com/discuss/554371366380650496
Momenta1面:https://www.nowcoder.com/discuss/553955219927744512
Momenta2面:https://www.nowcoder.com/discuss/554980122864939008
腾讯:https://www.nowcoder.com/discuss/551517553965748224
这次不同的是,字节和Momenta我都过了。我拥有了一定的信心,我觉得功夫不负有心人。
相同的是,腾讯,这篇当时上了全站排行榜第一的面经,在此给我带来了沉重的一击,让我知道道阻且长。
这边两战两胜,那边被虐的体无完肤,“是不是腾讯故意恶心我啊”的想法,在大家在帖子下面各种评论的吐槽下,也情不自禁地充斥在我的脑海。
但更重要的是,失败之后的事。
2024
在字节的实习半年内,除去工作分内的事情,我都是在反思腾讯那次面试为什么会那样糟糕、字节的2面的那几个问题,到底该怎么回答,我到底该从哪里学习,以及付诸行动。
“你说了负载均衡,负载均衡是在哪一层?” 我说Nginx是应用层协议,应该是第五层吧,他说你可以下去再看看。对此,我看了不下十篇文章,来了解各种类型的负载均衡,L3,L4,L7,LVS等等。
“到底为什么要用微服务?” 当时所说的每一点原因,都被面试官回答到单体一用也可以解决。翻阅了各种博客, https://zhuanlan.zhihu.com/p/4249274511 终于找到了能够让我理解的原因。
要说上面字节面的这些知识,我完全能理解面试官为什么会问我,毕竟或多或少接触过。即使没有答完整,也可以说出来一二。如果说的很全面,那就是加分项的SSP了。
“TIME_WAIT CLOSE_WAIT 区别”,“如何设计分布式游戏ID?”,“性能瓶颈就是上不去怎么排查”,“EPOLL底层”,“网络通信大小端何时进行转换的”,“怎么查看网络连接状态”
此类腾讯的问题,我做后端真的很难去了解到啊,我实习的时候似乎也没接触过,到底该如何学习呢。
此时的我在字节实习了半年,其实早就褪去了不自信或者自卑的外衣(人不可能同时拥有字节offer和自卑,Reference: ...),开始思考的是为什么我不会这些?我该如何学习这些?
2025
字节实习完后,继续在澳洲准备我的读研生活,更或者说是秋招的备战生活。
除了字节的实习经历外,本来实习也是打杂,总得再做一个能够应付秋招的难一点的项目吧。以前都是做的纯Web后端,这次尝试做一个IM服务器好了。
B站,IM即时通讯网,GPT,被我完完全全问出了烟。四个月,做出了一个非常不具备鲁棒性的IM小项目 :(
但是,我完全没有想到的是,这个项目会给我带来多大的改变以及知识的广度,也理解了之前腾讯问的问题的原因。
- 因为是做服务器,我们需要考虑网络模型,而不是像TomCat,Netty,又或者Kitex,GoNet等工具包给我们做好的现成框架,服务器为了足够轻量化来减少延迟,往往需要自己手搓网络模型。普通的一个携程一个TCPConn,还是使用Epoll呢?使用Epoll是用单Reactor还是多Reactor模型呢?之前都只是听说过概念,没有手搓过。为什么Epoll Wait明明没有消息到达却返回了呢?emm,好像确实Epoll用LT比ET简单很多诶,难怪面试官问我这俩的区别。
- 创建好服务器后,我们需要关注服务器的连接状态,能承受多少压力。这时候就需要去分析TCP三次握手四次挥手里面的TIME_WAIT和CLOSE_WAIT等数据,以及连接情况。
- 如果连接状态没有异常,但是htop发现CPU占用率还是很高,或者压测就是上不去,这时候就得排查服务器的当前性能瓶颈是在哪里。后来了解到可以用pprof等工具。
- 发送消息,我们得给每一个消息以及会话设置唯分布式一ID,好像直接UUID或者递增都不太好。于是就去IM即时通讯网了解,去博客了解,学习到了微信的分段式ID生成,滴滴的TinyID,美团的LeafID。有的不严格递增,适合业务,有的严格递增,适合IM场景。
- KCP,惊群效应,Redis集群hash slot...
诸如此类,在我做项目的过程中,逐一被放到明面上。一次次遇到卡壳时的痛苦搜寻,与找到答案后的恍然大悟,皆是在这个摸爬滚打的强化学习过程中最好的激励值。
如何学习?
多抱有好奇心,不要劝退自己
但是除去这些知识外,这个项目让我同样顿悟的,是我们学习的方法。
之前的学习一直都是跟着视频做后端项目,所有的坑点,视频里的老师都给我们踩过了,自己无法摸索。技术框架和知识点我们确实在跟着做这个项目的过程中学到了,但是少了很多主动思考,和主动寻找答案以及解决过程,所给你带来的收获。
前面的项目问题,或者我提到的一些知识点,大家可能没听过,或者觉得太难了太难了,劝退。
但是其实完全不是这样的,我当初面试的时候也是完全不会,面试都想找个地方钻进去。但是你需要做的不是将自己劝退,多进行思考,事情发生的原因。这是因为我当时面试的是游戏服务器的岗位,因为我傻傻地觉得后端开发和服务器开发是完全一样的,所导致的自我怀疑,但是其实他们之间的确就是存在不少的技术差异。
那除去我自己的个例,从一次自己的服务器开发学习中学到的知识,回到后端开发上来。我们又会自己去主动了解多少呢?
- 做谷粒商城,苍穹外卖,他们的分布式ID是如何生成的?为什么可以这样生成?这个可以在这里用那为什么另外公司还要推出新的ID生成器呢?
- 使用Springboot,TomCat,以及Redis的时候,我们知道Redis快,因为内存存储,因为做了优化,因为所谓的Reactor模型。但是Reactor模型到底如何做的呢?
- 项目做完后部署,我们用到了Nginx根据路径进行负载均衡配置的时候,会不会想有没有机会直接基于IP地址,基于TCP或者UDP来分流呢,还有什么其他的负载均衡器呢?
- 部署网站的时候,我们可能在阿里云上看到CDN的配置,点击进去,了解一下CNAME是什么?
- 当美团AI面试的时候,我们抱有一下好奇心,这个视频通话是什么技术,是不是就能知道WebRTC的存在了?
- 做微服务的时候,我们用了Protobuf,那为什么要用Protobuf,不用Thrift,优缺点?还有什么IDL?
- 明明有一致性哈希算法,为什么Redis集群还要自己用hash槽来分片和迁移呢?
此类问题,都是我在做完了服务器项目顿悟后,进行的总结与反思。还有很多很多,明明就在我们手边每天敲打的代码旁边,但是你稍微一问,可能就是一个知识盲点。不要想着不会被问到,因为这一个小问题,可能带给你的收获,不止这一个知识本身。
如何面试?
即使现在开奖的全部是SSP,我也不觉得完全是因为我的技术原因。所以我才写下这篇文章,给大家进行分享。
简历内容的了如指掌,与预判。
很多同学可能觉得写在简历上越多东西越好,来证明知识的广度。广度固然重要,但面试官更愿意你有足够的深度,因为深度能够体现候选人思考的全面,以及学习的自驱力。
例如我的简历中,你需要思考,作为一个面试官可能考你的所有问题。为此,针对这段实习经历,每一个单独的点,我全都整理了:
- 我是如何做的?
- 我为什么这样做?
- 还能怎么做?
- 这样做有什么问题吗?
来对自己的每一个实践点进行反思和质疑,更加深刻的加深自己对知识的理解与认知。
除了对于知识的了如指掌,预判也是必会的技能。依旧拿我的举例子,我提前准备了:
- 为什么用RocketMQ(面试官当然知道你们组默认用,你可以先说“因为公司什么什么的”,但是我觉得是因为什么原因,公司选择了RMQ,对比其他MQ的优缺点...)
- RocketMQ的架构
- RMQ延迟消息底层如何实现的
- 为什么用分布式锁?
- 还有什么其他的分布式锁?
- 分布式锁有什么问题,分别怎么解决?(看门狗,自动续期等)
- 手写一个看门狗+自动续期
- RMQ消息幂等处理
- 为什么选择Protobuf进行压缩,不选其他的
- 你知道Protobuf压缩的原理吗
- 为什么之前没这个索引,你这个索引还有其他的优化方式吗
- ...
诸如上述,当时整理了接近二十多个问题,我自己拷打自己。
所有如上的问题,全部都在面试中被考到过。例如第3问,第10问,如果能答上来,怎么能叫面试官不给你加分呀。
当然独自进行质问肯定还是会遗漏一些,可以直接把你的简历发给AI,让AI针对每个问题生成一些拷打你的问题,也是可以的。我当时也是这样做的~
情商,与自谦。
这里并不是凡尔赛,我自己也是不经意间,或者根据别人的反馈,而推断出的经验。那就是自谦的态度,与说话的情商。当然这个确实也不是一朝一夕能够练成,影响其很大一部分来源于周遭的环境,家庭的培养,以及自己换位思考的能力。但是我确实是想说,这是很重要的一点。
可能有的同学抖音刷到过Hollis,当然作为一个后端同学,我也经常刷,在字节面试前也连麦进行了模拟面试来查漏补缺。当时七月底,每到周末就看他直播模拟面试,有的时候候选人经常打断说话,或者答不出来硬说,给我一个观众都带来了不好的体验,更别说面试官了。当时Hollis就对候选人说,要注意自己说话的语气,弹幕的就说候选人情商太低。
八月初我也约了一场面试,面试整体过程我其实可以说是和腾讯那场差不多了,全程都在被拷打到哑口无言。当然我不会有什想法, 因为当时模拟面试就是为了查漏补缺。出了项目上问题的拷打,一些比较深的八股文,我也是完全答不上来。我以为连麦结束后Hollis也要说类似的,可能准备不充分之类的话。出乎我意料的,他一直在夸我,“这个面试的同学是我模拟两三年来语气最好的,让我想有聊下去的欲望的。就是那种不会,但是你愿意给予指导的感觉。” 好吧,我自己也觉得有点GayGay的了,但是我非常乐意把当时他的话当作夸奖我对面试时候软性素质打100分的证据。
一些截图,也算是证据。当时面完我觉得挺搞笑的,为什么Hollis和观众会这样觉得。不少的感激,获得了大家的认可。因为之前没有人这样说过,所以当时截图和朋友图一乐。
但是说回来,也的确证明了,软性素质在面试中的地位。
回到正轨,
快手1234面:https://www.nowcoder.com/discuss/792809776626356224
字节1234面:https://www.nowcoder.com/discuss/793068978837921792
虾皮12面:https://www.nowcoder.com/discuss/789155766799241216
小鹏12面:https://www.nowcoder.com/discuss/788000430256037888、
百度123面:https://www.nowcoder.com/discuss/789911450901811200
滴滴123面:https://www.nowcoder.com/discuss/787780855581118464
目前开奖了SSP的四家,及滴滴和百度在听到我字节快手的薪资后有说得和业务同步给到最终薪资,本次秋招的面试中,里面其实真的还是有很多问题我没有答出来的。包括字节的1面,3面,4面;小鹏的1面;特别是快手的3面,4面;但是最终都给到了我SSP。
甚至滴滴的1面,字节4面的我算法都没做出来,还是拿到了Offer。
全都在我有限的经验内,让我不得不觉得技术的占比如果是80%,如果你能拿到60%,就算合格。但是想要SSP,剩下的20%软性素质,一定是至关重要的。
结语
到现在为止,努力了三四年,挂了三次课,Leetcode一共只刷了400道左右。大一的完全不会,大二的答案看不懂,大三抄完就忘,到大四上午背了下午忘。现在,看到不会的mid题,90%等死。看到会的题,有点印象,但是70%还得靠背。
我整一个计算机学术生涯,完全不觉得自己有任何的突出,没有室友那连续两年Leetcode全勤打卡的毅力,没有同学们考上985的计算机高校的智商,也没有真的对计算机有多么多么的感兴趣,但是仍然获得了公司的认可。这是我自我矛盾,自我认可的一场经历,又觉得有必要和大家分享,给大家一些心里上的激励和帮助。
从始至终,似乎想做的,是一位别人口中,“好像很厉害”那样的人。
在这个过程中,不断被他人和自我否定,不断给自己洗脑:“开摆,享受当下”也是一种生活方式。
但是真的再回过头看着一路,你会无限的感谢那个自己,以及所有给自己提供过帮助的人。
希望这边文章能给你一些学习的经验,以及心得~
PS:抖音截图若侵删,希望Hollis不怪我。
#发面经攒人品##我的秋招日记#
米哈游公司福利 4855人发布