前言
秋季招聘一般集中在每年的9月-10月份,有早一些的城市或者公司会在8月就开始进入校园,开启招聘,也有比较晚的少数公司会在11月-12月进行招聘。
一年一度的秋季招聘马上就要开始了,秋季招聘是校园招聘中最为集中、岗位最多的一次集体招聘会,虽然也有春招,但是对于很多公司而言主要是“查漏补缺”,岗位数量相对于秋招有很大的差距。因此,很多即将毕业的学生会把秋季招聘看的非常重要,毕竟第一份工作对一个人来说是至关重要的,每个同学都希望找到称心如意的工作。
但是,“天下没有免费的午餐”,在秋季招聘中这个道理同样适用,好的工作岗位和面试的难度是成正比的,无论是银行、金融,还是互联网、IT。因此,要想找到一份称心如意的工作,必然需要做好充分的准备,毕竟,机会都是留给有准备的人。
面试是否有规可循?答案是肯定的,以阿里、百度、华为这些知名的互联网、IT公司为例,每年招聘的人数有限,但是应聘人数却是招聘人数的几十倍,甚至上千倍。招聘对于毕业生来说是一次煎熬的过程,对于企业同样是一个非常耗时耗力的事情,因此他们会通过一些“落入俗套”的方式进行人才的筛选,虽然这样会错失一部分真正的人才,但是能够筛选掉更多不符合要求的平庸人员,这样的损失是企业愿意接受的。有哪些“落入俗套”的方式呢?无非就是学历、学科、笔试、面试。其实经过一轮简历上学历、学科的筛选已经筛选下去一大批,而通过笔试又会筛选去一大批没有做好充分准备的同学,真正进入最后面试的已经是经过层层筛选留下来的。
学历、学科这些是人为无法改变的,但是笔试、面试却可以,因为成熟、经典的知识体系已经经过多年的洗礼逐渐完善了起来,笔试、面试的内容无非是变着花样的考书本上、教材上的知识,例如数据结构、算法设计等。因此,我认为通过准备,学习掌握目标公司历年来的出题类型和面试方式,会让应聘过程变的顺畅很多。
近期在github上发现两个不错的面试笔记,总结了各大知名互联网、IT公司,例如阿里、百度、腾讯、华为、美团等公司面试中常见的笔试、面试题型,并且给出了详细的解答。我认为每个人都有薄弱的地方,所以,如果心中有目标的公司,可以根据自身的不足之处学习一下对应公司近两年面试、笔试中常见的题型,好好准备,这样能够有效的帮助你在校招中找到称心如意的公司,废话不多说,下面介绍一下这两个开源学习项目。
0voice / interview_internal_reference
https://github.com/0voice/interview_internal_reference
这是一个按公司和知识体系分类的的学习资源,目前已经13w+star。
如果心中有明确的目标公司,可以针对性的看一下对应公司的面试总结。它包含阿里、华为、百度、腾讯、美团、头条、滴滴、京东等。此外,还针对企业中比较常用的工程技术进行知识类型的总结,例如MySQL、Redis、MongoDB、Zookeeper、Nginx、算法、内存、磁盘、网络通信、安全、并发等,可以说是涵盖的非常全面。
和往常见到主要针对算法实现的笔试题目不同,这个项目更加偏向面试。我觉得对于有一些编程和数据结构知识的同学通过笔试都不是特别困难的事情,而真正能够在面试官心中留下深刻印象的往往在笔试中,而这些面试官往往是工作多年,深耕业务和产品的工作人员,因此,他们更多的关注的是现实中遇到的问题,所以,如果在这些问题上回答的不错更容易抓住面试官的心。
interview_internal_reference这个项目主要的针对这些问题,从系统稳定性到缓存机制,从并行计算内存优化,非常全面,知识体系也非常分散,我认为这远远要比反复的刷leetcode要有价值的多,尤其是对于腾讯、阿里这些偏工程的公司,在面试过程中会问很多非常分散的工程技术问题
imhuay/Algorithm_Interview_Notes-Chinese
https://github.com/imhuay/Algorithm_Interview_Notes-Chinese
如果说interview_internal_reference偏向于工程技术,那么Algorithm_Interview_Notes-Chinese更多的是围绕着算法进行展开,目前已经25w+star。
在面试过程中,偏开发和偏算法的面试差别非常大,偏开发,例如前端、后端、云服务等工程技术的会询问很多分散技术的问题,但是偏算法的往往会集中在算法和项目方面,例如,做过哪些相关的项目?使用了什么算法?这个算法具体细节是什么?等等。大多数是围绕着应聘岗位进行面试,如果发散一些,会问一些经典的数据结构和数学方面的知识。
这几年随着人工智能火热,计算机视觉、深度学习、自然语言处理方面的工作岗位也多了起来,应聘者也多了起来。这个学习资源主要围绕人工智能领域的技术进行总结,同时涵盖数学、编程、数据结构等方面的基础知识。
如图所示,在深度学习方面,它包含了深度学习的基础知识,例如过拟合、欠拟合、激活函数、反向传播、正则化、加速训练,同时还包含深度学习领域核心的优化算法,例如,梯度下降法、动量法、牛顿法等。
此外,在计算机视觉、自然语言处理方面也包含了诸如VGG、词向量等基础的知识。我认为,它不仅适用于即将应聘的同学,同时对于已经参加工作的同学也非常有用。
除了应用层面的算法之外,它还有数学基础,例如微积分、概率论方面的知识,从求导到极限、从微分到积分,泰勒级数等,样样都有。
class Solution { public: int widthOfBinaryTree(TreeNode* root) { if (root == nullptr) return 0; queue<TreeNode*> Q; Q.push(root); int ans = 1; while(!Q.empty()) { int cur_w = Q.size(); // 当前层的宽度 ans = max(ans, cur_w); for (int i=0; i<cur_w; i++) { auto p = Q.front(); Q.pop(); if (p->left) Q.push(p->left); if (p->right) Q.push(p->right); } } return ans; } };
除了这些偏理论的知识,它还有面试中常出现的数据结构和算法方面的总结,同时给出了编程实现,例如,动态规划、双指针、排列组合、二叉树、链表、堆、栈等,此外,Algorithm_Interview_Notes-Chinese吸引人的地方是在这些算法方面不是单纯的给出编程实现,还是列出实现的步骤和思路,非常有助于理解。