作者 | 于是乎 整理 | 桔子酱
最近换工作 , 大大小小面试了不少公司 , 其中包括京东 , 高德 , 滴滴 , 美团 , 小米 , 腾讯 , 完美世界 , 爱奇艺等知名公司 , 已经拿到合适的 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 缓存策略
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://blog.csdn.net/yuqing1008/article/details/106089027