作者 | 于是乎 整理 | 桔子酱
最近换工作,大大小小面试了不少公司,其中包括京东,高德,滴滴,美团,小米,腾讯,完美世界,爱奇艺等知名公司,已经拿到合适的 offer。
本文主要从简历,前端基础技术知识,项目,团队选择,面试总结复盘几个方面,来梳理找工作时我们需要做的准备和注意事项。
01
简历
简历是敲门砖,一定要认真准备,甚至逐字推敲。很不建议其他部分准备差不多了,然后花个 2 小时把简历写完了。写简历,一定是个不断思考自己做了什么,有哪些优势,包括自己需要准备哪些面试点,包括自我介绍时要突出什么,这些很多都是要基于简历去展开的,而且要在这个思考的过程中再不断的完善简历。甚至在面试后,也要根据面试官的反馈不断的更新简历。
关于简历,我个人认为需要做到以下原则:
第一、尽可能的突出自己的优势
一定要让人一眼就能从简历中看出你的优势所在,比如你在一家公司做了很突出的贡献,那一定要写在简历最显眼的位置,用颜色加深也不为过。如果你是学历特别好,那么教育经历一定要放在第一页。一个岗位可能会接收到几百份简历,只有你能在那短短几秒内吸引住对方,才能有面试的机会。
除了突出优势以外,对于自己不擅长的点,尽可能不在简历中出现,因为只要你简历中出现的,就极有可能会被问到,到时候如果了解的很少,会有减分。
第二、简
之前看过有人写简历写了 6 - 7 页纸的,很可能这么多页的简历中,会有亮点,但是难道要指望对方从这么多页的简历中去提炼出你的优势所在吗?!
简历一定不能写成流水账,技术同学的简历一般不建议超过 3 页,主要包括个人信息(联系方式,学历等),专业技能,工作经历,项目经验等几个部分,要尽可能用最简的语言描述自己所做的事情,能用一个字说清楚,就不要用两个字。简历不是写小说,不是讲故事,尽量不要出现第一人称。
下面举一个例子说明一下:
像上面这段简历,可以直接删掉了,自我评价不是不可以写,但是一定要言之有物,且一定要和工作有密切的关系,比如能够承受工作压力,那可以写个具体的案例,比如擅于学习,那么可以写自己的产出,比如开源项目,技术博客等。
下面再看另一个例子:
这是一位同学在介绍在一家公司所负责的事情时是这么写的
罗列了 5 条工做内容,但是这几条工作内容,完全体现不出来他做出了哪些成绩,尤其像第 4 条和第 6 条,这就是每个工程师工作中都会做的事情,这种根本不需要写在简历上,只要你做的是前端,就一定在做这些。另外像具体使用的技术栈最好在项目经验模块中去着重描述,不然两个地方都写就是重复的。
所以这里需要写的就只剩下两点:
-
负责页面的代码重构与优化
-
分析软件开发工程中的问题与解决
第三,描述自己做到了什么,而不是做了什么
还是继续上面的例子,简历中只描述了自己做了什么,而并没有说明自己做到了什么。
比如说 负责页面的代码重构与优化,那么这里应该体现的是都做了什么优化,优化和重构带来了什么好处,如果是带来了性能的提升,那么提升的数据是怎么样的,最好能用数据来说话。另外,如果做了重构,那么为什么重构,以及重构会带来什么好处,是如何衡量是否要进行重构的,这些都要做到心中有数。
再说一下另一点 分析软件开发工程中的问题与解决,同样,要说明解决了什么问题,通过什么手段解决的,带来了什么样的效果,比如设计了一个编写接口文档的工具,使接口能够保证符合现有规范,减少了前后端沟通成本,有效的提升了接口质量,整体效率提升了 20%。
最后,简历中尽量避免低级错误,如技术栈的英文单词错误,出现错别字,格式最好尽量 PDF 格式。
02
基础知识储备
基础知识准备的怎么样,直接决定能否顺利通过技术一轮和二轮面试,一般技术面试的一二轮会围绕着一些前端基础来进行。
这部分主要包括的有这样几个方向:
1. HTML 和 CSS 相关
这部分考察的一般都是十分基础,但是又容易被忽视的。
这里简单罗列下常见的考点
-
实现水平垂直居中布局
-
BFC 特性,如何创建 BFC,BFC 应用场景
-
flex 布局有哪些特性
-
伪类和伪元素区别,分别有哪些
-
css 权重
-
position 的属性及区别
-
如何实现 GPU 加速,及其原理
2. JS 基础
这部分一般考察会比较多,需要多花些时间去梳理。主要涉及的点有:
-
类型相关(原始类型有哪些,怎么区分类型,有哪些区别,包装类型,类型转换,== vs ===,深浅拷贝)
-
this 指向问题(包括 call,apply,bind)
-
事件循环
-
模块化(AMD,CMD,CommonJS,ES Module,webpack)
-
异步相关(callback,Promise,Generator,async await)
-
ES6 新增的语法和原理
-
原型链和继承,作用域链及闭包
-
DOM,事件流,事件代理相关
3. 网络知识
这部分是很多前端工程师所欠缺的,但是面试中也会经常问到。主要涉及的点有:
-
网络分层结构及各层功能
-
http 协议的发展历程
-
http2.0 的优点(多路复用,头部压缩,服务端推送),每个特点都需要详细了解,最好清楚原理,对比之前的优势
-
TCP 三次握手和四次挥手(清楚过程,并知道为什么是 3 次和 4 次)
-
https 相关(握手过程,优点,中间人攻击)
-
http 缓存策略
这部分可以参考我之前整理的《2020 年大厂面试指南 - 网络篇》
4. 性能相关
性能优化是非常高频的问题,也有很多优化方案,这里不止要知道怎么进行优化,还要了解其原理。
-
性能指标有哪些,怎么获取
-
性能优化方案有哪些
可以从减少资源体积和减少请求次数两个方向展开,另外可以考虑升级 http 协议版本,使用异步加载非核心资源或使用预加载。
其中减少资源体积可以通过 gzip 压缩,对图片进行压缩,使用 webp 图片格式,优化编译后代码体积等方式展开。
减少请求次数,可以通过 DNS 预解析,浏览器缓存,CDN 等方式展开。
5. 框架相关
关于框架部分,需要准备自己常用框架的一些基础知识,进阶用法,框架底层实现原理。以 Vue 为例,需要准备:
-
组件通信相关
-
生命周期相关问题
-
常用属性和指令的作用及对比
-
底层原理分析
-
Vue-Router 和 VueX 相关使用和原理
Vue 技术栈的同学可以参考我之前整理的《2020 年大厂面试指南 – Vue 篇》
6. 浏览器相关
浏览器相关的知识,也是常考点之一,需要了解的知识有:
-
浏览器的线程和进程,有哪些引擎
-
浏览器渲染过程,包括回流和重绘相关知识
-
浏览器的缓存机制,涉及缓存读取机制,强缓存和协商缓存
-
浏览器的同源策略及跨域相关知识
-
浏览器输入 url 到页面展示都发生了什么
这部分可以参考我之前整理的《2020 年大厂面试指南 – 浏览器篇》
7. 工程相关
这部分主要涉及到代码构建,项目部署相关的知识。
-
webpack 相关
a. webpack 的原理
b. 常用 plugin 和 loader, 如何编写一个 plugin 或 loader
c. webpack 做过哪些优化 -
babel 的原理及其配置
-
前后端分离的优缺点
-
如何实现代码的自动化部署
-
sourcemap 的原理是什么
-
npm install 是怎么工作的
-
如何做异常监控
-
抓包工具的实现原理是什么
8. 前端安全
-
什么是 xss 及如何防止 xss
-
什么是 csrf,如何防止 csrf
-
css 会存在安全问题吗?怎么攻击的
-
什么是枚举攻击,如何防止
-
什么是中间人攻击,如何防止
9. 数据结构和算法
大厂会注重数据结构和算法的考察,对于常见数据结构的特性一定要了然于心,这是解决算法问题的基础。
关于算法部分推荐阅读《剑指 offer》,详细理解书里面的题目,应对大部分前端的算法面试就能游刃有余了。
leetcode 中《剑指 offer》刷题地址:
https://leetcode-cn.com/problemset/lcof/
03
项目复盘
很多人在准备面试时,可能会花大量的时间去准备上面说的基础技术知识,但是却忽略了对做过的项目或者技术方案的复盘。这点是非常非常重要的,一般到了技术面的二轮或三轮,很可能大部分时间都是围绕着项目进行的,这部分准备可以从以下这些问题入手。
-
你在这个项目中承担了什么样的角色
-
这个项目的背景是什么,如果是技术项目,为什么要做
-
有哪些技术难点,是怎么解决的,是否还有更好的方案
-
你认为项目中是否有可以改进的点
-
这个项目解决了什么问题,最好用数据说话,这个数据又是怎么得出来的
提前想好上面这些问题,在面对项目相关问题时,就能做到心中有谱。除此之外,项目中涉及到的技术栈和技术难点等一定要提前做好准备,一定要保证简历上写过的东西一定要准备好,这也是上文为什么说要先写好简历,再一边准备一边完善简历的原因。
04
团队选择
在找工作之前,我们就应该想好要去一个什么样的团队,想要在下份工作中获得什么样的成长,想要在下份工作中承担什么样的角色,包括想得到什么样的薪资以及能接受什么样的工作强度。这些都提前想好,在面临选择时,才能做出正确的判断。这也就要求我们要先对自己有一个认知,有一个相对明确的目标,知道自己欠缺的是什么,知道自己下一步想朝哪个方向去努力。有句话说的是,方向不对,努力白费,说的正是这个道理。
事实上,很多人对自己下一步计划,以及一个中长期的目标都是不够明确的,这时候,可以求助身边比自己 level 高的人,多听听他们的意见和想法。有时目标不清晰,并不一定是你没有目标意识,而是认知不够,不清楚自己后续能做什么,要达到目标需要怎么一步一步的制定计划。这时就更需要去请教更多的人,分析他们给的建议或经验,来帮助自己确定下一步的方向。
关于 offer 选择上,如果拿到了你有意向公司的 offer,可以加上你面试官的微信,和他们了解公司以及团队的情况,看看和自己是否匹配。另外也可以联系你未来的 leader,了解你后续会做的项目,以及看看和 leader 之间是否 match。还可以通过询问猎头,目标公司内的其他人(通过脉脉,或者朋友等),了解团队,业务,leader 的一些情况,来帮助我们做出选择。在这一步上多花费些时间是十分值得的,因为这决定了你之后几年的工作,会有怎样的成长,以及会不会做的开心。
05
面试总结和复盘
面试的最最重要的当然是找到一份适合自己的工作。但是除此之后,我们还可以有意识的取收货一些额外的东西。
1. 发现自己不足
通过面试,很容易发现自己的技术上的不足,这就需要我们积极复盘,记录下自己不足的地方。
如果发现自己在某个方向上的不足,这很有利于我们制定后续的短期学习计划。另外,面试过程中,也可能会触碰到自己的知识盲区,积极复盘整理,能够帮助我们更好的去完善我们的知识体系。
2. 明确自己的目标
在面试大厂时,尤其到了后面的面试,都是一些有很丰富经验的大佬。我们可以和他们去沟通自己的目标和未来计划,听听他们的意见,这样可以让我们对目标和达到目标的路径更加清晰。
3. 了解其他团队在做的事情
借助面试的机会,了解其他团队都在做什么事情,这会给自己一些启发。也可以把自己在工作中遇到的问题提出来,了解一下其他团队是怎么解决的。这样做,首先可以解决自己的一些困惑,其次,会产生一些创新灵感,可以在下一份工作中进行实践。
新鲜大厂面试真题会在下篇文章中呈现,敬请期待!
如果等不及,也可以在 后台回复“面试题”,获取京东,高德,滴滴,美团,小米,腾讯,完美世界等最新的高频面试题!
小编最近新建了一个【前端技术及面试交流群】,长按下方二维码,后台回复“进群”,邀请你进群一起学习分享!
喜欢本文点个“在看”哟!
原文链接:https://www.codenong.com/cs106089027/