前端面试提问
公司前端离职了,想要招聘一名前端,这是准备的面试提问,记录一下。
1. 候选人自我介绍
通过候选人的自我介绍,了解候选人的基本情况,包括工作经验、项目经验、技术栈等。
针对候选人的介绍内容,记下他相对有深度的点,后续进行提问,以了解候选人的技术掌握程度。
2. 项目经验介绍
让候选人介绍自己的项目,要求对方简单介业务背景、重点介绍项目的技术栈、遇到的难点、具体的解决方案等,以及自己在项目中的角色和贡献。(考察候进人的项目经验、技术栈、解决问题的能力)
3. 基于简历针对性提问
掌握浏览器,
V8
的工作机制?挑一两个,给我讲讲吗(讲讲垃圾回收,如何写避免内存泄漏,performance
排查手段)你简历中写到熟练掌主流端框架技术及原理,我们团队目前的情况是
Vue
居多我你一些Vue
的问题 (Vue3
的新特性,Vue2
和Vue3
的区别,Vue
的生命周期,Vue
的响应式原理,Vue
的双向定原理。)为什么
Vue2
中的一些数组和对象操作不会触发视图更新?(考察下候选人对Object.defineProperty
的熟悉程度)你的简历中提到特长是: 架构设计,延缓屎山;请问你在项目中是如何实践的?(模块化,设计模式,类型系统,规范)
看到你写了
antd
是垃圾,怎么说,你是如何看待antd
的?(antd
的设计,组件库的设计,组件库的使用)如果你来设计一套组件,你会在方面做优化和改进(你有写到css in js
,你觉得它和style component
有什区别?你对Tailwind
怎么看?有做过Web Components
组件吗?)你简历上写了参与了
antv/g6
的开源,主导antv/a8
音频可视化,你主要做哪些贡献呢? (我查你gthub
只有一个改单词的PR
,是没有公开还是不在主分支呢2)看你写过
vite
插件,讲讲vite
插件的生命周期,和热更新的机制,开发阶段为什么比webpack
快?(可以扩展考考esm
)看你简历写过
rollup
插件,讲讲rollup
插件的生命周期,它和webpack
比有什么优势? (rollup
是第一个提出tree shaking
概念的打包器,我考你一个tree shaking
的知识点)用到
npm
上库,提交issue
但没有被合并,本地临时怎么让其他组员友好的使用到你修复的代码? (考考会不会patch
)平时热爱输出吗?开源,写文章,或者工作中输出文档?
4. 整点基础问题,看下掌握程度
解释JavaScript原型链及其工作原理。
介绍Promise和async/await的区别及应用场景。
解释Vue中的数据绑定及其实现原理。
讲述Vue的生命周期方法。
尽你所能完整的描述一下从输入
URL
到页面展示的过程这块可考察的点很多,全链路皆可优化,重点间下这条链路中候选人落地过的点以及优化后的效果,考察候选人是否真的有相关优化经验考察一些
ES6+
知识点,Promise
,Proxy
的使用async/await
的使用,Set
和Map
的使用,WeakSet
和WeakMap
的使用(这里考一下什么时候用WeakXXX
)用过哪些设计模式?挑几个常用的详细讲
讲讲缓存策路何考察:强缓存和协商缓存的区别,缓存的实现方式,更新策略以及优先级;
Service Worker
,Memory Cache
,Disk Cache
,Push Cache
,扩展可考OPFS
等)编程题(根据回答,看情况是否需要补充验证)写两个基础题看看积累:
实现一个
sleep
函数,可从Promise
、Generator
、Async/Await
, 或局限es5
回调模式等角度实现(考察一下异步编程的基础)写个二分查找或者快排
5. 必要的团队协作相关问题(避免进来搞破坏)
确保候选人
ts
不拉跨,要求讲讲用过ts
工具类型,你是如何用的?is
,infer
,keyof
,泛型
啥的都熟悉吗?版本管理相关,
git
一些必要的规范和使用(commit 规范
,stash
,reset
几种模式,revert
摘除中间部位的提交,rebase 压缩
,摘除
,重置头
部,会不会查log
,reflog
等)