2022招聘季 | 怎么准备面试?面试官一般会问些什么问题? | web 前端


思否
职业发展 Vue React jQuery MongoDB

转载自 SegmentFault

前两天北京下雪了,很冷。2022 招聘季,好像也比往年冷一些。

2021 年 K12 的大量裁员,腾讯、快手、字节、滴滴、蘑菇街也在裁员。

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

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

面试流程

  • 复习、准备
  • 投递简历
  • 一面
  • 二面
  • 三面
  • HR 面
  • 定级、谈薪
  • 定入职时间、收 offer

怎么准备面试?

前期准备

个人介绍

每一场面试第一个环节都是「请做一下自我介绍」,所以这个问题一定要提前准备好。 如何准备?个人介绍重点是什么? 我们先从面试官角度来看一下面试官想知道什么?

姓名 如果你的姓名中有生僻字、多音字叫错还是比较尴尬的

  • 确认你是否和面试官手中简历匹配。我就遇到过异常情况,候选人是面试 java 开发岗位

工作情况、项目概况、技术栈。虽然一般面试官会提前看过简历,但是有时候简历并不能很好的展示所有内容,所以需要一个简短的介绍来告诉面试官 比如说上家公司做音视频的、上家公司做 ERP、上家公司做 IM 的、在线协作、协同办公、项目管理、云服务商。如果说你从 YY 直播跳虎牙直播,是比 YY 直播跳金山办公要匹配的多,公司匹配的话成功率更高,业务场景也更了解。比如说腾讯云、阿里云。

  • 比如说做移动端活动、做 toB 的服务平台、做电商。你之前做移动端面移动端岗位成功率更高,比如说抖音电商跳快手电商,就要比今日头条跳快手电商好。
  • 比如说使用 JQuery、Vue、React、React、threejs。你简历中写了 React、Vue,但是你更擅长 Vue,面试官无法从简历中看到两个技术在你手中的掌握程度

擅长什么?优势是什么? 比如说你善于做移动端项目,善于使用 Vue,善于和其他部门沟通

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

知识储备

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

接下来我们还是针对前端面试来举例。 前端护城河 什么是护城河?这都不会干屁前端! 没办法就是这么卷,所以这里只能去卷一些八股文。

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

HTML、CSS、JS 基础知识 flex: 0 1 auto 是什么意思?

  • css 有哪些伪元素选择器
  • HTML5 语义化标签有哪些?
  • 闭包编程题
  • 手写 Promise 实现
  • 手写 requestCache 实现
  • 同步异步、微任务宏任务
  • 深拷贝

Vue、React 常见基本框架 生命周期钩子函数

  • 如何获取原始 DOM
  • 如何获取虚拟 DOM
  • 原理是什么?如何实现?
  • 对 diff 的理解
  • 数据双向绑定如何实现?兼容性?
  • 状态管理、组件通信
  • 路由跳转

ElementUI、antd 基本框架搭配 UI 库 组件化开发

  • 源码理解程度
  • 能力熟悉程度

浏览器基本知识 浏览器缓存原理

  • 本地存储
  • 基本能力(上传、下载) 扩展 这里一般就不局限于前端,也不要求全部掌握,但是一般都会有一些擅长点。

打包构建、前端研发工具(webpack、babel、gulp、vite、eslint) webpack 升级。

  • eslint、stylelint。
  • git hook。(husky)

项目优化 打包速度优化

  • 加载速度优化
  • 产物体积优化

跨端、跨平台、跨技术、跨语言 Node

  • Python
  • nginx

git、svn。 如何回滚代码

网络 https、http、http2,三次握手、四次挥手,如何保证安全

  • websocket
  • response 响应状态码
  • 强缓存、弱缓存

算法练习

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

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

链表、数组、字符串 查找是否有环?入环点在哪里?

  • 快慢指针、双指针

树 先序遍历、中序遍历、后序遍历

  • 平衡二叉树
  • 栈、队列
  • 动态规划

项目复盘

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

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

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

PC IM 消息列表优化,其中有长列表优化、排序算法Bug及优化思考、多消息类型支持、消息手法机制、发送框实现等等 chrome 的 sort 使用了什么算法。chrome 低版本用的是什么算法。原理是什么。

  • 自己使用了什么算法?二分查找+插入排序。从 xxms 优化到 xxms。
  • M 直播间广告位设计,其中有排序规则、动态载入规则、动态上线下线规则等等
  • 项目加载速度优化

常见问题准备

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

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

面试前准备

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

投递岗位

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

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

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

面试真题(针对性搜索)

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

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

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

面试后准备

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

面试复盘

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

  • 记录所有的面试题。网上搜索资料排查是否有回答不清晰,缺斤短两情况

录屏。做更完整的复盘,包括语气节奏、口头语、面部表情、反应速度等等。 从我自己来说,我即兴是不如我有准备的。同样一份资料,在我无准备讲出来会多很多口头语,甚至我在讲的时候都会注意到这个问题,但是我无法解决,也克制不住,留给我调整的时间太少了。所以我只能做很多准备。

如果有不会的题,千万要查一下,然后记住。因为下一面有可能会考近似题。面试官也会通过这种方式来看你的自学能力。 比如说你面第一个公司的时候,问了你权限的问题。那么你就应该重点关注一下,比如说按钮权限,异步权限,如何和服务端交互。这个问题在二面甚至说其他公司都会再次遇到。

真题整理

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

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

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

css

「字节商业化」权重计算。 .a .b{color: #f00;} .b[data-role="1"]{color: #0f0}

  • 「阿里」选择器
  • 「快手搜索」「腾讯开放平台」css 单位

网络 缓存

  • https、http、http2

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

简历

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

一眼假的简历(工作时间、经历造价),一般针对实习生、应届生、培训班简历比较常见。 熟练使用 Vue + react,其实一般来说为了维护成本、学习成本,正常公司都会统一技术栈

  • 熟练使用 Node xxxx,目前来看全栈工程师并不是很多,都会有可能只是半桶水
  • 项目经历不属于同一家公司。比如说一个项目是医疗,一个项目是石油,项目跨度很大。这种一般我们考虑是否存在经验积累,一个持续迭代的精细项目才是我们想看到的。

项目经历一看就比较水、或者开源项目、样子货。比如说网易云、饿了么,Vue1 的时候就开始仿饿了么,Vue3 还仿。 图片来源于沸点:https://juejin.cn/pin/7072864

错别字简历、排版异常简历、雷同简历、异常简历 部分简历会存在一些错别字,尤其是 Reat 之类的错别字。千万不要有错别字,会显得不细心。而且简历应该每个字都是用心写的。

  • 学历异常、外派外包。我不歧视外包外派,但是从团队内任务分配、稳定性等多方面来说,的确不是很理想,需要多注意。
  • 雷同简历出现在同一学校、毕业季,上下午两个人简历一模一样。简历不是论文机器查重,不管是ERP的登陆权限系统,还是后台管理系统的登录权限系统,都是相同的简历,不是改个名称就叫不同简历。

异常的常见功能,对于有工作经验的人来讲反而不是常见功能。不是说常见功能,一定就是开发常开发功能 比如说登陆注册、权限、菜单,登陆一般来说都是现成的功能,不会轮到你再去开发。

不是每一家公司都认为你的“玩具”很有意思。 比如你说你写了 IM 相关的功能,如果你面试的也是 IM 相关的部门,那么很大可能性会揪着这个功能深挖。

  • 如果你写了性能优化,那么会给你一个近似的场景考你,看你有没有去做优化的动机。

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

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

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

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

面试中

  • 问薪资。一般来说前几面只是同级同事,不应该知道你的薪资。也无权决定

“攻击”面试官。面试是否通过,就是当场面试官的一句话,很少公司有考核审查手段。所以不建议攻击面试官,放平心态(如果你不在乎这个机会,并且觉得和这样面试官共事比较恶心,那么怼就怼了。无所谓哈哈哈哈哈)。 我就遇到过一个人,面到一半跑了,和 HR 反馈我不专业。但是对我并没有什么影响。

  • “贿赂”面试官。虽然说当前这场面试,面试官可以帮助你,但是后面还会有其他考核(天黑路滑人心复杂呀)。所以还是靠自己真正的实力比较好。
  • 拖时间。一场面试 20分钟至 60分钟,会存在定会议室(HR 不帮定会议室,且有时间限制),工期挤压(面试属于突发时间,且不计算在正常工期中)等问题。所以不建议在单个问题上拖时间,这样会导致无法全面考察,直接判负。
  • 不敢问面试官。面试官都是比较和善的,一些面试官也比较善于引导你回答问题。即使没有引导出来,给你个方向也是好事,面试官经验比较丰富,如果是单独的技术咨询来看明显是赚了。

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

一面(基础知识)

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

项目考察(2个) 介绍一下你最近做的项目

  • 介绍一下你在这个项目里做了什么?有什么出色的嘛?
  • 你是怎么进行项目优化的?你是怎么设计这块权限的?你是怎么实现这里的?你的设计思路是什么?
  • 你在项目中负责什么?有什么特别满意的地方的?
  • 你们团队构成是什么样子?开发流程是什么样子?有什么优化空间嘛?
  • 印象中最深的一件事

基础之类(6个±)

js、css、html 基础题。(2个) css 样式优先级、权重计算、选择器、Flex 布局等等

  • js 场景类型、数组方法、闭包等等
  • html 语义化标签、其他能力?

js 高级开发(2个) Promise、await、async、异步同步、微任务宏任务

  • 继承、class、ES6+
  • TS
  • webpack、gulp、babel
  • 框架知识 Vue、React
  • requestCache、自动重试、异常上报

扩展知识(1个) http2、http1.1、https

  • nginx
  • node
  • echarts、threejs、ui 等等

算法(1个) 一般会出初中级难度的题,链表、树、栈队列比较常见,图好像少一些

  • 考察时间复杂度、空间复杂度
  • 会让你讲一下想法
  • 会让你思考有没有优化空间,如果有会逐步优化
  • 简历异常点(学历、工作变动频繁)

普通聊天 为什么离职呀?

  • 为什么选择我们公司呀?
  • 为什么学前端呀?
  • 住哪里呀?
  • 平时有什么爱好
  • 如何学习前端?
  • 逛社区嘛?
  • 对我们公司什么看法?
  • 觉得今天面试表现怎么样?

二面(项目)

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

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

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

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

三面

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

  • 项目考察(同一面,切入点不同,会更加深入甚至扩展转换)
  • 算法(同一面,但是有可能不用写,只考思路)

扩展知识 项目如何协调

  • 分支如何管理
  • 任务进度如何管理
  • 上线流程是什么
  • 发版流程是什么
  • 部门介绍
  • 普通聊天(同一面)

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

HR 面试

普通聊天(同一面) 职业规划

  • 为什么选择我们
  • 你在原来公司负责什么
  • 为什么离职

薪资期望 你当前的薪资

  • 你期望的薪资

问面试官哪些问题?

一面

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

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

二面

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

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

三面

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

  • 晋升机制、培训机制是否完善
  • 团队氛围
  • 所做业务
  • 团队规划
  • 有不懂的点也可以问,白嫖的交流机会啊。 本文参与了 SegmentFault 思否征文「如何“反杀”面试官?」,欢迎正在阅读的你也加入。

原文:SegmentFault

评论

评论功能即将开放。你也可以通过 邮件GitHub Issue 反馈。