跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端算法

前端面试复盘:场景题与架构思维的重要性

我提前准备了半个月,八股文背得滚瓜烂熟,Vue 响应式原理、Event Loop、浏览器缓存策略倒背如流。结果一天三场面试,场场被问懵,面完出来脑子都是嗡嗡的。 先简单交代一下我的情况:5 年前端经验,主要技术栈是 Vue2/3 + React,做过电商、中后台项目,自认为基础还算扎实。这次想跳槽去个大厂或者中型公司,薪资期望 35k 左右。结果现实给我狠狠上了一课! **第一场,某二线大厂,一面…

心动瞬间发布于 2026/4/6更新于 2026/7/765K 浏览

我提前准备了半个月,八股文背得滚瓜烂熟,Vue 响应式原理、Event Loop、浏览器缓存策略倒背如流。结果一天三场面试,场场被问懵,面完出来脑子都是嗡嗡的。

先简单交代一下我的情况:5 年前端经验,主要技术栈是 Vue2/3 + React,做过电商、中后台项目,自认为基础还算扎实。这次想跳槽去个大厂或者中型公司,薪资期望 35k 左右。结果现实给我狠狠上了一课!

第一场,某二线大厂,一面就挂了。

面试官上来没问八股,直接扔了个场景:

'我们有个活动页,双 11 高峰期预估 PV 200 万 +,页面里有十几个弹窗组件,每个弹窗都有独立的业务逻辑和样式。现在的问题是,首屏加载很慢,用户滚动时卡顿明显。你从工程化、组件设计、渲染优化三个角度,给一套完整的优化方案。'

我当场就有点懵。脑子里想的都是'代码分割、按需加载、虚拟滚动'这些零散的点,但串不成一个完整的方案。面试官追问'弹窗组件怎么设计能减少渲染开销',我答得磕磕巴巴,最后他礼貌地说'先这样吧'。

第二场,某独角兽,二面挂了。

这一轮面试官更直接,给了一个在线 coding 的场景:

'这是我们的商品列表页,目前用的是传统分页,用户反馈翻页体验不好。现在需要改造成滚动加载无限列表,但要考虑:1. 列表数据可能达到 5000+ 条;2. 每个 item 有图片和复杂的样式;3. 需要保证滚动丝滑,内存不爆炸。写一个核心实现思路,并说明关键点的技术选型。'

我写了虚拟滚动的方案,用 useRef + 滚动监听 + 动态渲染可视区。面试官反问:'你的方案在快速滚动时会有白屏问题吗?怎么解决?如果每个 item 高度不固定呢?如果用 React/Vue 的框架,怎么避免重绘性能问题?'一连串追问下来,我额头开始冒汗,回答得越来越没底气。

第三场,某中厂,一面就挂了。

这次面试官问得更'业务导向':

'假设我们要做一个低代码搭建的后台页面,用户可以通过拖拽组件生成页面。你会怎么设计整个前端架构?组件协议怎么定义?渲染引擎怎么实现?如何保证产出页面的性能?如何支持组件的版本管理和灰度发布?'

这已经不是背八股能解决的了,需要的是架构思维 + 业务场景深度 + 工程化落地经验。我勉强说了一些组件注册、物料库的概念,但明显深度不够,面试官没有再追问,场面一度很尴尬。

三场下来,我最大的感受就是——

现在前端面试的风向,已经完全变了。

八股文问得越来越少,场景题成了绝对的主流。面试官不再满足于你知道'什么是虚拟 DOM'、'Vue 和 React 的区别是什么',他们想听的是:

  • 给你一个真实业务场景,你能不能拆解问题、设计方案、落地实现、评估效果?
  • 你知道性能优化,但你能不能在具体场景下给出可执行的优化路径?
  • 你会用框架,但你有没有思考过组件怎么设计才能复用、可维护、低耦合?
  • 你做过项目,但你能不能说清楚技术选型的依据、踩过的坑、最终的效果数据?

我发现,现在的大厂和中大型公司,面试套路越来越趋同:

  1. 场景题替代八股题——不再问'什么是闭包',而是问'这段代码内存泄漏了,你排查思路是什么?'
  2. 深度追问替代浅层问答——你说'用虚拟滚动优化长列表',他追问'高度不固定怎么办?快速滚动白屏怎么办?列表里有 iframe 怎么办?'
  3. 工程化能力成为分水岭——不会配置 Webpack/Vite、不懂 CI/CD、没做过性能监控体系,很难过二面

参考资源:https://github.com/encode-studio-fe-coder/natural_traffic/wiki/scan_material3

  1. 请求失败会弹出一个 toast,如何保证批量请求失败,只弹出一个 toast
  2. 如何减少项目里面 if-else
  3. babel-runtime 作用是啥
  4. 如何实现预览 PDF 文件
  • 如何在划词选择的文本上添加右键菜单 (划词:鼠标滑动选择一组字符,对组字符进行操作)
  • 富文本里面,是如何做到划词的 (鼠标滑动选择一组字符,对组字符进行操作)?
  • 如何做好前端监控方案
  • 如何标准化处理线上用户反馈的问题
  • px 如何转为 rem
  • 浏览器有同源策略,但是为何 cdn 请求资源的时候不会有跨域限制
  • cookie 可以实现不同域共享吗
  • axios 是否可以取消请求
  • 前端如何实现折善面板效果?
  • dom 里面,如何判定 a 元素是否是 b 元素的子元素
  • 判断一个对象是否为空,包含了其原型链上是否有自定义数据或者方法。该如何判定?
  • js 如何判空?「空」包含了:空数组、空对象、空字符串、0、undefined、null、空 map、空 set,都属于为空数据
  • css 实现翻牌效果
  • flex:1 代表什么
  • 一般是怎么做代码重构的
  • 如何清理源码里面没有被应用的代码,主要是 JS、TS、CSS 代码
  • 前端应用 如何做国际化?
  • 应用如何做应用灰度发布
  • [微前端] 为何通常在 微前端 应用隔离不选择 iframe 方案
  • [微前端] Qiankun 是如何做 JS 隔离的
  • 「微前端] 微前端架构一般是如何做 JavaScript 隔离
  • [React] 循环渲染中 为什么推荐不用 index 做 key
  • [React] 如何避免使用 context 的时候,引起整个挂载节点树的重新渲染!
  • 前端如何实现截图?
  • 当 QPS 达到峰值时,该如何处理?
  • js 超过 Number 最大值的数怎么处理?
  • 使用同一个链接,如何实现 PC 打开是 web 应用、手机打开是一个 H5 应用?
  • 如何保证用户的使用体验
  • 如何解决页面请求接口大规模并发问题
  • 设计一套全站请求耗时统计工具
  • 大文件上传了解多少
  • H5 如何解决移动端适配问题
  • 站点一键换肤的实现方式有哪些?
  • 如何实现网页加载进度条?
  • 常见图片懒加载方式有哪些?
  • cookie 构成部分有哪些
  • 扫码登录实现方式
  • DNS 协议了解多少
  • 函数式编程了解多少?
  • 前端水印了解多少?
  • 什么是领域模型
  • 一直在 window 上面挂东西是否有什么风险
  • 深度 SEO 优化的方式有哪些,从技术层面来说
  • 小程序为什么会有两个线程
  • web 应用中如何对静态资源加载失败的场景做降级处理
  • html 中前缀为 data-开头的元素属性是什么?
  • 移动端如何实现上拉加载,下拉刷新?
  • 如何判断 dom 元素是否在可视区域
  • 前端如何用 canvas 来做电影院选票功能
  • 如何通过设置失效时间清除本地存储的数据?
  • 如果不使用脚手架,如果用 webpack 构建一个自己的 react 应用
  • 用 nodejs 实现一个命令行工具,统计输入目录下面指定代码的行数
  • package.json 里面 sideEffects 属性的作用是啥
  • script 标签上有那些属性,分别作用是啥?
  • 为什么 SPA 应用都会提供一个 hash 路由,好处是什么?
  • [React] 如何进行路由变化监听
  • 单点登录是是什么,具体流程是什么
  • web 网页如何禁止别人移除水印
  • 用户访问页面白屏了,原因是啥,如何排查?
  • [代码实现] JS 中如何实现大对象深度对比
  • 如何理解数据驱动视图,有哪些核心要素?
  • vue-cli 都做了哪些事儿,有哪些功能?
  • JS 执行 100 万个任务,如何保证浏览器不卡顿?
  • JS 放在 head 里和放在 body 里有什么区别?
  • Eslint 代码检查的过程是啥?
  • 虚拟滚动加载原理是什么,用 JS 代码简单实现一个虚拟滚动加加载
  • [React] react-router 和原生路由区别
  • html 的行内元素和块级元素的区别
  • 介绍 requestIdleCallback api
  • documentFragment api 是什么,有哪些使用场景?
  • git pull 和 git fetch 有啥区别?
  • 前端如何做 页面主题色切换
  • 前端视角 - 如何保证系统稳定性
  • 如何统计长任务时间、长任务执行次数
  • V8 里面的 JIT 是什么?
  • 用 JS 写一个 cookies 解析函数,输出结果为一个对象!
  • vue 中 Scoped styles 是如何实现样式隔离的,原理是啥?
  • 样式隔离方式有哪些
  • 在 JS 中,如何解决递归导致栈溢出问题?
  • 站点如何防止爬虫?
  • ts 项目中,如何使用 node_modules 里面定义的全局类型包到自己项目 src 下面使用?
  • 不同标签页或窗口间的【主动推送消息机制】的方式有哪 (不借助服务端)?
  • React] 在 react 项目开发过程中,是否可以不用 react-router,使用浏览器原生 history 路由来组织页面路由?
  • 在表单校验场景中,如何实现页面视口滚动到报错的位置
  • 如何一次性渲染十万条数据还能保证页面不卡顿
  • [webpack] 打包时 hash 码是如何生成的
  • 如何从 0 到 1 搭建前端基建
  • 你在开发过程中,使用过哪些 TS 的特性或者能力?
  • js 的加载会阻塞浏览器渲染吗?
  • 浏览器对队头阻塞有什么优化?
  • webpack 项目中通过 script 标签引入资源,在项目中如何处理?
  • 应用上线后,怎么通知用户刷新当前页面?
  • Eslint 代码检查的过程是啥?
  • HTTP 是一个无状态的协议,那么 web 应用要怎么保持用户的登录态呢?
  • 如何检测网页空闲状态 (一定时间内无操作)
  • 为什么 vite 速度比 Webpack 快?
  • 列表分页,快速翻页下的竞态问题
  • JS 执行 100 万个任务,如何保证浏览器不卡顿?
  • git 仓库迁移应该怎么操作
  • 如何禁止别人调试自己的前端页面代码?
  • web 系统里面,如何对图片进行优化?
  • OAuth2.0 是什么登录方式
  • 单点登录是如何实现的?
  • 常见的登录鉴权方式有哪些?
  • 需要在跨域请求中携带另外一个域名下的 Cookie 该如何操作?
  • vite 和 webpack 在热更新上有啥区别?
  • 封装一个请求超时,发起重试的代码
  • 前端如何设置请求超时时间 timeout
  • Node.js 如何充分利用多核 CPU?
  • 后端一次性返回树形结构数据,数据量非常大,前端该如何处理?
  • 你认为组件封装的一些基本准则是什么?
  • 页面加载速度提升 (性能优化) 应该从哪些反向来思考?
  • 前端日志埋点 SDK 设计思路
  • token 进行身份验证了解多少?
  • 在前端应用如何进行权限设计?
  • [低代码] 代码平台一般渲染是如何设计的?
  • [低代码] 代码平台一般底层协议是怎么设计的
  • [Webpack] 有哪些优化项目的手段?
  • IndexedDB 存储空间大小是如何约束的
  • 浏览器的存储有哪些
  • [Webpack] 如何打包运行时 chunk,且在项目工程中,如何去加载这个运行时 chunk?
  • 为何现在市面上做表格渲染可视化技术的,大多数都是 canvas,而很少用 svg 的?
  • 在你的项目中,使用过哪些 webpack plugin,说一下他们的作用
  • 在你的项目中,使用过哪些 webpack loader,说一下他们的作用
  • [React] 如何避免不必要的渲染?
  • 全局样式命名冲突和样式覆盖问题怎么解决?
  • [React] 如何实现专场动画?
  • [React] 从 React 层面上,能做的性能优化有哪些?
  • [vue] 中为何不要把 v-if 和 v-for 同时用在同一个元素上,原理是什么?
  • 将静态资源缓存在本地的方式有哪些?
  • SPA 首屏加载速度慢的怎么解决
  • axios 是如何区分是 nodejs 环境还是 浏览器环境的?
  • 如何拦截 web 应用的请求
  • 前端有哪些跨页面通信方式?
  • 参考资源:https://github.com/encode-studio-fe-coder/natural_traffic/wiki/scan_material3

    • 免费图片AI生成工具免费生成了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
    • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
    • 100+免费在线小游戏爽一把
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • 华为 OD 机试双机位 C 卷 - 评委评分算法题
    • StreamVLN 具身导航复现与模型推理指南
    • Ubuntu 系统下 MATLAB R2024a 安装指南
    • Git 版本控制核心原理与常用操作指南
    • Java 并发常见问题总结
    • Tomcat 9–11 版本与 JDK 适配指南
    • Linux 下常用开发工具指南:软件包与 Vim 详解
    • 修复 Microsoft Edge 边栏 Copilot 图标消失问题
    • 大语言模型在医疗领域的进展、应用与挑战
    • Claude Code 安装指南:终端 AI 编程助手配置与使用
    • EFSI-DETR:用于无人机图像实时小目标检测的高效频域 - 语义集成方法
    • Stable Diffusion 3.5 FP8 在博物馆展览视觉设计中的应用
    • Spec-Kit 结合 Copilot 实现 AI 规格驱动开发
    • OpenClaw WebUI 启动显示 Not Found 错误排查
    • 论文 AIGC 检测率过高怎么办?降重与合规策略解析
    • SpringBoot+Vue 语言考试信息报名系统管理平台
    • AI 入门指南:从零开始掌握人工智能基础与实践
    • JavaScript 跨域通信的替代方案:图片探测与 JSONP
    • ARC SC6N0 Thor AGX 机器人高算力开发板技术规格
    • VS Code Copilot 实战指南:从安装到高级配置

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • Keycode 信息

      查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

    • Escape 与 Native 编解码

      JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

    • JavaScript / HTML 格式化

      使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

    • JavaScript 压缩与混淆

      Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online