3

技术岗/算法岗面试如何准备?5000字长文、6个角度以2023秋招经历分享面试经验 - 陈城...

 11 months ago
source link: https://www.cnblogs.com/chengnan113/p/17512520.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

技术岗/算法岗面试如何准备?5000字长文、6个角度以2023秋招经历分享面试经验

  1. 技术岗/算法岗面试流程是什么样的
  2. 技术面都干什么
  3. Coding 机试如何准备
  4. 技术面考察哪些知识,如何准备
  5. 项目八股如何准备
  6. 简历要注意什么?怎么做

大家好,我是卷了又没卷、薛定谔的卷的大厂算法工程师「陈城南」。

本文会从以上6个问题,全方位、全过程的对技术岗/算法岗校招进行介绍以我的「计算机视觉算法岗秋招」亲身经历作为基础将面试经验分享给大家,对非视觉方向、非算法岗的同学我觉得也有很大的参考意义。

「术虽不同,道却相同」。

之前和最近都有不少学弟学妹咨询我的工作上岸经验,因此我总结了一下与他们聊的关键内容,同时补充了一下,写下来这篇文章,供给大家学习与交流,有问题也欢迎指正。

先做下自我介绍,方面大家进行参考。觉得有参考价值的,可以继续看,没有参考意义的,就划过,因为本文的受众不是大佬,而是和我之前一样在秋招面前努力前行的普通人。

但还是需要提醒一下,我的经验,大家不要一味地模仿,需要因地制宜、因人而异地根据自身情况进行选择性吸收。

算法岗(计算机视觉,CV),投的岗位也集中在CV相关的算法,多模态、2D的CV都算(检测、分割、表征学习等),3D的自动驾驶等投了但不多,毕竟差别还是很大的,自己竞争力也不强。最后也拿了几个Offer,最终留在了实习转正的公司做电商CV算法。

由于去年(2023年)很多厂都是不开Offer的,即笔试过了、HR面了、面试也过了,但是不会发Offer(无论是正式Offer还是口头Offer),只有在开薪的时候才会告诉你你有没有Offer,这个薪资愿不愿意接,在此之前,都不会很明确的给你Offer,只有确保你愿意接的情况下,才会给你Offer,不然HC(Head Count)就浪费了。

这些都是去年的经历(个人,非普世),方便大家对比今年的秋招情况进行自我决策。

所以本经验贴的核心思想只有一个:我以我自己的视角,讲述一下我是如何准备秋招的,大家根据自身情况借鉴经验,希望大家都能顺利上岸~

面试流程总览

Q:面试的流程一般是怎样的?

不同公司有区别,但大同小异,技术岗的面试基本由 (机试)+ 一面 + 二面 +(三面)+ 主管面 +(技术加面) + HR 面组成,其中带()的是可选项。

  • 机试就是大家一起线上做题。
  • 面试(一面、二面等技术面)一般为视频面试,无论是否有机试,都大概率有手撕代码环境来考察代码能力(即面对面出题进行coding) ,其余时间则为面对面交流考察算法能力,包括不限于项目经验、算法八股等。
  • 主管面通常也会考察技术,但有些时候主管面和技术面是叠加的。
  • 技术加面为更多的面试机会,通常在主管面之后,一般在主管面后的加面,都有更大的机会获得更高的面评(因为面评好才加面);
  • HR面大多不考察技术,聊一些技术无关的东西,职业规划等等。

Q:技术面一般都干什么?准备面试的优先级是什么?

根据我个人经验,面试内容划分为两类 Coding + 项目(项目包括八股等等),权重55开甚至6-4开。首先,Coding能力一定很重要,一定很重要,很多公司上来就是机试,代码能力不过关直接就pass了,根本没有后面的机会。而且到了技术面,也会有固定的手撕代码,如果代码没做出来,通过的概率会大大降低。这两个不太有先后顺序,有时候上来就是手撕代码,有时候聊完项目后才会手撕代码。具体的内容后面聊。

关于 Coding 准备

Q:手撕代码环节一般是怎样的?

一般手撕代码会安排一道题,用在线编辑器或者自己本地编辑器(开共享)做,如果没做出来可能会提示你,在提示的前提下做出来也是OK的,如果还没做出来,可能会换一道,这个跟面试时间还有面试官的习惯有关。如果没写出来,但思路基本对,写了个七七八八,也是完全OK的。考察的题目数量也不固定,1道偏多,也可能2道,3道甚至更多。核心还是要考察代码能力+思考过程,毕竟面试官的目的就是找能干事的人跟他一起干活。

Q:不同公司的Coding难度如何?如何准备Coding?

我个人的代码能力我认为只有中等(略)偏上,绝对没有ACM大佬的水平,我也做过开发岗的Coding题(帮同学或者自己做),所以对代码这方面相对些发言权,我觉得我的准备方案也更适合普通人。

首先,对于大多数的算法岗,我觉得Leetcode Meduim + Hot Hard 难度就足够了。而且,要做高频题。千万不要傻乎乎的在Leetcode上挨个做,要做性价比高的题。

大多数高频中等题能有思路,稳定做出来,其实代码基础就挺可以了。Hard题的难度浮动其实比较大,一些高频的hard题能做出来就行,这里给大家推荐一个我使用的高频题网站:https://codetop.cc/home,去年亲测,命中率还是很高的。

我个人做Top200左右(大概做了2-3遍甚至更多) ,其实只有第1遍比较通过,后面都背过了..做起来会相对容易些。我也会把 Meduim Top100+ 和 Hard Top+ 做一做,这个和Top200是重叠的,核心思路就是把 Top 的多做做,反复做,做出思路,做出手感。

做题这件事,越早越好,每天早上、晚上、有空时都做一做,没有坏处。有能力的同学可以增大题量。 也可以做做别的题,多看看知乎好贴,但这个网站真的很推荐,临时抱佛脚的最好方式。

关于项目/八股

Q:面试除了Coding,项目时间都聊些什么?

项目时间,面试官的核心目的是了解你的能力如何,是否适配这个岗位,但面试官并不知道你会什么,唯一的话题就是你的简历。所以,简历一定要做好。如何做简历,这个后面聊。

面试官一定会以简历内容为支点,对你的能力进行了解。所以简历上没用的东西就可以少写点,挑核心的内容写,技术岗的特点就是禁止一些花里胡哨项目经历包括实习经历、论文经历、项目经历,这些都算,主要是反映你都干过什么,通过这个面试官就知道你跟他们的岗位是否匹配。至于你对项目的了解深度、广度如何,通过跟你对项目的交流就能弄清楚,所以项目的细节必须要清楚。细节才能反映你到底是不是懂/亲自做了这个项目。细节包括不限于:项目背景和主要内容是什么,你干了什么,遇到了那些问题,如何解决?当然,如果面试官对你的项目并不懂,他可能就对细节相对没那么关注,毕竟你说错了他可能也不清楚。但细节一定不能瞎说,要实事求是,改编不是乱编

面试官还会以项目内容为支点,对你的基础能力(八股等)进行了解。比如你的项目中用了Transformer,用了ResNet,面试官可能就会考察注意力机制、考察残差结构。用了Adam优化器,考察优化器的大概原理,以此类推。这些知识其实已经属于八股的范畴,但是这些也跟你的项目息息相关,所以这些内容对你来说属于重要的八股,需要有限学习

Q:项目、八股等内容如何准备?

自己做过的项目,搞清楚,搞熟这是最基本的,与项目相关的八股也是需要优先准备的。

  • 除了这些,更广义的八股可以参考网上的一些帖子进行学习。比如我是做计算机视觉表征学习,那么目标检测、语义分割这些同为计算机视觉任务的八股也是需要看的。看这些八股时,由于精力原因,大家肯定不会把细节都搞懂,就尽量看一些high-level的知识做到对其他任务有整体的认知就行
    • 比如检测就知道经典的网络框架(one-stage, two-stage),分别有哪些网络(YOLO,FastCNN系列),有何特点(为什么从FastCNN优化为FasterCNN)等等,都是宏观的知识。
    • 语义分割基础的U-net, encoder-decoder框架等等,以及对应的网络,金字塔、全卷积等等,类似的知识点。
    • 当然还有一些别的领域,主要聚焦在应用场景大的任务就行,太偏了..性价比低
    • 至于更多的项目细节,没看就没看,面试官问到了就诚恳承认没搞过这个方向,不是特别了解细节。但这些都有一个大前提,就是你对自己的方向比较懂,但是其他方向都是跨领域,所以了解有限

当然,如果你是搞NLP的,或者搞开发的,也是相似的原理,在自己深挖的领域重点学习,在相关的领域也需要了解宏观的知识:最后推荐我看过的算法相关面试资料:

Q:知道了面试要问什么,所以现在简历应该怎么做?

技术岗,一定杜绝花里胡哨,不用卡一页纸的限制,有什么就写什么,但是也不要太啰嗦太长,没用的、多余的区域就不用写了,应届生2页以内都合理,非常优秀长点也行。

做简历有很多网站,大部分都是付费的,有些同学使用Latex/Word等等做,这个见仁见智,我个人喜欢用超级简历的,每人有一个简历的免费资格,对我来说基本够用了,白纸黑字,很简洁,毕竟技术岗面试官关心你的技术,而不是你多彩的简历配色

  • 考虑到做简历需要根据个人情况而定,这里我只说几个宏观的大理论纲领,基于这几个条例进行做基本就没问题:

    • 简历主要内容应该有这几个基础项:个人介绍、所修课程、掌握技能、项目/实习/论文/比赛经历、个人评价;
    • 简历上写的东西必须懂!必须比较了解!因为简历是面试官跟你聊天的支点,这也是你已知的可能问题,所以必须提前准备好;
    • 个人评价我刚开始也没有,但是看了一个朋友的简历后我发现这个还是有用的,可以描述个人性格友好、性格友好乐于交流、刻苦努力等等,以凸显自身优势,毕竟要是技术比不过别人,在性格上差异化竞争也是合理的。
  • 最难写的其实是项目经历这块,无论是项目、实习、论文和比赛,都是做了一件事,写简历时就要讲清楚做了什么事可以遵循以下的“经历三段论”原则

    • 整体背景:这个项目是干什么?
    • 个人付出:我在这个项目里干了什么?(用了哪些技术,做了哪些优化)不用很长,很细,概述就行。
    • 个人成长:我在这个项目里收获了什么,取得了什么成长,得到了什么

每段就1-3行就行,不用很细,粗略的说就行,给一个我自己的例子,个人付出和个人成长其实内容分的不是很清,大家写作时自行划分,主要还是三段式:项目干什么?我干了什么?我收获了什么

Q:如果在实习,如何平衡实习转正和提前批/秋招准备?

实习转正如果有可能、岗位尚可的话,建议大家坚持实习,争取拿到转正机会,毕竟实习转正会相对更容易些,而秋招的难度会大一些。但是,在实习期间一定不能松懈准备秋招,工作空闲的时候可以coding一下,或者可以看看经验贴、面经、项目知识、八股等等,这些都是文档的形式,作为学习的话不容易被发现。

其实这篇文章还是有很多秋招问题没有讲到的,但是一篇文章又说不清,大家有问题的也欢迎交流,全网同名「陈城南」,搜索来交流就行。

精力有限,如有错误欢迎指正。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK