写在前面
从七月的提前批开始,一直熬到现在,终于上岸,其中的辛酸、焦虑已经不想再回首。
距离上一篇已经过去了好久,原本计划的内容也早已被太多太多的事情挤到根本想不起来,趁着签过offer后难得的空闲时间,对这段时间的笔试面试做一个总结,希望能给同方向的朋友提供一点点参考
一、投递
题主的研究方向是NLP中的知识图谱(KG),由于主要使用深度学习方法因此也考虑这方面的职位,同时由于学过一段时间前端开发以及做过全栈开发的预研项目,因此在投递初期也考虑一部分开发岗。以下职位按顺序优先投递:
NLP算法——深度学习算法——机器学习算法——人工智能算法——算法研发——前端开发——后端开发——测试开发——运维——其他
之所以这么排列主要是根据自己的科研方向以及自己的职业规划,身边的不少同学都抛开了自己的方向选择做开发,在今年这样的行情之下的确是一个比较好的选择,但我个人更希望能在未来有更好的发展,因此宁愿放弃大厂的开发岗也要优先选择符合自己预期的算法岗位。此处的考量因人而异,身边也有不少同学无论如何不想996所以拼命往国企中挤,也有向其他行业转的同学,但不管做怎样的选择,都要先深入了解自己的需求和期望,应届生的入场门槛低,第一步一定要踩得踏实。
二、笔试情况
不管是提前批还是正式内推,今年似乎都没有免笔试的情况,投的大大小小的厂都安排笔试环节,因此还是免不了和海投的群体一起在笔试的海洋里浮浮沉沉
笔试经历了太多,按照平均每个厂两次笔试来算,至少笔试了200+,个人来说还是比较感谢这一段经历的,在不断地笔试过程中复习到了很多已经忘记的知识点,熟悉了编码的过程,也算是给之后面试手撕代码做了储备。接下来写一些主要的笔试内容,选择题请去各大笔试平台自刷,只说编程题。
算法岗
数据结构的使用:包括栈、队列、列表、集合、字典、类、树、堆、图的各种操作,其中印象最深的是考过一次森林转大顶堆的题,可以说是一题更比六题强……
功能实现:矩阵转置、旋转,构建螺旋方阵(考了5次),回文数,回文字符串,字符串去驼峰、去重,最长单调子串,最长公共子串,银行家算法实现,还有像简单的斐波那契数列、排列组合之类的可以忽略不计
算法实现:贪心、递归、回溯、深度优先、广度优先,树的前中后序遍历、动态规划中的各种背包,图剪枝成特定的二叉树,哈希表实现,各种排序
机器学习方法:朴素贝叶斯、DBSCAN、KNN、K-means,手写sigmoid激活函数,BP神经网络
性能方面:几乎每一道算法题都要考虑时间复杂度和空间复杂度,如果使用非C++的话基本上都会限制在一个很小的范围中(特别强调鹅厂,卡得简直变态)所以少用递归!拒绝遍历!!
开发岗
考的内容与算法岗相近,确切地说技术研发的笔试题基本上是相同的,以下是一点细微的差别:
前端开发:写一个简单的登录窗口,提供一个账号,完成HTML显示、css规范化以及JS业务逻辑
后端开发:主要以实现各种的业务逻辑为主,也考过客户端和服务器的内容,题主不会所以不提
测开:用黑盒方法写一组测试用例,用白盒测试代码段等
运维:主要是网络编程,并不了解
三、面试
由于简历中主要体现的还是算法方面的项目,因而主要接收到的还是算法方面的面试,以下是面试中问到的问题
自我介绍
这个基本上每个人都有自己的自我介绍的方法,我自己由于想要体现项目经历所以就只是做一个简单的介绍,包括年龄、教育经历、专业、获奖经历、实习简介、项目简介。这里有一个小trick,有些自己感觉比较没底的内容可以一句话带过,尽可能把面试官的注意力引向自己准备充足的地方
项目经历
这里是最能体现自己的知识储备和工作能力的地方,将自己的每一个项目经历详细得介绍给面试官,如果是方向对口的岗位就比较吃香,面试官会从你的项目中抽出一些感兴趣的点进行提问,也会迁移到一些比较新兴的模型和算法提问。题主的项目是构建KG的基础步骤NER,这也是NLP领域中一个通用的步骤,可以迁移出传统的机器学习算法如HMM、CRF以及常用的轻量级模型LSTM、CNN再到近年来比较火的ResNet、transformer、BERT等等,由于了解得比较多,只要提问在这里基本上没有大的问题。此外在一面时有些面试官会提问一些比较前置的功能比如数据清洗、预处理方法等等,了解的话尽管说,如果遇到不了解的就直接告诉面试官不了解,有些面试官对那些婆婆妈妈的面试者还是比较反感的。
除此之外,一些方向不对口的岗位还会问一些基础知识:
计算机网络原理:三次握手,四次挥手,TCP/IP架构,HTML报头,一个URL输入到浏览器直到网页显示经历的整个过程、IP地址计算、局域网划分
计算机操作系统:进程和线程、Linux操作、死锁原理和解决方法、临界区、缺页调度
测试开发:测试要考虑哪些方面、黑盒白盒、分布式、出错监测、B/S、C/S
个人情况
在技术面中很少会提及这一块的内容,最多会在发现你的简历重心与岗位不符时问你为什么投递这个岗位以及对岗位的接受程度,还有就是工作地点考量。
通过了所有的技术面之后,就进入了愉快的HR面环节,个人感觉就像约一个陌生前辈摆龙门阵,简单来说会问以下的问题:
家庭情况,父母工作,父母期望
个人兴趣爱好、恋爱状况、落户意愿
对加班的看法,对目前就业环境的看法,对自己所受的教育的看法
职业生涯规划
经历过最大的成就和挫折,如何解决困难
对所属行业的了解,对本公司的了解
拿过多少offer,分别是哪些,给多少薪资
以上
总结
今年的就业环境实在是艰难,hc收缩,企业内卷严重,再加上疫情,但毕业生还是一年多过一年,对于算法岗更是难上加难,竞争对手真的是什么妖魔鬼怪都有,清北的海归的顶会的大厂实习的数不胜数,也难怪大多数同学会选择转开发岗,至少hc多且大厂薪资足够高。但我个人还是更倾向于日后的发展,因此果断放弃了字节等等大厂的开发岗offer选择了相对小规模企业的算法岗,算是给自己的发展上个保险吧。各位看官有什么感兴趣的地方欢迎留言哦,目前毕业论文很忙,但也会抽空回复哒!