24届博-F-互联网大厂算法工程师
可以介绍下您毕业后的工作经历吗?
我是2021级复旦大学计算机AI方向博士生。
博四快暑假的时候,即2023年3、4月份,我开始找暑期实习。我投了大约20家互联网公司,包括腾讯、阿里、vivo、oppo、小米和商汤等。由于转专业的原因,我的代码能力较弱,面对算法岗位的笔试和面试显得尤为困难。再加上当时yq刚过,就业市场非常惨不忍 睹,最终我只拿到了3家——商汤、vivo和华为的实习offer。
我的秋招经历相对顺利,因为AIGC岗位需求增加,我在9、10月份的面试中拿到了包括腾讯、阿里、字节、得物、海康、小米、京东、vivo、oppo和荣耀等AIGC算法工程师的offer。
对于想要找算法岗工作/实习的同学们来说,你认为哪些方面的能力更重要一些呢?
根据我的经历,对于找算法岗的工作,有几个方面是特别重要的。
首先,研究方向与业界应用的匹配程度是最重要的。我从2019年开始就专注于AIGC领域,而这个领域在近年来变得非常热门,所以在找工作时,这一研究方向的选择对我非常有利。我有一位同学,他的研究方向是比较冷门的领域,即使他有很多顶级会议的论文,但找工作也很困难。因此,选择一个与业界需求匹配的研究方向至关重要。如果选择了一些冷门的方向,可以尽量往主流方向靠,比如图像到视频翻译或者视频处理等。我投递的岗位与我的研究方向匹配度高,因此和面试官的交流也很顺利。
实习经历也非常重要。面试中,他们更关注我的实习经历,而非科研经历。在研究生阶段,实习经历比论文更能体现你的实际能力和业界经验。我的第一次实习面试是腾讯的视频号团队,他们看重的是我在视频编辑方面的研究经历,而不是我是否有发表过顶会论文。因此,在找实习时,公司更看重你的研究方向是否与他们的项目匹配,而不是你的论文数量。
算法题的能力也不可忽视。面试中经常会有笔试和现场写代码的环节,这是衡量你基础编程能力和算法理解的重要方式。一般照着Leetcode的总结手册刷熟100题基本就好。我在面试过程中发现,掌握一些经典的算法题,敢于向面试官要提示,并提前讲解思路,都是非常有效的策略。
很多公司的面试官很喜欢在面试中问业务场景题,考察你在实际业务中解决问题的能力,这是我印象最深刻的部分。这不仅需要你对自己研究方向有深入的了解,还需要了解相关领域的一些基本知识和最新发展。这时,平时积累的知识和实践经验就非常重要了。八股倒是不用太用力准备,现在问的不太多。
总的来说,找算法岗的工作,研究方向的匹配程度、实习经历、算法题能力以及广泛的知识面和解决问题的能力,都是非常重要的因素。
对于想要找算法岗工作/实习的同学们来说,你认为哪些方面的能力更重要一些呢?
我之前一直在为找工作做准备,但实习之后我突然觉得自己更想去学术界,而不是工业界继续工作,这与我的实习经历非常有关。尽管听过很多人对互联网的讲述和吐槽,但是只有亲身体验过才能真正理解他们说的东西。
去年,我在“黑羊”进行暑期实习。“黑羊”的工作制度比较弹性,只要每天待够八小时就可以了。我当时在北京,leader在上海,我们同事也不多,所以工作比较自由。
在“黑羊”实习时,我的mentor对我非常好。虽然leader给我压力,但他也帮我顶住这些压力,给我时间去看文章和做研究。因此,我感觉时间比较自由,虽然最后没有做出什么特别的成果,但他们也没有责怪我。所以总体上,商汤的实习体验还算不错。
然而,一周三次的汇报让我感到特别心累。我们周一开组会,周三有早会,周四还得交周报,这种频繁的汇报和周报让我压力很大。另外,公司的OKR(目标和关键结果)文档,所有人都能看到组里同事的目标和进展,这让我感觉非常累。每天都要完成很多任务,没有休息的时间,这就是我对互联网公司的初印象。
我个人在tx的实习体验也不太好(实习和工作体验极其看组,不针对任何公司)。尽管tx的公司文化和人文关怀非常好,经常发礼物和举办活动,但我所在的组非常卷,工作非常累。每天晚上9:30之前基本没有人走。模型和业务需要频繁迭代,经常一个月迭代一版,我看到项目上线前,项目负责人和相关人员会待到凌晨一两点,甚至通宵,这样的工作强度让我无法接受。
虽然同事们都很好,但互联网公司业务组永远在与竞品竞争,工作压力非常大。很多时候,ld会把上面对他的压力传递到下属身上。无处不在的owner文化,即使问题可能出在与你无关的数据或算法上,最终锅也是作为owner的你来背。
总的来说,互联网公司的工作让我感觉自己像螺丝钉,随时可以被替代。这种被打压、被push的感觉让我很难受。虽然在职场上,这种被骂和被压迫的情况很普遍,但我实在忍受不了这样的环境,所以我决定离开,试图寻找更自由的生活。
在互联网实习也有很多好处。首先,我在“黑羊”实习时最大的感受是,我们在学校发的文章和做的算法真的有人在用,他们使用的都是最新的技术。这对我影响非常大。我之前觉得在学校发文章没用,没人会用,但其实公司会看最新的文章,并把这些算法用到产品里。
其次,实习让我学到了如何做应用和产品开发。我了解了如何根据客户的需求来设计和改进产品。在公司学习的效率比在学校高很多,实习的三个月可能相当于在学校的半年,因为他们一直push你去看新的东西,掌握新的知识。
还有一点是公司的团队合作氛围。在公司里,大家都在为同一个目标努力,虽然每个人做的小方向不一样,但大家都在合作。而在学校的实验室,每个人的研究方向都不同,感觉像是单打独斗,缺乏合作和交流。在公司里,大家可以一起讨论和交流,这种氛围让我觉得很好。
另外,公司的节奏比较快,学习效率也更高。平时leader会在群里发一些最新的国内外工作,相当于直接把信息喂到你嘴里,而在学校,很多时候需要自己去找信息,还经常会漏掉一些重要的内容。
还有mentor和一些有经验的同事,他们在业务和写代码方面都有很多经验,他们能迅速找到问题的所在并有针对性地进行改进。不是说人家手把手教你,而是通过观察别人怎么解决问题能学到很多东西。
在找工作时,了解内部情况非常重要。可以主动找里面的人问一下,但要设计好问题,不直接问工作时间或压力,可以旁敲侧击获取信息。此外,可以观察一些小细节,比如同事的工作时间,来判断实际情况。
在薪资方面学姐有什么信息和经验可以分享吗?
互联网具体的薪资可以看某o小程序,上面挺全的。关于薪资构成,不同公司的情况也有所不同。有些公司会把大部分薪资放在年终奖里,这其实是非常不稳定的,因为年终奖的发放与绩效挂钩,不一定能拿到HR说的数。而每月的基本工资是法律保障的,所以更稳定。比如某B公司会把大部分薪资放在每月的现金上,而年终奖和期权会相对少一些。我个人觉得,去年终奖占大头的公司会感觉被束缚住了,如果想考虑离职还得等年终奖发完才能走,就不那么自由了。
另外,社保和公积金的缴纳比例也很重要。比如,有些公司只交5%,而有些公司交12%。选择那些缴纳比例高的公司会更有利,因为公积金是双边缴纳,公司也需要按这个比例将资金放入你的公积金账户,公积金比例越高,公司额外为你交的钱越多。 关于薪资argue,可以在B站上搜一下,讲的都挺全面的。
我在这里主要想强调一下,还是尽可能的多拿其他家的offer作为筹码,就算不想去其他公司也最好把全部流程面完拿到offer。在谈判过程中,不要直接问HR是否可以提高薪资,因为他们通常会说不行,你应该通过展示其他公司的offer和表达对这家公司的兴趣来争取更高的薪资。你需要表现出你非常想加入这家公司,但不能贬低其他公司,也不能威胁说如果不给心里的预期总包就去别家公司,然后请求HR帮你争取更高的薪资。在这个过程中,保持良好的态度和沟通非常重要。
在这个行业里,算法岗位的职业晋升路径和发展方向有哪些?
首先,频繁跳槽是现在最普遍的情况。通过跳槽,薪资可以涨得非常快,每次跳槽基本上能涨30%到50%,甚至更多。虽然这种方法在前几年确实能快速提高薪资,但对职业连续性并不是很好。我个人可能不会这么频繁跳槽,因为虽然频繁跳槽能让薪资快速上涨,但长期来看,对职业发展可能并不理想。
其次,在同一单位晋升成为小领导,这种职业发展路径现在变得非常难。互联网行业已经进入存量时代,上面的领导岗位被占满,新人的晋升空间很有限。比如,我在实习时看到一些同事已经工作八年了,还是普通员工,没有升到领导岗位。所以,现在寄希望于在原公司内部晋升已经不太现实了。
关于从大厂跳槽到二线或小厂当领导,这其实是一种不得已的退线。很多人是因为在大厂不想干了,干不下去了或者被裁员才会选择跳槽到二线公司。而且,跳槽到二线公司能否当上领导也不确定,并不是从大厂出来就能保证找到理想的职位。
回家找安稳的工作或者进入体制内,这些选择也非常困难。体制内一般只招校招生,从社招进入的机会很少。而进入高校当老师也是非常理想化的情况。公司更关注的是业务和盈利,不会把主要资源投入到发表论文上。因此,在公司很难积累科研成果,除非去的是研究组,而高校注重持续的学术和文章积累。
总的来说,现在最普遍的情况是频繁跳槽,但这也是无奈之举。长期留在一家公司,工资涨幅非常有限,而通过跳槽可以获得更高的薪资。很多公司更倾向于招新人而不是提拔内部员工,因为这可以避免内部矛盾。半佛有篇文章说过为什么公司宁愿招一个外面来的人来当领导,也不愿意提拔原先的员工,可以去看看。
在互联网公司,如果升不上去领导,确实会有一个薪资的天花板。工资一般是跟职级挂钩的,如果职级往上升,工资就会涨。但到了一定的职级,比如T12或P8,继续往上升就很难了。
互联网算法岗真的会有很显著的裁员压力吗?在校的同学进入到行业之后,该以一种什么行为和心态去应对这种裁员压力呢?
确实会有裁员压力,但这并不完全取决于个人能力,主要是看运气,看整个业务线的情况。裁员时,公司往往会裁掉整个业务线,而不是针对某个具体的员工能力。例如,像之前的字节游戏项目和达摩院的自动驾驶项目,公司裁掉的是整条产品线。
被裁的标准主要是看业务是否赚钱。如果你所在的业务比较核心和盈利,就不用太担心被裁员。但即使如此,是否被裁也有一定的运气成分。如果你在边缘业务或者公司为了试水搞的新项目中,确实有很大的概率会被裁掉。
进入行业后,心态上需要做好准备,理解这不是个人能力的问题,而是公司整体战略调整的结果。行为上,尽量选择那些核心和盈利的业务线和岗位,这样可以降低被裁员的风险。同时,要保持持续学习和提升自己的能力,以应对可能出现的各种变化。
行业近年来的主要发展趋势是什么?您预测未来几年内,(在政策/AI技术等因素的影响下)行业将会如何变化呢?对于进入行业的赛道选择,有什么建议吗?
我觉得如果现在去做一些大模型的话,是在算法领域里比较好的一个选择。大模型的行业前景好,薪资高,而且裁员压力相对较小。就算被裁员,也很容易找到下家,因为现在很多公司都需要做大模型的人。
不过,大模型工作也有其取舍之处,主要是工作压力大,任务繁重。大模型组通常分为两个方面:一个是大模型本身的迭代和发版,这个过程是无止境的,需要不断更新迭代;另一个是将大模型应用到其他小的垂类场景和业务中,比如一些公司会接其他兄弟部门的业务,用大模型去做一些具体的项目。这些都需要你做得非常好,因此工作强度很大。如果你精力充沛,比较能卷,我很推荐你去做这个方向;但如果精力差一些,就不太建议选择这么累的工作。
汽车新能源行业也算是一个风口,但相对大模型AI稍微差一点。去年比亚迪等公司招聘很多,但今年招聘明显减少。做新能源的感觉也很卷,压力也很大,因为市场竞争激烈,很多公司都在降本增效。
从趋势来看,AI和大模型现在仍然处于上升阶段,未来会有更多的应用场景。可以关注一些领先企业如OpenAI的动向,他们的决策和开发者大会往往让人意想不到,而国内很多公司仍在追随和模仿国外的创新。国内很多人疲于应付工作,没有多余的精力去做创新。 现在进入AI行业和学计算机是非常好的选择。算法比开发稍微好一点,但开发也有它的优势,比如可以积累经验并接一些外快。总的来说,现在AI行业的前景比其他行业要好一些。
如何在找实习/校招过程中判断offer质量,找到最适合自己的offer呢?
首先,有个宗旨:在选择实习公司时,公司的title不如公司能给你的资源和重视程度重要。实际做的工作(能写进简历里),积累的经验和学到的东西才是最重要的。
然后可以从三方面去判断。
第一点是详细地看一下这个职位的JD(职位描述)。如果这个岗位是通过内推人推你进部门的,可以直接去问内推人或者在组内的同事。如果有这些渠道,我觉得这是非常好的选择。可以直接问内推人或者部门里的同事,了解这个岗位的工作内容是什么。
第二点非常重要,就是看面试过程中自己的体会。因为面试时,一般一面是你的mentor,二面是你的leader,三面是大leader。跟他们沟通的感受很重要,这其实就是你之后工作的感受。有些面试官给人的感觉是比较压抑,不苟言笑;而有些面试官则是平等交流,比较关注你的想法。这种沟通的感觉能反映很多东西,是非常值得注意的。你可以通过面试中的感受来判断这个工作是否适合自己。 另外,也可以问HR,进去之后的mentor和leader是不是你的面试官。有可能你进去之后会面对其他同事,这也是需要了解的。
第三点是,我当时拿到蓝厂和“黑羊”的offer也非常纠结,不知道该选择哪一个。我选择直接去加这些公司的leader的微信,提前跟他们聊天,了解工作内容。例如,我问他们我进去了之后需要做什么工作,并和他们直接沟通。这种直接的交流可以帮助你更清楚地了解工作内容和期望。
比如在蓝厂,他们会主动问我之前做了什么,并对我之后的期待是什么。他们直接告诉我,我可以延续在学校做的一些工作,协助他们发文章之类的。同时,他们还会问我如果离开后是否能继续帮忙修改文章。这些沟通让我对工作内容和公司的期望有了更清晰的认识。 此外,进入公司后,也可以适当提出自己的诉求。例如,我在“黑羊”时,他们一开始让我做业务,但我直接提出希望做研究工作,最终他们同意了。所以,适当地争取自己想做的工作内容是可以的。实习的试错成本比较低,如果不满意也可以再找下一份工作。
之前你提到算法岗位面试官喜欢问业务场景题,而这些问题的回答不能是网上搜到的普通答案。那么,请问面对这种业务场景题,我们应该怎么准备?除了平时关注实验结果外,还有没有其他准备方向?
对于无法准备的问题,我也有过迷茫。网上搜不到答案的情况下,我觉得平时的积累很重要。
可以多刷刷知乎和关注一些公众号。比如说,当有新的文章出来时,新智元、量子位这些公众号基本上都会推送相关信息,他们也经常关注OpenAI的动态。多关注这些公众号,可以了解最近发生了什么新事情。
另外,可以特别关注每篇文章的introduction和conclusion部分,了解他们总结的一些限制和不足之处。平时看文章时,可以留意文章中的图表,注意一些可能连作者都没发现的bad case,这些细节也许会在未来帮助到你。
积累这些知识其实跟写语文作文有点类似,没有办法突击准备,只能靠平时的积累。我觉得还可以把面试中问到的问题与自己做过的项目联系起来。
比如,有一次我面试时被问到一些非常细节的问题:有图案的长袖怎么保留图案,衣服上的字母或商标如何在换到另一个人身上时保留。这类问题很细节,我也回答得不好,也不知道如何准备这类问题。
作为过来人,你有什么发文章方面的经验可以分享吗?
我现在逐渐觉得发文章是一个非常运气的事情,但从自己能改变的角度来看,有一些方法可以提高成功的机会。
首先,发文章最难的是获取一个好的idea。这是个非常宏大的课题,因为涉及到很多方面,一个是导师的指导,一个是自己的努力。我觉得最重要的是找到一个可以手把手带你的人,不管是小老板、学长还是老师。能够找到一个能给你提供想法并指导你的人是最理想的情况。
如果你只能自己做,就像我和我们实验室的人一样,基本上是单打独斗,那就只能通过大量看文章来寻找创新点。现在的方法更新非常快,一两个月甚至两三个月就有新的方法出现。所以你需要不停地跟进,通常是去找顶会的文章,搜关键词,然后看哪些文章引用了这些顶会文章,去Google Scholar上查看这些引用。这些引用的文章一般都是非常新的,可能是最近几个月的,然后去找自己感兴趣的文章来看。
在一段时间内大量看这些文章之后,你可以总结出一些方法。比如,大家用的同一个框架,或者获取某个特征时常用的方式,这说明这种方式效果比较好。你会发现一些通用的模块,这些模块可以总结出来,基本上很多事情都是平衡的问题,把做得好的方法结合起来,一般都能取得不错的效果。
做科研的过程中,会看到很多平衡和组合的问题。这些都是我们在不断学习和研究的过程中需要注意的。
另一个有规律的事情是“以史为镜”。因为现在的发展路径常常按照以前的发展路径走。例如,video按照image的发展历程走。所以,如果你做一些比较新的方向,可以去看以前的模型或者一些低维模态的方法。很多东西都是共通的,新的模型也是从无条件到有条件,scaling也是从小到大,基本上都是按照这种发展历程走的。所以,如果你想做出新的、更好的工作,就需要去研究之前的规律。
第三个点是文章的写作过程和评审过程。我觉得这非常看运气,但讲故事的能力非常重要。讲故事不仅是要会包装,要包装出你有创新性,做的东西比较新,还要让评审能看懂。不能自己觉得自己做得很牛,但写得让人看不懂或者很混乱。语言要准确、精确、尽量简单,只要能把事情说清楚就好。
另外,还要反复强调你的贡献,分布在不同章节、不同地方。章节顺序诉说着你的文章逻辑和故事,每个章节的第一句话非常重要。框架图要画得清晰明白。我之前的文章就因为框架图画得让人看不懂导致文章被拒了很多次。这些非常细节的东西都很重要。 最后,审稿人对实验结果非常看重,你的实验结果必须要好,能够达到SOTA。结果如果比不过别人,就非常难被接收,大部分评审重视你的实验是否足够华丽、丰富、全面胜过你的motivation。实验要做得很完整,文章要投稿时就写的比较完美,后面rebuttal的补救作用非常有限。
可以复盘下您在校招时的经历和心得吗,如果能重来一次校招您会做哪些改变呢?
如果重来一次,我可能不会去校招了。我可能会选择直接找博后,然后走教职。但是如果不找工作不经历校招,我又无法做到现在的坚定,所以一切都是最好的安排。
如果以找工作为目标,重来一次的话,我会尽早准备。从研一研二开始,我会去看那些公司官网上的JD,了解他们需要什么样的人,知己知彼。很多公司都会在JD上写明希望你在什么会议上发过文章,了解哪些技术,掌握哪些技能,比如C++、diffusion、Web UI,或者机器学习的某一部分。按照这些标准去塑造自己,提升这些方面的能力,会对之后的实习和求职有很大帮助。
我觉得尽早做准备,尽早去实习,多做一些实习,会比较好。这样在真正求职的时候,你已经知道了自己想做什么方向的工作,同时具备了公司需要的能力,也有了相关的实习经验,这样会更有竞争力。
对那些迷茫于找工作的在校学弟妹们,您有什么寄语吗?
信心比金子更珍贵,不要因为被拒很多次就怀疑自己。我觉得很多时候被拒不是因为自己能力不行,而是很多环境因素,比如说人家HC可能太少了,竞争者又太多。还有一类原因是自己的方向可能跟人家没有那么match,然后人家找了一个能力可能稍微比你弱一些、但是更match的人选。所以,不要因为这些被拒绝和失败就怀疑自己的能力,不要想太多,更聚焦于让自己每次面试都能进步一点点就可以了。
具体到实操的话,可以给自己的每场面试都录一下音,然后复盘一下在哪些问题上回答不出来,哪些问题觉得自己回答得不太好。包括可以记下一些面试官问的问题,会发现面试官问的都大同小异,可以把这些问题都总结起来,有针对性地去准备。
面试过程中的气场和心态还挺重要的。我有一场面试,面试官对我的评价是觉得我非常开朗、积极乐观,这让我很惊讶,还是第一次有面试官对我作出这么软性的评价,那次主要也是因为面试官很温柔耐心,我和面试官聊得很愉快,气场比较合。其实很多软性的东西,比如自己的热情,是无法掩饰的。有些面试官说,他们觉得一些候选人眼睛里有光,真的热爱这份工作。所以,表露一些真实的自己,不要紧张,不要害怕。刚开始紧张是很正常的,没关系,慢慢地面多了,尝试多了,就会不那么紧张了。
还有一点是把时间和精力放在自己能改变的、可以准备的方面,那些无法干预的公司原因就不要管,不要影响自己的心情和心态。秋招是一个非常煎熬的过程,首先持续时间很长,其次要面很多场,真的很累,一遍遍地讲自己做过的工作,非常枯燥,还经常因为不知道什么原因就挂掉了,人家也不会告诉你为什么挂掉。这时候容易自我怀疑,觉得是不是自己不好。
当开始怀疑自己的时候,事情就开始往不好的方向发展了。所以,最好还是心态好一点,要相信自己可以找到工作,就算这次找不到,还有春招。
另外,早准备非常重要。尽量去投提前批,不要觉得自己没准备好就不投,觉得还得再准备一两个月再去投。没有比最早投更好的了,因为早投的话,人家把HC确定下来,后面就可能没有机会了。捡漏的机会一般都不太好,所以还是得早准备,自信一点。 请学弟学妹们相信一切都是最好的安排,谢谢你们看到这里。 如果有进一步的问题,可以找主编联系到我。