忙碌奔波的四月,虽然就投递了三份简历,但由于一边在实习,一边又有学校的课程,也是够折腾的。在此感谢一路上,彼此支持、互相鼓励的道友们,也想着把近期的感悟记于纸上,分享给正在路上的道友。也感谢每一位投来橄榄枝的面试官。
一、春招形式
1.1 内推
- 内推,顾名思义,就是找内部人员推荐你的简历。这样,你的简历就会被放在一个“简历池”里边,如果有面试官看好你的简历,那么你的简历便会从简历池里边捞出来,接下来你就会陆续接到电话了。(这个其实很蛋疼的,有次在地铁上都能接到电话)
- “简历池”也存在不同的“简历池”之分。最好的“简历池”就是心仪的部门里边刚好有认识的前辈,直接把你的简历发到 BOSS 的邮箱,这样被面试的几率是最高的,当然难度也更高。其次,便是找内部技术人员推荐,这个“简历池”被面试的几率也是极高的。另外,也有一些宣传群发布内推码,不过这种“简历池”人数太多,被捞起来的几率就很低了。
- 内推的好处自然是有一些福利了,不过对于不同公司也有一些不同。阿里跟腾讯的内推福利是可以免去笔试环节,只要你的简历能够吸引到某个面试官,然后被捞起来。不过阿里参加内推的话,就没有参加正式校招的机会。
1.2 正式校招
- 正式校招的流程各大公司都大同小异,基本就是:
投递简历 -> 简历筛选 -> 笔试 -> 面试 -> offer阶段
- 参加正式校招的话就是不会有“突击”电话,可以有所准备。
二、简历
2.1 重要的点
- 项目丰富度
- 技术栈广度、深度
- 个人潜力
- 对个人发展方向有明确规划
- 工作热情强
- 学习能力强
- 责任感,抗压能力
- 良好的团队协作沟通能力
- 敢于尝试,有药性
- 执行力强
- 知识基础扎实
2.2 简历格式参考
- 简历规格:建议内容不超过单面A4纸,文字精炼,亮点之处字体加粗。排版尽量紧凑,这样可以放更多的内容。另外,简历的 UI 还是不要太粗糙,本人吃过亏。。。
- 内容分布:
- 个人信息:姓名、联系方式(邮箱,手机)、学校、专业、学历水平;个人博客或者 Github 地址。(体现技术热情,技术能力)
- 校园经历:个人认为不是特别牛逼的项目经历的话,就不必要列出来,写明所在组织及职位即可。(如果面试官有兴趣的话,也会问在里边的经历及职务的)
- 项目经历:项目经历主要是指企业项目或者比赛类型的项目经历。参考的罗列的点:项目名称、时间、负责工作、项目的技术亮点、难点(无需长篇大论,要点写明即可,不然篇幅过长)
- 技术栈罗列:分类清晰,使用专业名词描述,重点词汇加粗。根据所剩篇幅考虑技术栈的详略描述。
- 其他:主要是体现技术热情,学习方法和自学能力,还有发展方向归划。
三、一些面试题
3.1 阿里巴巴面试
阿里的面试体验真的是亲切,也收获良多。需要提的一点就是同个部门面试,前一轮的问题,下一轮还是可能重复问到,所以如果确实不会或者没把握,就赶紧补一补。以下是面试过程记得的问题,仅供参考。
- 一轮面试:
- 谈项目架构及原理
- React 函数钩子及运用
- React 事件绑定原理
- React setState 后发生的流程
- React 跟 Vue 的对比
- CSS 选择器的优先级
- 闭包
- 跨域
- 移动端适配方案
- Canvas、SVG
- Localstorage、Sessionstorage 和 cookie 三者的区别
- 二轮面试(具体的基础问题问的比一轮面试少,主要是考查思考问题的思路还有工程化思想):
- React 跟 Vue 的区别
- cookie 跟 Localstorage 的区别
- Websocket 的流程
- ES6 的新特性
- 组件封装的工程化思想考查
- 前端打包工具(如 gulp,webpack)
- 网站安全(主要是 CORS 跟 CSRF),富文本字符串过滤处理方法
- 为什么选择前端而不是后端
- 印象最深的项目经历
- 三轮面试(这一轮确实被问到几个不是很懂的问题):
- 学习前端多久
- 聊项目(项目背景、技术亮点、难点)
- 觉得最有成就感的项目
- 产品沟通,用户体验优化
- 移动端事件穿透
- 同源策略(原因及解决方案)
- 搜索框样式实现
- 属性跟方法放在 prototype 还是构造函数比较好
- 性能优化(下拉加载图片处理有具体问了一些)
- Jquery 源码(选择器实现方法、递归思想、class 选择器不用递归的优化算法)
- 觉得自己有什么缺点和优点(缺点克服方法)
- 四轮面试(前面面试都是一个多钟,最后两轮时间差不多都是 20 分钟,不是很长):
- 操作系统的线程和进程
- 数据结构和算法
- 职业规划和学业规划
- 项目经历(基本都问,主要是了解拥有哪些领域开发具备的技术栈)
- 五轮面试(HR 面试):
- 基本都是谈人生
3.2 腾讯面试
- IEG 某部门一面:
- 项目经历,主要问 NodeJS
- KOA 框架
- 客户端缓存(localstorage 和 cookie)
- 网络安全(主要是 CORS,CSRF)
- Websocket(技术介绍,项目介绍,低版本浏览器兼容方案)
- http 协议(有具体到字段名称)
- Vue 双向数据绑定原理
- 浏览器渲染机制
- 浏览器存储
- 原生 DOM 操作
- CSS print
- 同源策略
- 事件触发流程(捕获、冒泡、委托)
- 客户反馈错误处理方法
- 团队协作代码管理
- SNG 某部门一面:(因为 IEG 二轮面试电话来的时候刚好赶项目,所以...):
- 事件流机制
- 变量类型
- 区别 Object 和 Array
- 客户端存储的方法
- LocalStorage 的作用
- HTTP 状态码
- 项目经历
- 服务器访问量过载处理方式
- 同源策略的原因,解决方法
- 哪些存在同源策略
- xss, csrf
- CSS 伪类和伪元素的关系
- 正则表达式
- JSONP 实现原理
- Ajax 实现原理,IE8 CORS 的兼容
- SNG 某部门二面(基础的考核比较刨根问底):
- 动态 DOM 节点的事件绑定方法
- 移动端事件穿透
- 网络安全
- 其他问题大致跟一轮面试差不多,就是基本都刨根问底
- 某事业群某部门一面(面试内容比较简单,但不知为何没后续...):
- 项目经历
- IE8 的一些兼容问题
- 移动端浏览器内核兼容问题
- 校园经历
四、一些建议
- 技术热情:如果确实对自己现在的方向没有兴趣,建议考虑别的方向。
- 前端技术栈:基础很重要,不要急着去用框架,基础不扎实的话,一些语法,浏览器的运行机制,常用 API 都不了解的话,就更要先打好 基础了。否则直接上手框架成本高,又只停留在用的阶段。
- 推荐的打基础的几本书:
- 《HTML5 权威指南》
- 《CSS 权威指南》
- 《JavaScript 高级编程》
- 《JavaScript 权威指南》
- 《HTTP 权威指南》
- 《JavaScript 设计模式》
- 《NodeJS 深入浅出》
- MDN 文档
- 建议看源码的库:
- Bootstrap:样式库主要当补基础,把没见过的属性了解一下;JavaScript 库主要看实现的思想,JavaScript 插件最好自己也实现一遍。
- jQuery:看懂源码,思考为什么这么写,有没有更好的实现方法。
- 主流框架 Vue/React/Angular 建议至少挑一款深入学习。
- 大前端时代,NodeJS 也需要从基础到框架的一个过程去学习。
- 成长是一个不断学习的过程,遇到不懂的最好记下来,有时间一点一点去解决,最好是相关的知识都去了解,系统消化。
注:写于 2017 年 04 月 30 号