最后提醒一次,前端面试要多背,别太老实

66 阅读14分钟

我见过太多技术扎实的前端兄弟,栽在了面试这一关。不是代码写得不行,也不是项目经验不够,而是太老实了

面试官问:“你对闭包的理解怎么样?”
老实人张口就来:“还行吧,平时工作用得少,就知道个大概。”
面试官问:“这个项目你主要负责什么?”
老实人实诚回答:“我就写写页面,接口都是后端给的,没啥难度。”

兄弟,醒醒!这是面试,不是让你写工作总结!你以为的 “实事求是”,在面试官眼里就是 “能力不行”“没思考过”“价值不高”。面试的本质,就是一场短时间的自我营销。你得在 30-60 分钟里,把自己的优势最大化地展示出来。而 “多背” 和 “别太老实”,就是这场营销的核心技巧。

先说说为什么要多背

前端面试的 “八股文” 不是玄学,是面试官筛选候选人的高效工具。你以为面试官不知道 “面试造火箭,工作拧螺丝”?他们太清楚了!但正因为日常工作里,大家都是搬砖,才需要通过这些标准化的问题,判断你的知识储备和基本功。你背熟了原型链的底层逻辑,面试官就知道你 JS 基础扎实;你背会了 Vue 响应式原理的演进,面试官就明白你不是只会用 API 的 “工具人”;你能把防抖节流的手写思路脱口而出,面试官就会觉得你有实际解决问题的能力。这些东西,靠临场发挥是不行的。尤其是面试紧张的时候,脑子一空白,啥都想不起来。只有提前背熟,形成肌肉记忆,才能在面试官面前侃侃而谈。这里说的 “背”,不是死记硬背,而是理解后的记忆。比如背闭包,你得先搞懂 “词法作用域”“变量提升” 这些底层概念,再结合实际工作中的应用场景(比如防抖节流、模块化)去记。这样你回答的时候,才不是干巴巴的背诵,而是有血有肉的 “经验分享”。

再聊聊别太老实这件事。

这不是让你撒谎造假,而是拒绝无效谦虚,学会合理包装。举几个很现实的例子:

  • 你负责过一个后台管理系统的页面开发,别再说 “我就写写页面”,换成 “我负责搭建这个项目的前端架构,封装了通用组件库,优化了列表渲染的性能,把首屏加载时间缩短了 50%”。
  • 你用过 Vue 写过几个项目,别再说 “我只会基础用法”,换成 “我熟练掌握 Vue 的响应式原理和组件通信方式,能独立完成中大型项目的开发,还做过 Vuex 状态管理的优化”。
  • 面试官问你会不会某个没接触过的技术,别直接说 “不会”,换成 “我虽然没直接用过,但它的核心原理和 XX 技术很像,我之前做过类似的实现,上手应该很快”。

你看,同样的经历,换种说法,在面试官心里的分量完全不一样。

还有一个很重要的点:主动引导话题

如果面试官问的问题你不太熟,别硬着头皮瞎答,也别直接说不会。可以礼貌地说:“这个问题我了解得不多,但我对 XX 相关的技术研究得比较深,比如 XXX”,然后把话题引到你擅长的领域。面试是双向沟通,不是单向审问。你越主动,越能掌握主动权。我整理了前端面试高频背诵清单(含 JS 基础 + 框架核心 + 工程化 + 手写题),都是我踩坑总结的精华内容,背完直接去面试!


  • 1.请求失败会弹出一个 toast,如何保证批量请求失败,只弹出一个 toast
  • 2.如何减少项目里面 if-else
  • 3.babel-runtime 作用是啥
  • 4.如何实现预览 PDF 文件
  • 5.如何在划词选择的文本上添加右键菜单(划词:鼠标滑动选 择一组字符,对组字符进行操作)
  • 6.富文本里面,是如何做到划词的(鼠标滑动选择一组字 符,对组字符进行操作)?
  • 7.如何做好前端监控方案
  • 8.如何标准化处理线上用户反馈的问题
  • 9.px 如何转为 rem
  • 10.浏览器有同源策略,但是为何 cdn 请求资源的时候不会有跨域限制
  • 11.cookie 可以实现不同域共享吗
  • 12.axios 是否可以取消请求
  • 13.前端如何实现折善面板效果?
  • 14.dom 里面,如何判定a元素是否是b元素的子元
  • 15.判断一个对象是否为空,包含了其原型链上是否有自定义数据或者方法。该如何判定?
  • 16.js如何判空?「空」包含了:空数组、空对象、空字符 串、0、undefined、nul、空 map、空set,都属于为空
  • 数据
  • 17.css 实现翻牌效果
  • 18.flex:1代表什么
  • 19.一般是怎么做代码重构的
  • 20.如何清理源码里面没有被应用的代码,主要是JS、TS、 CSS 代码
  • 21.前端应用 如何做国际化?
  • 22.应用如何做应用灰度发布
  • 23.[微前端] 为何通常在 微前端 应用隔离不选择 iframe 万案
  • 24.[微前端] Qiankun 是如何做 JS 隔离的
  • 25.「微前端]微前端架构一般是如何做 JavaScript隔离
  • 26.[React]循环渲染中 为什么推荐不用 index 做 key
  • 27.[React]如何避免使用 context 的时候,引起整个挂载节 点树的重新渲染!
  • 28.前端如何实现截图?
  • 29.当QPS达到峰值时,该如何处理?
  • 30.js 超过 Number 最大值的数怎么处理?
  • 31.使用同一个链接,如何实现 PC 打开是 web 应用、手机打 开是一个 H5 应用?
  • 32.如何保证用户的使用体验
  • 33.如何解决页面请求接口大规模并发问题
  • 34.设计一套全站请求耗时统计工具
  • 35.大文件上传了解多少
  • 36.H5 如何解决移动端适配问题
  • 37.站点一键换肤的实现方式有哪些?
  • 38.如何实现网页加载进度条?
  • 39.常见图片懒加载方式有哪些?
  • 40.cookie 构成部分有哪些
  • 41.扫码登录实现方式
  • 42.DNS 协议了解多少
  • 43.函数式编程了解多少?
  • 44.前端水印了解多少?
  • 45.什么是领域模型
  • 46.一直在 window 上面挂东西是否有什么风险
  • 47.深度 SEO优化的方式有哪些,从技术层面来说
  • 48.小程序为什么会有两个线程
  • 49.web 应用中如何对静态资源加载失败的场景做降级处理
  • 50.html中前缀为 data-开头的元素属性是什么?
  • 51.移动端如何实现上拉加载,下拉刷新?
  • 52.如何判断dom元素是否在可视区域
  • 53.前端如何用 canvas 来做电影院选票功能
  • 54.如何通过设置失效时间清除本地存储的数据?
  • 55.如果不使用脚手架,如果用 webpack 构建一个自己的 react 应用
  • 56.用 nodejs 实现一个命令行工具,统计输入目录下面指定代码的行数
  • 57.package.json 里面 sideEffects 属性的作用是啥
  • 58.script 标签上有那些属性,分别作用是啥?
  • 59.为什么 SPA应用都会提供一个 hash 路由,好处是什么?
  • 60.[React]如何进行路由变化监听
  • 61.单点登录是是什么,具体流程是什么
  • 62.web 网页如何禁止别人移除水印
  • 63.用户访问页面白屏了,原因是啥,如何排查?
  • 64.[代码实现JS 中如何实现大对象深度对比
  • 65.如何理解数据驱动视图,有哪些核心要素?
  • 66.vue-cli 都做了哪些事儿,有哪些功能?

JavaScript

  1. 不会冒泡的事件有哪些?
  2. mouseEnter 和mouseOver 有什么区别?
  3. MessageChannel是什么,有什么使用场景?
  4. async、 await 实现原理
  5. Proxy能够监听到对象中的对象的引用吗?
  6. 如何让 var [a, b] = {a: 1, b: 2} 解构赋值成功?
  7. 下面代码会输出什么?
  8. 描述下列代码的执行结果
  9. 什么是作用域链?
  10. bind、call、apply有什么区别?如何实现一个bind?
  11. common.js和es6中模块引l入的区别?
  12. 说说vue3 中的响应式设计原理
  13. script标签放在header里和放在body底部里有什么区别?
  14. 下面代码中,点击”+3”按钮后,age的值是什么?
  15. Vue中,created和mounted两个钩子之间调用时间差值受什么影响?
  16. vue中,推荐在哪个生命周期发起请求?
  17. 不会冒泡的事件有哪些?
  18. mouseEnter 和mouseOver 有什么区别?
  19. 为什么Node在使用es module时必须加上文件扩展名?
  20. package.json文件中的 devDependencies和dependendes对象有什么区别?
  21. React Portals 有什么用?
  22. react 和 react-dom是什么关系?
  23. MessageChannel是什么,有什么使用场景?
  24. React 中为什么不直接使用requestIdleCallback?
  25. 为什么react需要 fiber 架构,而Vue 却不需要?

CSS

  1. css 中的 animation、transition,transform有什么区别?
  2. 怎么做移动端的样式适配?
  3. 相邻的两个inline-block节点为什么会出现间隔,该何解决?
  4. grid网格布局是什么?
  5. CSS3新增了哪些特性?
  6. 怎么使用cSS3实现动画?
  7. 怎么理解回流跟重绘?什么场景下会触发?
  8. 什么是响应式设计?响应式设计的基本原理是什么?如何进行实现?
  9. 如果使用CSs提高页面性能?
  10. 如何实现单行/多行文本溢出的首略样式?
  11. 如何使用css完成视差滚动效果?
  12. 怎么使用CSS 如何画一个三角形
  13. 说说对CSS 工程化的理解
  14. 怎么触发BFC,BFC有什么应用场景?
  15. 单行文本怎么实现两端对齐?
  16. 说说你对 CSS 模块化的理解
  17. CSS 模块化的实现方式
  18. 怎么让Chrome支持小于12px 的文字?
  19. 怎么让Chrome支持小于12px的文字?
  20. flexbox(弹性盒布局模型)是什么,适用什么场景?
  21. 如何实现两栏布局,右侧自适应?三栏布局中间自适应呢?
  22. 设备像素、css像素、设备独立像素、dpr、ppi 之间有什么区别?

HTML

  1. 什么是DOM和 BOM?
  2. 简单描述从输入网址到页面显示的过程
  3. 一台设备的dpr,是否是可变的?
  4. 前端效如何选择图片的格式?
  5. 前端跨页面通信,你道哪些方法?
  6. 说说你对Dom树的理解
  7. 行内元素有哪些?块级元素有哪些?空(void)元素有那些?
  8. htm和css中的图片戏与渲染规则是什么样的?
  9. title与h1的区别、b与strong的区别、与em的区别?
  10. script标签为什么建议放在 body标签的底部(defer、async)
  11. 说说你对 SSG 的理解
  12. 什么是HTML5,以及和HTML的区别是什么?
  13. 什么是渐进增虽和优雅降级?
  14. Node 和Element 是什么关系?
  15. 导致页面加载白屏时间长的原因有哪些,怎么进行优化?
  16. 如何控制input输入框的输入字数?
  17. 渐进式jpg有了解过吗?
  18. 假设我要上传图片,怎么在选择图片后,通过浏览器预览待上传的图片?

React

  1. 下面代码中,点击”+3”按钮后,age的值是什么?
  2. React Portals 有什么用?
  3. react和react-dom是什么关系?
  4. React 中为什么不直接使用 requestIdleCallback?
  5. 为什么react 需要 fiber 架构,而Vue 却不需要?
  6. 子组件是一个Portal,发生点击事件能冒泡到父组件吗?
  7. React 为什么要废弃componentWillMount、componentWillReceiveProps、componentWillUpdate这三个生命周期钩子?它们有哪些问题呢?React又是如何解决的呢?
  8. 说说React render方法的原理?在什么时候会被触发?
  9. 说说React事件和原生事件的执行顺序
  10. 说说对受控组件和非受控组件的理解,以及应用场景?
  11. 你在React项目中是如何使用Redux的?项目结构是如何划分的?
  12. 说说对Redux中间件的理解?常用的中间件有哪些?实现原理?
  13. 说说你对Redux的理解?其工作原理?
  14. 说说你对immutable的理解?如何应用在react项目中?
  15. 说说React Jsx转换成真实DOM过程?
  16. 说说你在Reac项目是如何捕获错误的?
  17. 说说React服务端宣染怎么做?原理是什么?
  18. ReactFiber是如何实现更新过程可控?
  19. Fiber 为什么是React 性能的一个飞跃?
  20. setState是同步,还是异步的?

Vue

  1. Vue 有了数据响应式,为何还要diff?
  2. vue3为什么不需要时间分片?
  3. vue3为什么要引入Composition API?
  4. 谈谈 Vue 事件机制,并手写on、on、on、off、emit、emit、 emit、once
  5. computed计算值为什么还可以依赖另外一个computed计算值?
  6. 说一下vm.$set 原理
  7. 怎么在Vue 中定义全局方法?
  8. Vue中父组件怎么监听到子组件的生命周期?
  9. vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么?
  10. 说说vue3中的响应式设计原理
  11. Vue中,created和mounted两个钩子之间调用时间差值受什么影响?
  12. vue中,推荐在哪个生命周期发起请求?
  13. 为什么react 需要 fiber 架构,而 Vue 却不需要?
  14. SPA(单页应用)首屏加戏速度慢怎么解决?
  15. 说下Vite的原理
  16. Vue2.0为什么不能检查数组的变化,该怎么解决?
  17. 说说Vue 页面渲染流程
  18. vue中computedfDwatch区别
  19. vuex中的辅助函数怎么使用?
  20. 如果使用Vue3.0实现一个Modal,你会怎么进行设计?
  21. Vue 3.0中Treeshaking特性是什么,并举例进行说明?
  22. Vue3.0所采用的Composition Api与Vue2.x使用的Options Api有什么不同?
  23. Vue3.0性能提升主要是通过哪几方面体现的?
  24. Vue3.0的设计目标是什么?做了哪些优化?
  25. 你是怎么处理vue项目中的错误的?

算法

  1. 最大的钻石
  2. 举例说明你对尾递归的理解,以及有哪些应用场景
  3. 去除字符串中出现次数最少的字符,不改变原字符串的顺序。
  4. 请手写”快速排序”
  5. 洗牌算法
  6. 什么是尾调用优化和尾递归?
  7. 合并K个升序链表
  8. 什么是时间复杂度?
  9. 请手写“基数排序”

TypeScript

  1. 说说对 TypeScript 中命名空间与模块的理解?区别?
  2. 说说你对 typescript 的理解?与javascript 的区别?
  3. Typescript中泛型是什么?
  4. TypeScript中有哪些声明变量的方式?
  5. 什么是Typescript的方法重载?
  6. 请实现下面的 sleep 方法
  7. typescript 中的 is 关键字有什么用?
  8. TypeScrip支持的访问修饰符有哪些?
  9. 请实现下面的 myMap 方法
  10. 请实现下面的 treePath方法
  11. 请实现下面的 product 方法
  12. 请实现下面的 myAll 方法
  13. 请实现下面的 sum 方法
  14. 请实现下面的 mergeArray 方法
  15. 实现下面的 firstSingleChar 方法
  16. 实现下面的 reverseWord 方法
  17. 如何定义一个数组,它的元紊可能是字符串类型,也可能是数值类型?
  18. 请补充 objToArray数

注:篇幅所限本文就只贴一下题目了,文中的前端场景面试题汇总PDF已经打包完毕,希望对大家有帮助:

weixin.jpg 最后想跟大家说:

背八股文,是为了拿到面试的入场券;别太老实,是为了让你的价值被看见。技术能力决定你入职后的下限,但面试表现,决定你能不能拿到入职的机会。那些张口就来的 “标准答案”,那些听起来很牛的 “项目包装”,不是投机取巧,而是每个前端求职者都该掌握的生存技能。别再让 “老实” 拖你的后腿了。从今天开始,把高频面试题背熟,把项目经历润色好。下次面试,挺直腰板,自信点!你要相信,你背过的每一个知识点,都能帮你多拿 1k 的薪资;你说过的每一句 “漂亮话”,都能让你离心仪的 Offer 更近一步。

祝所有前端兄弟,都能面试顺利,Offer 拿到手软!