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

news2024/11/16 0:32:34

  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的,或者搞开发的,也是相似的原理,在自己深挖的领域重点学习,在相关的领域也需要了解宏观的知识:最后推荐我看过的算法相关面试资料:

  • https://github.com/zonechen1994/CV_Interview:这个帖子挺好的(强推),我当时主要看深度学习方向的(是我的方向),我个人觉得,重复率还是挺高的,也可能是运气问题,但是真的挺不错。
  • 我也看过一点 百面深度学习/百面机器学习 这两部书百面深度学习很多知识都跟上面这个帖子是重叠的,可能就是同样的,但是不重要,重要的是内容好就行。书籍资源:https://github.com/hbchen121/algorithm-interview-materials
  • 计算机视觉算法 面试必备知识点(2022)_视觉算法面试_奶盖芒果的博客-CSDN博客
  • 还有别的…大家自己搜索

关于简历

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

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

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

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

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

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

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

关于实习

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

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

收尾

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 适配全面屏

1、manifest.json 文件修改 app-plus 下 添加 "safearea": {"background": "#00000000","bottom": {"offset": "auto"}},2、部分页面设置全屏(登录页面) methods: {//设置页面全屏onShow(…

SpringBoot(二)starter介绍

做Java后端的同学可能都知道,在SpringBoot诞生之前,还有传统的Spring。这种Spring项目想要运行,需要导入各种依赖,而且还要在 XML 配置文件中一顿配置,非常痛苦。但通过上篇博客我们可以看到,SpringBoot项目…

事务与隔离级别

事务四要素 原子性(Atomicity):要么全部完成,要么全部不完成;一致性(Consistency):一个事务单元需要提交之后才会被其他事务可见;隔离性(Isolation&#xff…

azure databricks因为notebook 日志打多或者打印图片太多,往下拉卡死怎么处理

1、同事碰到个问题,databricks 页面卡死不动了 2、我。。。。。。。。测试了下搞不定,找azure的工程师,特此笔记如下图 !](https://img-blog.csdnimg.cn/5db9756d0e224d15a9a607561b47591f.png)

怎样自定义starter模块和使用

一、 自定义Starter模块 在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot的starter(起步依赖)。 1.1实例–阿里云OSS的配置 前言:我们在使用阿里云…

windows下MySQL 5.7.31的安装

文章目录 安装步骤检查是否安装成功配置环境变量 安装步骤 双击安装包mysql-installer-community-5.7.31.0.msi选择自定义安装“custom”,点击next “Developer Default”是开发者默认“Server only”仅作为服务器安装“Clientonly”仅作为客户端安装“Full”是完…

华为OD机试真题 Python 实现【红黑图】【2023Q1 200分】,附详细解题思路

一、题目描述 众所周知红黑树是一种平衡树,它最突出的特性就是不能有两个相邻的红色节点。 那我们定义一个红黑图,也就是一张无向图中,每个节点可能有红黑两种颜色,但我们必须保证没有两个相邻的红色节点。 现在给出一张未染色的…

晶振的作用,高速晶振优缺点

前言 (1)我们都知道晶振是一款MCU的心脏,因为长期用这种抽象的概念进行解释,导致很多人不知道这个心脏的实际作用。因此,我在这里详细的介绍一下晶振对于MCU的实际作用。 (2)接下来我将会在MCU处…

一零六一、Jupyter notebook文件默认路径修改方法

1 .打开 Anaconda Prompt,输入命令 jupyter notebook --generate-config 根据上面运行处的路径打开 C:\Users\WW.jupyter\jupyter_notebook_config.py文件,可以使用记事本打开。 2 .直接CtrlF 搜索 ,找到 #c.NotebookApp.notebook_dir ‘’…

Spring 2023面试题(2)--Spring mvc 运行流程

1. Spring MVC的运行流程主要包括以下步骤: 用户发送请求到前端控制器(DispatcherServlet)。前端控制器接收到请求后,初始化处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter&#…

Crypto(小学期培训)

你被骗了 url编码直接解 进入网站、找到时间 flag{2020-01-01 07:43:23} 梅开二度 凯撒密码 y和h相差17 三羊开泰 词频分析 这是??? 010编辑器打开 上面是密文 下面是密码表64个,想到base64 找到原来的数值 与之对应&a…

JVM GC ROOT分析与垃圾收集器原理分析(三)

目录 一、GC ROOT 1、虚拟机栈中的本地变量 2、static 成员 3、常量引用 4、本地方法栈中的变量 5、类加载器 6、线程 二、回收算法 1、标记和清除 2、复制算法 3、标记整理 三、垃圾收集器 1、新生代-复制算法 2、老年代-标记清除/整理 3、垃圾收集器分类 1、…

Python如何向一个空列表中append列表

最近在做回溯组合问题时–力扣链接,遇到了向一个空列表中append多个列表。 于是,我原来的代码是: def main(n,k):result []temp []def backtrack(n,k,startIndex):if(len(temp)k):result.append(temp)returnfor i in range(startIndex,n1)…

group by rollup

group by rollup rollup与group by组合使用可对分组结果进行进一步的汇总(相当于对分组结果加一行小计)。 mysql : SELECT CASE WHEN GROUPING(姓名)1 THEN 总计 ELSE 姓名 END AS 姓名, SUM(数值1) 统计数值1, SUM(数值2) 统计数值2 FROM 表名 GROUP BY 姓名 WITH ROLLUPora…

SpringCloud微服务项目实战(一)---搭建SpringBoot项目

目录 SpringBoot与SpringCloud的关系环境配置开始搭建SpringBoot项目问题总结 SpringBoot与SpringCloud的关系 Spring Boot主内,能够快速搭建,快速开发单个微服务,搞定了数据层访问、RESTful 接口、日志组件、内置容器等等基础功能Spring Cl…

shardingsphere-proxy 实现mysql单库分表

1、docker安装mysql5.7版本 拉取mysql的镜像 docker pull mysql:5.7创建mysql的配置目录,日志目录,数据存储的目录 mkdir -p /home/sunyuhua/docker/mysql/conf mkdir -p /home/sunyuhua/docker/mysql/logs mkdir -p /home/sunyuhua/docker/mysql/dat…

微信小游戏:超大数值计算

测试代码: import {large_number} from "./large_number";const {ccclass, property} cc._decorator;ccclass export default class NewClass extends cc.Component {property(cc.Label)label: cc.Label null;propertytext: string hello;// LIFE-CYCL…

操作符重载的概念

下面的复数解决方案是否可行? Add 函数可以解决 Complex 对象相加的问题,但是 Complex 是现实世界中确实存在的复数,并且复数在数学中的地位和普通的实数相同 为什么不能让 操作符也支持复数相加呢? 操作符重载 C 中的重载能够…

四、OkHttp_连接池

预备知识 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。 大量的连接每次连接关闭都要三次握手四次分手的很显然会造成性能低下, 因此http有一种叫做keep-alive connections的机制(HTTP1…

【每日一题】Leetcode - 10. 正则表达式匹配

题目 Leetcode - 10. 正则表达式匹配 解题思路 预处理正则表达式,合并同项,比如: "a * b * c * . * " -> " . * "更加预处理后的正则表达式,构建NFA通过NFA状态转移条件一个一个匹配字符串字符不匹配的状态要回退匹…