• 想要换工作的同学应该准备些什么呢?
  • 面试流程是什么样子的?
  • 如何应对面试呢?怎么样可以提高成功率?

如果你关心上面的问题,并且你的目标位置不超出我的能力范围(高级工程师、阿里P6、字节2-1)。我会以我的经验给你们一些建议

面试流程

  1. 复习、准备
  2. 投递简历
  3. 一面
  4. 二面
  5. 三面
  6. HR 面
  7. 定级、谈薪
  8. 定入职时间、收 offer

怎么准备面试?

前期准备

个人介绍

每一场面试第一个环节都是「请做一下自我介绍」,所以这个问题一定要提前准备好。

如何准备?个人介绍重点是什么?

我们先从面试官的角度来看一下面试官想知道什么?

  1. 姓名
  2. 如果你的姓名中有生僻字、多音字叫错还是比较尴尬的
  3. 确认你是否和面试官手中简历匹配。我就遇到过异常情况,候选人是面试 java 开发岗位
  4. 工作情况、项目概况、技术栈。虽然一般面试官会提前看过简历,但是有时候简历并不能很好地展示所有内容,所以需要一个简短的介绍来告诉面试官
  5. 比如说上家公司做音视频的、上家公司做 ERP、上家公司做 IM 的、在线协作、协同办公、项目管理、云服务商。如果说你从 YY 直播跳虎牙直播,实力比 YY 直播跳金山办公要匹配得多,公司匹配的话成功率更高,业务场景也更了解。比如说腾讯云、阿里云。
  6. 比如说做移动端活动、做 toB 的服务平台、做电商。你之前做移动端面的移动端岗位成功率更高,比如说抖音电商跳快手电商,就要比今日头条跳快手电商好。
  7. 比如说使用 JQuery、Vue、React、React、threejs。你简历中写了 React、Vue,但是你更擅长 Vue,面试官无法从简历中看到两个技术在你手中的掌握程度
  8. 擅长什么?优势是什么?
  9. 比如说你善于做移动端项目,善于使用 Vue,善于和其他部门沟通
  10. 比如说你做过一年 Node 开发,可以独立开发,也可以独立进行技术研发任务
  11. 比如说你善于对项目进行优化
  12. 甚至说你有过项目经理助理工作经验都是你的优势。
  13. 社区影响力,github 有开源项目,思否、掘金、CSDN 有内容产出

个人介绍案例

接下来我们就可以针对面试官写一份合适的自我介绍

  1. 你好,我叫xxx,我在上一家公司做的项目是和 XXX 相关。
    一直从事于 web 方面的工作,掌握的前端技术有很多 xxx。在上一家公司中,我收获不单单是技术方面,主要还有业务能力,自学能力和同事的沟通能力,这都是我学到的,而且我认为很重要的。我的性格方面不算外向,也不算内向,跟朋友,同事相处,比较外向,在工作中,代码开发时,我是比较内向的,我喜欢全心全意的投入工作中。我也喜欢交朋友,偶尔跟朋友聚聚,聊聊。对于工作我总是抱着认真负责,有责任心,吃苦耐劳的态度去工作。谢谢,以上是我的自我介绍。
  2. 面试官下午好,我叫XX,今天来应聘贵公司的前端工程师岗位。我从事前端开发两年多,有X年的XXX开发经验,在上家公司主要从事H5页面,后台管理系统,混合App等项目开发。平常喜欢逛一些技术社区丰富自己的技术,像思否,掘金之类,记录自己的工作总结和学习心得。
    我的性格比较温和,在工作中代码开发时我喜欢全心全意地投入,对于工作我总抱着认真负责的态度。面试官,以上是我的介绍,谢谢。
  3. 面试官你好;我叫XX,16年本科毕业于XXXX;毕业后在合肥卫宁,一家医疗软件公司工作,技术上前后端、数据库包括项目部署都做,属于全栈开发,18年来到上海入职京东一直到现在,做的是线下商场的后台及接口开发;老的项目还是 mvc,新项目都做了前后端分离,前端用到 H5、小程序 JQuery、EasyUI、VUE、Angular,后端用到 .Net Framwork 4.5,4.6 、NetCore、Java,数据库用到 SQLService、Mysql、MongoDB、Redis,中间件用到 RabbitMQ 消息队列,该公司是核心开发的角色,负责老项目的维护及二次开发,和其他开发相比,我的优势在于沟通交流能力比较强,还有我的责任心和学习能力也是比较强的,如果有幸加入XXXX,我相信我能快速融入团队,快速掌握公司相关的技术;谢谢领导。
  4. 面试官你好。我叫 XXXX。
    主要技术栈是 Vue 全家桶、jQuery、原生、Node,CSS 能力也不错,常见布局、伪类、过渡动画都会。
    上家公司是做音视频泛娱乐社交这块的,竞品如:全民K歌、唱吧、YY、快手、抖音之类的。我主要做移动端活动这块,年度庆典、小视频活动模板、直播间广告位之类的, PC 端也做一些,比如 PC的 IM 系统。因为公司的用户群体特性,对于兼容低版本设备有挺多经验。平时也经常在思否社区做问答,写文章笔记之类的,对于 BUG 排查员有敏锐度,也善于沟通理解问题。

知识储备

知识储备是我们面试成功的必需品。主要分为两部分:护城河、扩展。这里主要还是靠平时积累,面试时针对高频且不会的加强记忆。

接下来我们还是针对前端面试来举例。

前端护城河

什么是护城河?这都不会干屁股前端! 没办法就是这么卷,所以这里只能去卷一些八股文。

但是我推荐还是由易到难,从高频到低频。

  1. HTML、CSS、JS 基础知识
  2. flex: 0 1 auto 是什么意思?
  3. css 有哪些伪元素选择器
  4. HTML5 语义化标签有哪些?
  5. 闭包编程题
  6. 手写 Promise 实现
  7. 手写 requestCache 实现
  8. 同步异步、微任务宏任务
  9. 深拷贝
  10. Vue、React 常见基本框架
  11. 生命周期钩子函数
  12. 如何获取原始 DOM
  13. 如何获取虚拟 DOM
  14. 原理是什么?如何实现?
  15. 对 diff 的理解
  16. 数据双向绑定如何实现?兼容性?
  17. 状态管理、组件通信
  18. 路由跳转
  19. ElementUI、antd 基本框架搭配 UI 库
  20. 组件化开发
  21. 源码理解程度
  22. 能力熟悉程度
  23. 浏览器基本知识
  24. 浏览器缓存原理
  25. 本地存储
  26. 基本能力(上传、下载)

扩展

这里一般就不局限于前端,也不要求全部掌握,但是一般都会有一些擅长点。

  1. 打包构建、前端研发工具(webpack、babel、gulp、vite、eslint)
  2. webpack 升级。
  3. eslint、stylelint。
  4. git hook。(husky)
  5. 项目优化
  6. 打包速度优化
  7. 加载速度优化
  8. 产物体积优化
  9. 跨端、跨平台、跨技术、跨语言
  10. Node
  11. Python
  12. nginx
  13. git、svn。
  14. 如何回滚代码
  15. 网络
  16. https、http、http2,三次握手、四次挥手,如何保证安全
  17. websocket
  18. response 响应状态码
  19. 强缓存、弱缓存

算法练习

算法练习没什么好说的,简单必须会,中等也要做一些,困难看个人能力,掌握常见数据结构。一般就是推荐力扣、牛客。

学习路径的话是先了解数据结构,然后针对性做题,做不出来看题解。

  1. 链表、数组、字符串
  2. 查找是否有环?入环点在哪里?
  3. 快慢指针、双指针
  4. 先序遍历、中序遍历、后序遍历
  5. 平衡二叉树
  6. 栈、队列
  7. 动态规划

项目复盘

项目一般是为了看看你做过什么,有什么出色的地方,不是为了听你说一堆没用的。

这里属于一个没有标准答案的题,也是一个可以提前准备的题。

我面试的时候准备了三个内容,并且对具体实现方法都做了细致的应对方案。

  1. PC IM 消息列表优化,其中有长列表优化、排序算法Bug及优化思考、多消息类型支持、消息手法机制、发送框实现等等
  2. chrome 的 sort 使用了什么算法。chrome 低版本用的是什么算法。原理是什么。
  3. 自己使用了什么算法?二分查找+插入排序。从 xxms 优化到 xxms。
  4. M 直播间广告位设计,其中有排序规则、动态载入规则、动态上线下线规则等等
  5. 项目加载速度优化

常见问题准备

一般来说会有一些高频问题,我们可以提前准备一下。当然具体还是要看你的技术栈是什么,你可以针对你的技术栈做特殊复习。

  1. 职业规划
  2. 为什么选择前端
  3. 个人介绍、项目介绍
  4. promise
  5. 浏览器强缓存、协商缓存
  6. 闭包
  7. vue 数据双向绑定原理
  8. 菲波那切数列
  9. 微任务、宏任务

面试前准备

如果说我们简历、知识储备、常见问题都准备就绪,那么接下来我们就可以开始以战养战。

投递岗位

不建议海投,推荐你选择二线、一线、大厂,把自己心仪的公司放在第二三周。

  1. 培养题感。(我面试的时候一道简单的题没做出来,超级尴尬,那道题是一道我十年前就会的题,但是第一次面试的时候怎么都想不起来。懵了)
  2. 培养自信、调整心态、告别紧张。如果你在面试的时候手里已经有了保底的 offer,那么你整个人的精神都会不一样。而且要价的时候也更大胆。(我面试的时候拒绝了金山,因为薪资低)
  3. 由易到难、由低到高,慢慢提升。其实有时候小公司也挺爽的(前端10人±),太少的就不推荐了。

可以选择适合自己的岗位投递,并不是比如说快手所有人都在做App,也会有做面向机构的服务平台,也会有面向电商的服务平台,还有对内的基建中台等等。选择一个适合自己的岗位比乱投强太多了

面试真题(针对性搜索)

 

 

 

这个就属于玩赖了,比如说你面阿里,可以针对性去找一些阿里一面面经,最好把岗位部门带上(会有意外惊喜哟)

根据我面过的几家公司,网上是有真题的。

 

 

 

如果你常混社区的话,你甚至可以问问面过的前辈

 

面试后准备

面试完不代表着结束,收到 offer 才是结束。

面试复盘

所以这口气我们不能松,可以在面试后把所有题都记录下来,然后看看自己那个题掌握不够全面。

 

 

 

 

 

  1. 记录所有的面试题。网上搜索资料排查是否有回答不清晰,缺斤短两情况
  2. 录屏。做更完整的复盘,包括语气节奏、口头语、面部表情、反应速度等等。
  3. 从我自己来说,我即兴是不如我有准备的。同样一份资料,在我无准备讲出来会多很多口头语,甚至我在讲的时候都会注意到这个问题,但是我无法解决,也克制不住,留给我调整的时间太少了。所以我只能做很多准备。
  4. 如果有不会的题,千万要查一下,然后记住。因为下一面有可能会考近似题。面试官也会通过这种方式来看你的自学能力。
  5. 比如说你面第一个公司的时候,问了你权限的问题。那么你就应该重点关注一下,比如说按钮权限,异步权限,如何和服务端交互。这个问题在二面甚至说其他公司都会再次遇到。

真题整理

 

 

 

 

上面说了复盘的重要性,也说了需要整理真题,这里主要是需要你注意分类,而且需要看到题后的内容。

有时候面试题只是考点的一个应用场景,所以我们需要看到背后的知识,不只是把面试官问你的问题搞会。

一般来说面试题会符合部门场景,做 PC 的部门不可能问你移动端适配原理。

  • css
    • 「字节商业化」权重计算。
      • .a .b{color: #f00;} .b[data-role="1"]{color: #0f0}
    • 「阿里」选择器
    • 「快手搜索」「腾讯开放平台」css 单位
  • 网络
    • 缓存
    • https、http、http2

面试中有哪些最最最常见的坑

简历

到了我个人擅长的位置了。哈哈哈,我看过成百上千的简历,基本没有看错的。

  1. 一眼假的简历(工作时间、经历造价),一般针对实习生、应届生、培训班简历比较常见。
  2. 熟练使用 Vue + react,其实一般来说为了维护成本、学习成本,正常公司都会统一技术栈
  3. 熟练使用 Node xxxx,目前来看全栈工程师并不是很多,都会有可能只是半桶水
  4. 项目经历不属于同一家公司。比如说一个项目是医疗,一个项目是石油,项目跨度很大。这种一般我们考虑是否存在经验积累,一个持续迭代的精细项目才是我们想看到的。
  5. 项目经历一看就比较水、或者开源项目、样子货。比如说网易云、饿了么,Vue1 的时候就开始仿饿了么,Vue3 还仿。
  6. 图片来源于沸点:https://juejin.cn/pin/7072864...
  7. 错别字简历、排版异常简历、雷同简历、异常简历
  8. 部分简历会存在一些错别字,尤其是 Reat 之类的错别字。千万不要有错别字,会显得不细心。而且简历应该每个字都是用心写的。
  9. 学历异常、外派外包。我不歧视外包外派,但是从团队内任务分配、稳定性等多方面来说,的确不是很理想,需要多注意。
  10. 雷同简历出现在同一学校、毕业季,上下午两个人简历一模一样。简历不是论文机器查重,不管是ERP的登陆权限系统,还是后台管理系统的登录权限系统,都是相同的简历,不是改个名称就叫不同简历。
  11. 异常的常见功能,对于有工作经验的人来讲反而不是常见功能。不是说常见功能,一定就是开发常开发功能
  12. 比如说登陆注册、权限、菜单,登陆一般来说都是现成的功能,不会轮到你再去开发。
  13. 不是每一家公司都认为你的“玩具”很有意思。
  14. 比如你说你写了 IM 相关的功能,如果你面试的也是 IM 相关的部门,那么很大可能性会揪着这个功能深挖。
  15. 如果你写了性能优化,那么会给你一个近似的场景考你,看你有没有去做优化的动机。

面试准备(面试题、算法题权重问题)

建议你先准备基础知识题,然后常见题,最后准备算法题。一定要记住由易到难。

如果不是高级、专家岗位,算法都可以暂时放弃。

  • 我面试一面简单算法没答出来,但是并不影响我面试结果。顺利通过面试拿 offer。
  • 有个朋友,基础题还没搞会,疯狂练习算法。到现在还分不清判断是否有环和查找入环点两个题的区别。(快有十年工作经验了,还混在中级工程师)他以为算法好了就能换到大公司,但是算法题一般都在比较后面考察。

面试中

  1. 问薪资。一般来说前几面只是同级同事,不应该知道你的薪资。也无权决定
  2. “攻击”面试官。面试是否通过,就是当场面试官的一句话,很少公司有考核审查手段。所以不建议攻击面试官,放平心态(如果你不在乎这个机会,并且觉得和这样面试官共事比较恶心,那么怼就怼了。无所谓哈哈哈哈哈)。
  3. 我就遇到过一个人,面到一半跑了,和 HR 反馈我不专业。但是对我并没有什么影响。
  4. “贿赂”面试官。虽然说当前这场面试,面试官可以帮助你,但是后面还会有其他考核(天黑路滑人心复杂呀)。所以还是靠自己真正的实力比较好。
  5. 拖时间。一场面试 20分钟至 60分钟,会存在定会议室(HR 不帮定会议室,且有时间限制),工期挤压(面试属于突发时间,且不计算在正常工期中)等问题。所以不建议在单个问题上拖时间,这样会导致无法全面考察,直接判负。
  6. 不敢问面试官。面试官都是比较和善的,一些面试官也比较善于引导你回答问题。即使没有引导出来,给你个方向也是好事,面试官经验比较丰富,如果是单独的技术咨询来看明显是赚了。

面试官一般会问些什么问题?

一面(基础知识)

一面一般是同级同事、同级领导(斜线领导),属于主力开发,业务经验也比较足。一面侧重基础知识

  1. 项目考察(2个)
    1. 介绍一下你最近做的项目
    2. 介绍一下你在这个项目里做了什么?有什么出色的嘛?
    3. 你是怎么进行项目优化的?你是怎么设计这块权限的?你是怎么实现这里的?你的设计思路是什么?
    4. 你在项目中负责什么?有什么特别满意的地方的?
    5. 你们团队构成是什么样子?开发流程是什么样子?有什么优化空间嘛?
    6. 印象中最深的一件事
  2. 基础之类(6个±)
    1. js、css、html 基础题。(2个)
    2. css 样式优先级、权重计算、选择器、Flex 布局等等
    3. js 场景类型、数组方法、闭包等等
    4. html 语义化标签、其他能力?
    5. js 高级开发(2个)
    6. Promise、await、async、异步同步、微任务宏任务
    7. 继承、class、ES6+
    8. TS
    9. webpack、gulp、babel
    10. 框架知识 Vue、React
    11. requestCache、自动重试、异常上报
    12. 扩展知识(1个)
    13. http2、http1.1、https
    14. nginx
    15. node
    16. echarts、threejs、ui 等等
  3. 算法(1个)
  4. 一般会出初中级难度的题,链表、树、栈队列比较常见,图好像少一些
  5. 考察时间复杂度、空间复杂度
  6. 会让你讲一下想法
  7. 会让你思考有没有优化空间,如果有会逐步优化
  8. 简历异常点(学历、工作变动频繁)
  9. 普通聊天
    1. 为什么离职呀?
    2. 为什么选择我们公司呀?
    3. 为什么学前端呀?
    4. 住哪里呀?
    5. 平时有什么爱好
    6. 如何学习前端?
    7. 逛社区嘛?
    8. 对我们公司什么看法?
    9. 觉得今天面试表现怎么样?

二面(项目)

二面一般是不同组同事,一般来说是跨组交叉面试,当然会有可能不是前端。二面一般更侧重项目

  1. 项目考察(同一面,但有可能切入点不同)
  2. 高级应用(同一面,但是一般会和实际业务关联)
  3. 算法(同一面)
  4. 普通聊天(同一面)

这里可以看到,如果一面过了,二面基本是稳的。

因为一二面本身级别差不多,有可能面试官不是同技术(java)、升职不是技术(产品)

三面

三面一般是直系领导(50人至100人团队负责人),可能是前端,也可以是其他端,只能说肯定是个技术人员。

  1. 项目考察(同一面,切入点不同,会更加深入甚至扩展转换)
  2. 算法(同一面,但是有可能不用写,只考思路)
  3. 扩展知识
    1. 项目如何协调
    2. 分支如何管理
    3. 任务进度如何管理
    4. 上线流程是什么
    5. 发版流程是什么
  4. 部门介绍
  5. 普通聊天(同一面)

一般来说高级工程师就只有三面,三面的这个人就是决定你是否能入职的那个人,三面面试官一般也是一面面试官的直系领导。

HR 面试

  1. 普通聊天(同一面)
    1. 职业规划
    2. 为什么选择我们
    3. 你在原来公司负责什么
    4. 为什么离职
  2. 薪资期望
    1. 你当前的薪资
    2. 你期望的薪资

问面试官哪些问题?

一面

一面面试官一般就是你的同事,也是主力开发,是真正的打工人。所以这在一面环节你可以多问一些你关心的内容

  1. 面试官是谁?是否为你的同事。
  2. 工作情况
  3. 基建情况
  4. 团队氛围、团队规模
  5. 技术方向
  6. 自己表现怎么样
  7. 自己没答好的题,看看能不能给个方向。

二面

二面面试官因为存在交叉面试的情况,所以可用信息不太多。

  1. 面试官是谁?是否是你的同事,还是交叉?
  2. 自己表现怎么样
  3. 问面试官所在的团队氛围
  4. 自己没答好的题,看看能不能给个方向。

三面

三面面试官是你的直属领导,能管得事也比较多,你可以问一些其他的东西。

  1. 晋升机制、培训机制是否完善
  2. 团队氛围
  3. 所做业务
  4. 团队规划
  5. 有不懂的点也可以问,白嫖的交流机会啊