1.5年小白复盘互联网秋招
个人情况简介
投递过程
早投!早投!早投!重要的事情重复三遍,能在提前批投,就不要在正式批投,能在秋招投,就不要在春招投,见证和经历过太多面到后面,面试都通过了,但因为hc的问题被刷掉的惨痛教训,同时提前批投递可以免笔试(百度、字节、京东等公司),但咱也不能白给,上去直接送(因为面评也会直接保留),尽量准备到50%左右就可以去面试了。
小Tips:
1.尽量采取海投战略,不要只盯大厂,可以投一些小公司去练练手,找找面试感觉,再去面试自己心仪的公司时会得心应手。
2.有些公司会让你先选择事业群/业务线,这也是个需要考虑的点,敲重点!往往核心部门的面试难度和录取难度都比较大,类似字节抖音/广告,阿里淘系/妈妈,腾讯wxg之类的,相比较于非核心/边缘部门(XX教育,XX文娱,具体可询问公众号,狗头保命),但同时如果录取对于个人的成长也会比较大,所以说是风险与收益并存。
秋招结果
最终也是收获了百度推荐、京东广告、滴滴风控、B站广告算法等offer,其实结合自身实际情况分析,收获这些offer算是勉强及格吧,但复盘自己挂掉的原因,仍旧有很多可待提高的点。
1、算法
首先讲下算法在面试中的重要性吧,首先笔试和面试中都会考查算法,笔试会按照成绩筛选(但有些提前批不需要笔试,因此尽早投递),绝大部分公司的面试也需要手撕1-2道算法题(亲身经历,面试10场,9场需要手撕算法),做不出来很大概率上这次面试就跪了,特别是字节这类重视coding的公司,因此大家务必重视算法,同时也得清楚算法的时间复杂度,我有些大厂面试挂掉就是因为算法题没做出来。
我个人经历的话差不多是从研一下(4、5月份)才第一次接触算法以及数据结构这个概念(越早越好),也是买了《大话数据结构》这本书作为入门教材,虽然这本书中算法都是用C语言来实现,但并不影响我理解算法的思想以及常见的数据结构,基本上涵盖了常考的知识点,同时易读性很强,不像《算法导论》这部圣经,厚厚的就想让人绝望。先完整的看一遍,平常概念不清晰时也常翻翻。
熟悉常见的数据结构和算法后,就可以去leetcode上面刷算法题,刷题过程一直持续到秋招前,保证每天刷3-4题吧(同时限定10min内思考,如果思考不出直接看答案,因为面试时的思考时间差不多就是5-10min),可以先限定一个大范围,比如Hot 100、剑指offer、CodeTop小程序上的企业常考题(避免在低频题上做无用功),按照算法/数据结构类别来刷题,类似二叉树、链表、双指针、排序、二分查找,动态规划,大致刷300道题目,然后重复刷这些高频题2-3次,并把自己不会的题目进行总结反思,最后基本做到看到题目就有思路的程度,因为很多面试时的算法题就是leetcode原题。同时尽量做到举一反三,总结出各个题型对应的算法,比如看到一些子数组和子字符串的最值问题,基本就要想到用动态规划,看到有序数组很容易联想到用二分查找,我们不能单纯的背题目,需要掌握各个算法的思想和适用场景。
面试算法时的小技巧:
在面试官给出题目,自己脑海中有思路之后,先不要动手coding,而是把自己的思路和面试官先讲一遍,此举目的有如下:
1.保证面试官接收到自己正确的思路,这样万一后面coding过程中没有跑通全部case或者实现过程中遇到困难,至少能弥补一点;
2.万一思路有问题,面试官也能给出优化建议,方便最后coding成功。
3.你写得太快,面试官会觉得你做过这道题目,那接下来他往往会出一些难题了。
另外,如果思考了10min完全没有思路的话,是可以申请让面试官换一题或者申请提示。总而言之就是,切忌有思路之后盲目写题,而是先和面试官多交流
2、项目/实习/比赛
小建议:时间线不需要照搬我,经历相似便可,因为我3月份就去滴滴实习了,其实是没有参加当年春招的,但建议大家参加,有如下好处:首先在简历上写的时候,要按照针对什么问题,你做了什么改进,有了什么效果提升(最好是具体的数字量化指标)这样的格式来写,借鉴STAR原则简明扼要的阐述经历,可以加粗突出重点,而不是将细节全部写出。同时写在简历上的点,都是面试官重点考察的对象,所以对于在简历上的任何东西务必熟悉透彻。
1.如果通过春招面试,没有去实习,其实秋招可以直通终面(阿里,字节,美团都有),相当于别人需要2-3面拿offer,你只需要一面,速度快又省力 。
2.提前参加春招,有利于积累经验,更有利于秋招的准备。
项目/实习/比赛,基本会占到整个面试过程的50%的时间,所以务必准备时要好好复盘下整个项目的完整性,可以从以下几个方面反问自己
(1)我为什么要做这个项目(交代下项目的背景,我们做的意义)
(2)我为什么要对这个问题进行改进优化
(3)针对问题优化,有和其他技术方法进行调研比较吗?为什么用你这个技术方法而不是其他技术方法?切忌只会照搬最新技术方法,而不会细致的分析自己问题所处的场景而选择最合适的方法
(4)你这个技术优化的原理是什么?
(5)具体是怎么实现这个技术优化的(这部分最好参照自己的代码细节)
(6)知晓整个项目的流程链路pipeline(比如从选择数据开始,到最终模型上线)
(7)对于整个项目中涉及的每个技术细节/原理,务必心知肚明,确保面试官提问时你都能回答出来
(8)学会复盘,通过这次项目自己获得了哪些成长,仍旧有哪些不足可以有待改进
小建议:
1.可以将自己的整个项目,各个方面的内容都写到word或者笔记本上,可以常翻常看,巩固知新
2.经过每一次面试,总结自己回答的不好的点,将自己对于项目中没有考虑到的地方补充完整
3、八股文/基础知识
其实根据我的个人经验来说,如果你的项目/实习/比赛相对比较充实,也和面试岗位比较契合的话,其实单纯问基础知识的时间并不多,而且往往会在问项目的同时穿插着问,或者就问一些和项目中用到的技术比较相关的内容,相对来讲比较好准备;但如果你的简历中能够引起面试官兴趣的点/能够让面试官提问的点比较少,此时就会问很多八股文了,往往此时问到的问题就可能会超出你的知识范围;同时语言方面,C++是加分项但不是必备项,只会python也是没有关系的,并不会卡语言。
关于个人经历的话,其实一开始主要读的就是李航的《统计学习方法》,把机器学习的基本概念首先摸清楚,之后入门深度学习主要看李沐的《动手学深度学习》(最近他在B站也上传了,喜欢看视频学习的小伙伴可以去看看),这两本我感觉都是比较入门的经典书籍,通俗易懂,秋招前我又看了一遍,巩固基础,但我个人动手实践coding方面主要参考莫烦学python(mofanpy.com);之后的话就是缝缝补补,看到一个概念(比如梯度下降,Normalization等等)就去CSDN或者知乎上搜索相关知识(但找到详细优质的内容挺耗费时间的,建议大家灵活选择有效搜索方式),前沿经典模型的话就读原文论文(可以在arxiv上下载原文),并结合他人分析总结。
学习完通用类基础知识,特定领域内(比如搜索/广告/推荐,CV,NLP)方面的,我本人对于NLP方面的知识基本是靠着《动手学深度学习》,以及看相关论文综述,先了解整体的发展脉络,再针对细节进行仔细阅读,同时也会结合下优质公众号(比如美团技术、CS的陋室等),了解下工业界各公司是如何应用前沿方法落地的; 如果是要投身推荐/广告算法方向的小伙伴的话,可以阅读下项亮的《推荐系统实践》(入门),王喆的《深度学习推荐系统》(进阶),来掌握基础概念。