双非菜鸟前端秋招总结帖
今天周五,再摸鱼一下午 + 一晚上就可以开始愉快的周末了,刚好腾讯的面试也通过了,特地在摸鱼时间写下此帖。
0. 自我介绍及前言
楼主投递的岗位主要是:前端工程师。按照惯例,先进行简单的自我介绍:楼主四川人,本硕均在四川就读,均未双非。本科医学院校,接触到了计算机专业的课程,考研跨考四川某985计算机专业,一志愿未上岸,调剂到现在就读的学校。硕导不允许外出实习,只有在校期间跟着硕导做的一些项目的经历,不过是商业项目,有一定的用户量。有竞赛经验,主要是蓝桥杯和ACM,分别获国二和省银。
楼主从7月份开始准备秋招,7月29日进行第一次面试,宣布秋招正式开始,到12.9日收到阿里意向书,宣布秋招基本结束。由于楼主的简历不是特别突出,前期选择的是海投的形式,最后也收获了不少offer(阿里、腾讯、字节、小米、小红书等),最后应该会签约阿里和腾讯其中一家,具体流程和面经记录请前往:双非菜鸟前端秋招记录贴。
1. 前期准备
(1) 计算机基础知识(★★★★★)
1) 计算机组成原理
2) 操作系统
3) 计算机网络
4) 数据结构
对于计算机基础知识,只要还是以考研408的4门专业课程为主。在时间充裕的情况下可以扩展编译原理,密码学等课程。其中计算机网络和数据结构对前端的面试帮助更大,在时间不充裕的情况下,优先准备这两门课程。
(2) 前端基础知识(★★★★★)
1) HTML/HTML5
2) CSS/CSS3
3) JS/ES6+
前端基础知识需要熟练掌握。其中HTML、CSS可以在使用的时候查阅文档,但CSS常用的布局、定位、动画等属性必须熟练掌握。JS基础知识点必须全部熟练掌握,不能放过任何一个细节,ES6+语法扩展的越多越好。
(3) 算法以及编程题(★★★★★)
1) 双指针/多指针
2) 动态规划DP
3) 深搜、广搜、回溯
4) 贪心、分治
5) Hash表、查找
6) 排序
7) 其他
算法和编程题主要还是多练习,前期主要刷LeetCode前200~300题,后期可以根据CodeTop的出现频次和牛客的往年真题进行针对练习,如果数据结构课程掌握的比较熟练,或者有竞赛经验,这一块可以轻松很多。
(4) 系统分析与设计(★★★)
内容太多就不展开写了,这一块主要是了解项目从指定计划到上线后进行维护的整体开发流程。
(5) 前端扩展知识(★★★★)
1) 模块化、工程化(git、webpack、gulp等)
2) Node.js(express、koa等)
3) WebGL(three、babylon、d3等)
4) 多终端处理
2. 简历
个人简历中需要呈现的主要有如下部分:
(1) 个人基本信息(★★★★★)
1) 姓名、年龄
2) 学历、学校
3) 联系方式(手机号、邮箱)
4) 附加信息(党籍等)
确保邮箱能够正常通信,用QQ邮箱的同学最好用QQ邮箱申请一个英文邮箱名,避免出现意外(我遇到过),其余信息如实填写。
(2) 实习经历(★★★★★)
1) 公司名称
2) 实习岗位
3) 起止时间
4) 详细工作、绩效、成果等
(3) 项目经历(★★★★★)
1) 项目名称
2) 承担角色
3) 起止时间
4) 详细内容、关键技术点等
(4) 获奖经历(★★★★)
1) 奖学金
2) 竞赛
如实填写!!!
(5) 组织经历(★★★)
1) 社团、学生会等
2) 志愿者组织等
(6) 其他学习能力证明(★★)
1) 各种证书(四六级等)
2) 各种认证(如CCF)
有些时候HR或者面试官在筛简历的时候是需要把候选人的简历打出来给领导看的,如果有同学前面实习经历和项目经历比较多的同学,超过了一页A4纸的长度,可以适当考虑删减(5)和(6)。
校招开启后简历投递的越早越好,出于心理、准备时间、关注度等因素,简历投递的越早越容易被HR和面试官注意到,或者笔试或者面试机会也越大。此外,提前批最好投递一下,因为提前批投递的人相对较少,并且不占用正式校招的投递机会,就算没有通过也可以多刷一次经验(但是会有面试记录,可能会对后续面试有影响)。
某些公司是可以单独找HR或者面试官私信简历内推不占用官网招聘名额的,可以多获得笔试或者面试机会(这个就要靠自己多花功夫去联系内推人或者勾搭HR了)。简历不是特别优秀的同学,但是很想获得面试机会的话,可以想办法让自己在某些公司的简历池里面突出一点(比如修改投递简历表单的姓名那一栏)。
3. 笔试
大多数情况提前批不会有笔试,正式批基本都会安排笔试。大多数公司会根据笔试是否通过或者候选人笔试排名来决定是否邀约面试,少数公司候选人不需要做笔试也可以收到面试邀约(如阿里,腾讯,美团等)。所以简历不突出的同学也可以靠笔试成绩让面试官主要到自己(我采取的方法)。
大多数公司在招聘过程中会开启多场笔试,如果预约的笔试时间自己不是很方便,可以放弃该场笔试,参加下一场。少数公司允许候选人参加多场笔试,以多场笔试中的最高成绩作为候选人的笔试成绩,这个需要同学们自己去了解公司的笔试安排详情。
前端笔试主要分为如下题型:
1. 单选题(★★★★)
2. 多选题(★★★)
3. 判断题(★)
4. 填空题(★★)
5. 需求题(★★)
6. 编程题(★★★★★)
其中1,2,3,4均出自计算机基础知识及前端基础知识,5则是根据提供的功能需求完成或完善代码(如:手写一个UI组件),6则需要建立在1.(3)的准备基础上
4. 面试
技术岗的面试基本在3~5轮,极少数公司只需要一两轮技术面即可通过面试。其中采取3轮技术面+ 1轮HR面试的公司偏多,如一面为mentor面,二面为leader,三面为总监面,可能会根据面试者的情况增加一轮技术面,如sp+加面,交叉面。
按我的经验,80%的公司技术面全部通过后基本可以收到意向书(HR面正常发挥就不会挂人那种)或者进入侯选池(哈哈哈,比如华子),20%的公司HR面挂人几率比较高(这个不好比如,大家知道就行)。
一般来说一轮面试面试官会问15个左右大知识点的问题,回答问题时要准确抓住面试官的问题题干进行回答,不能回答偏(会被认为解读问题能力不够),技术面可以进行适当扩展(尽量进行深度的扩展,不要进行广度上的扩展,不然面试官会认为是你知识点掌握的不够牢固,想靠自己知道的其他内容来弥补)。
举个前端面试常见的例子:面试官:“跨域问题是什么,怎么解决?”需要回答的是:1.跨域问题是什么(不同源会出现跨域报错) 2.跨域问题产生的原因(同源策略)3.跨域问题如何解决(jsonp、cors等)其中3可进行一定深度的扩展,比如每个解决方案是基于什么原理,有哪些场景可以使用这些解决方案。
HR面试没有太多技巧,始终表现出自己积极乐观的态度,所有问题如实回答即可。
除此之外,技术面时大多数时候面试官会要求候选人手写一些代码题,编程题。按我的面试经验,技术面面试官根据情况允许候选人出现15%~30%以内的知识点答不上或者了解不清楚,超过这个范围面试结果就危险了。接下来我将总结一些技术面试中我所碰到过的题目以及出现频率:
知识点题目:
1. HTML
1) 语义化,标签化的作用(★)
2) 说说你常用的标签以及对应的作用(★★★)
3) <br>、<hr>的作用和区别(★)
4) 说说你知道的空格标记( 等)(★)
5) 各种外部文件的引用方式(★★)
6) <meta>、DOCTYPE的作用(★★)
7) readonly和disabled的区别(★★★)
8) audio video的属性和使用(★★★)
9) frame、iframe的使用和区别(★)
2. CSS
1) link为什么要放在body前(★★★)
2) 动画有关属性的使用、怎么定义逐帧动画(★★★)
3) 块级、行内元素分别有哪些,区别是什么,怎么修改呈现方式(★★★★)
4) 盒子模型和box-sizing(★★★★★)
5) BFC、IFC、浮动、清除浮动(★★★★★)
6) margin塌陷,重叠(★★★)
7) flex、grid布局(★★★★★)
8) 影藏元素的方法,各自的区别(display/visiablity/opacity)(★★★★)
9) position各个取值的作用和场景(★★★★)
10) link @import引入的区别(★★★)
11) 伪类,伪元素的使用和区别(★★★★)
12) 选择器优先级(★★★★★)
13) 水平、垂直居中方法(★★★★★)
14) 自适配属性(★★★★)
3. JS
1) async和defer的区别(★★★)
2) 数据类型及判断方法(★★★★★)
3) 显示转换及隐式转换(★★★)
4) var、let、const作用和区别(★★★★★)
5) 作用域、作用域链、闭包(★★★★)
6) 箭头函数、普通函数作用和区别(★★★★★)
7) call、apply、bind作用和区别(★★★★★)
8) New的过程(★★★★)
9) 事件委托(★★★)
10) 事件循环(★★★★★)
11) 添加事件、事件捕获、事件冒泡(★★★★★)
12) 垃圾回收机制(★★★★)
13) promise系列(★★★★★)
14) 深拷贝、浅拷贝(★★★★★)
15) 图片懒加载、路由懒加载(★★★)
16) 节流、防抖(★★★★)
17) 数组方法解析,遍历数组、对象,for in for of的区别(★★★★★)
18) arguments、rest、展开表达式(★★)
19) 原型链、class继承(★★★★)
20) MAP、SET(★★★)
21) Arraybuffer,Blob等二进制处理(★★★)
22) proxy,reflect的使用(★★)
23) AJAX、axios、fetch等的使用(★★★★★)
24) sessionStorage、localstorage,前端存储(★★★★)
25) web worker,serverless worker、postmessage(★)
26) canvas(★★)
4. Vue(楼主主要使用的是Vue)
1) 2.X和3.0的主要更新区别(★★★)
2) MVVM、MVC、MVP的区别(★★★★)
3) Vue框架设计的核心思想(★★★★)
4) Vue-cli、Vue-router、VueX等的使用(★★★★★)
5) 虚拟DOM和diff算法(★★★★)
6) 双向绑定原理、数据劫持、依赖搜集(★★★★★)
7) 响应式原理(★★★★)
8) nextTick的使用(★★★★)
9) 组件通信方式(★★★★★)
10) watch和computed的区别(★★★★)
11) v-if和v-show的区别(★★★★)
12) for和v-if的优先级(2.X和3.0的优先级不一样)(★★★)
5. 计算机网络及通信
1) 网络模型,各自有哪些协议,端口号是多少(★★★★★)
2) 输入URL到展示页面的全过程(★★★★★)
3) 三次握手,四次挥手(★★★★★)
4) TCP、UDP的区别,TCP怎么做到的可靠传输,UDP怎么改进实现可靠传输(★★★★)
5) HTTP状态码(★★★★)
6) HTTP1.0 1.1 2.0 3.0 HTTPS Websocket(★★★★)
7) 简单请求、复杂请求、预检请求(★★★)
8) get、post的特点和区别(★★★★)
9) 同源策略、跨域处理(★★★★★)
10) 各种缓存机制、CDN(★★★★)
11) 接口幂等性(★)
12) cookie、session、token、jwt(★★★★★)
6. 数据结构
1) 栈、队列(★★★★★)
2) 链表、顺序表(★★★★)
3) 模式匹配(★★)
4) 几种特殊二叉树的定义及遍历方式(★★★★★)
5) 图、最小生成树(★★★)
6) 排序算法(★★★★★)
7) 查找(★★★)
8) Hash表(★★★★)
9) B树、B+树、红黑树的区别(★)
7. 操作系统
1) 线程与进程的区别,各自之间如何通信(★★★★★)
2) 虚拟内存和物理内存(★★★)
3) 死锁,如何解决(★★★)
8. 信息安全
1) HTTPS(★★★★★)
2) SQL注入、DOS/DDOS、XSS、CSRF的原理及防范(★★★★)
9. 其他
1) git有关操作和使用(★★★)
2) webpack有关使用(★★★★)
3) node.js有关使用(★★★★)
4) 浏览器引擎、渲染机制(★★★★★)
5) 前后端分离(★★★)
6) SPA、SEO、CSR、SSR有关使用(★★)
7) gif、jpg、png、svg、webp等图片类型的区别和使用场景(★★)
8) base64等编码的意义和使用场景(★)
9) PKI体系,CA,数字签名,对称、非对称加密算法等密码学知识(★)
手写题目:
1) instanceof(★★★)
2) promise.all/race(★★★★★)
3) new(★★★)
4) filter/indexOf/forEach/map/reduce(★★★★)
5) call/apply/bind(★★★★)
6) 节流/防抖(★★★★★)
7) 快排、冒泡、堆、归并、直插等排序算法(★★★★★)
8) 发布订阅模式(★★)
9) 其他变成题目(参考LeetCode、CodeTop、牛客)
5. 意向书、OC、offer
很多同学分不清这三者的区别,OC = offer call,三者通常是以意向书->OC->offer这样的流程进行。一般在通过前面所有的面试流程后,就会收到意向书,意向书只是代表该公司对你有录用意向,还是要以最终offer为主。随后一般会有HR对接,进行谈薪或者发放offer前的电话沟通,这个流程通常称OC。随后在双方达成一致后HR会向公司有关部门递交关于候选人的offer申请,申请审批完成后才会发正式offer,到正式offer这一流程才能勉强算是确认录用了。因为每年校招生很多,参加校招的同学也很多,校招本身是一个双向选择的过程,所有经常出现互相养鱼的情况,也偶尔会出现同学收到了意向书或者OC了,最后却没收到offer的情况,多和HR交流,一定程度上的催促,会对offer发放的速度有正向效果。
6. 一些Tips
1) 我认为的招聘难度(仅仅是我认为):实习转正<补录< =提前批<正式批,所以能实习转正就实习转正,能提前批上岸就提前批上岸。实习经历对正式批也是非常重要的部分,尤其是大厂实习,有很大的优势。
2) 项目不用太多,两三个就行,比起项目个数,从项目中学到东西,知识深度的扩展才是最重要的。如果面试的时候,连项目的核心功能具体实现思路和关键点都给面试官说不清楚的话,给面试官留下的印象会很差。
3) 是否科班,学校是否985/211对简历筛选都有一定的影响。但是相对于学校,科班的影响更小,很多公司宁愿给985/211非科班的同学面试机会,也不愿意给科班双非的同学面试机会。
4) 奖学金,竞赛,论文这些不是必须条件,但是可以让你锦上添花,或者从众多简历中脱颖而出。
5) 多联系HR,对你的流程进度会有很大帮助。如果一个公司单个部门挂了,可以联系HR尽快给你结束流程,避免耽搁其他部门对你的简历进行筛选。
6) 笔试做的好,比如AK,可以让你更容易收到面试邀约。
7) 面试从自我介绍的时候,最好向面试官介绍自己擅长的知识点和领域,引导面试官针对你所提到的内容进行提问,比起知识面广度,面试官更看重知识点了解的深度。
8) 背八股文,背面经固然可以查漏补缺,但是面试过程中代入到自己的项目中,描述具体的实际运用更优。
9) 82定律永不过时,集邮大佬千千万。0 offer也不要垂头丧气,多多关注补录消息,补录上岸难度比正式批上岸低很多。
10) 国企和外企也有很多不错的职位,WLB才是理想化的生活。
7. 写在最后
5个月,也经历了很多吧,秋招比我想象中的“卷”(人多,岗位少),也没有想象中的“卷”(面试难度)。因为第一次面试(字节提前批),当天第二轮面试就挂了,给了我一个教训,后面自己认认真真的准备着接下来的秋招。
中间最忙的应该是8月20号到10月1号中间这段时间吧,由于自己是海投的简历,收到了很多笔试面试邀约,笔试面试加起来平均每天要进行四场。不过好在8月17号好未来集团给我发了第一份意向书,虽然最后被毁约了,但也让我有了足够的信心继续后面的面试。直到9月底收到了小米的offer和字节的意向书,我原本以为自己的秋招差不多结束了,奈何人心都是贪婪的,这两家并不是我期望的终点。
于是我便开始在腾讯招聘官网,每天卡着上下午上班的时间点疯狂刷简历,希望有面试官或者HR注意到我,同时也在牛客上联系阿里的面试官捞我简历,有幸最后两家公司都给了我机会,非常高兴,功夫不负有心人。比我优秀的人很多,但是这两家还是给了像我这种双非学校同学的机会,所以即使学历、学校上有劣势,也要自己抓住机会,去表现自己的能力。
没有收到美团、百度、快手、贝壳、虾皮等公司的面试邀约,实属遗憾,没有机会和面试官交流扩充自己的视野。
我的秋招暂时告一段落了,接下来就是不断地准备硕士毕业论文的事情了,希望看到这儿的朋友们都能收到自己满意的offer。
最后,献上阿里leader给我的一句话:“年轻人嘛,想成功,就多折腾自己一点”。
#学习路径#