百度前端面试题汇总 (2025/2026)
整理自牛客网多位作者的面经,涵盖了基础理论、框架应用、架构设计及实战算法。
📂 1. 个人与项目
- 技术难点:实习或项目过程中遇到的最难、最有成就感的技术点及解决方案。
- 项目深挖:挑选一个核心项目,详细介绍其技术选型、架构设计与核心逻辑。
- 权限管理:前端层面如何实现权限控制(路由、按钮、菜单)。
- 秒杀系统:前端如何配合实现秒杀功能(限流、排队引导等)。
- 二维码登录:简述二维码登录的完整实现流程。
🎨 2. HTML & CSS
- BFC (Block Formatting Context):什么是 BFC?如何创建 BFC?它的作用是什么?
- 层叠上下文 (Stacking Context):介绍 CSS 的层叠顺序与上下文概念。
- 样式隔离:在微前端或大型项目中,如何实现样式隔离(Scope CSS, CSS Modules, Shadow DOM 等)?
- GPU 加速:如何开启 GPU 硬件加速?常用的属性有哪些(如
transform,opacity)? - 锚点定位与平滑滚动:如何实现百度百科式的“目录跳转”?如何处理固定导航栏导致的定位偏移?
- 暗黑模式:组件库中如何实现暗黑模式切换(CSS 变量、类名切换等)?
🛡️ 3. JavaScript 基础
- 闭包:什么是闭包?请手写一个简单的闭包。
- 原型链:
- 介绍原型链的概念。
- 对象字面量的原型是什么?
Object的原型是什么?
- Promise 深度理解:
- Promise 的基本原理。
- 手写题:Promise 串行调用 vs 并行调用。
- 如果不使用
Promise.all,如何实现并行处理并捕获异常? - 如何将 Promise 改写为
async/await场景?
- 事件循环 (Event Loop):
- 宏任务与微任务的区别。
- 看代码写出执行结果(Promise、setTimeOut、async 混写场景)。
- V8 垃圾回收 (GC):
- 新生代与老生代的回收算法有何差异?
- 如何在复杂页面中排查并解决内存泄漏(如百度贴吧长帖页)?
- 响应式原理:
Object.defineProperty如何弥补数组响应式的不足? - 跨域方案:列举常见的跨域解决方法(CORS, JSONP, Proxy 等)。
- 事件机制:详解冒泡与捕获过程及其应用。
⚙️ 4. 框架与工程化
- Vue 2 vs Vue 3:
- 核心差异有哪些(Composition API, Proxy vs defineProperty, Tree-shaking)?
- Webpack 工程化:
- 代码分割 (Code Splitting) 的实现方式有哪些?
- 如何通过代码分割优化首屏加载体积(例如百度地图 Web 端)?
- 前端工程化实践:简述你对前端工程化的理解(规范、构建、部署、监控)。
- Git 常用命令:
git rebase的作用是什么?它与merge的区别?
🌐 5. 浏览器与网络
- 浏览器渲染原理:从输入 URL 到页面显示的完整过程。
- 回流 (Reflow) 与重绘 (Repaint):
- 两者的区别是什么?
- 在“无限滚动加载”功能中,如何避免频繁操作导致的回流问题?
- HTTPS 握手过程:
- 证书验证的具体流程是什么?
- 为何金融类页面(如百度金融)必须禁用 HTTP 降级?
- 状态管理与实时场景:
- 百度翻译:如何设计前端状态管理方案来支持多语言、翻译历史和离线缓存?
- 百度直播:基于 WebSocket 设计可靠的消息推送方案,如何在 100ms 延迟内保证高并发下消息不丢不重?
- 存储与缓存:
cookie与localStorage的区别?在哪些场景下cookie更好?- 服务器端会保存哪一个?什么是
HttpOnly?
- 图形学基础:
Canvas与SVG的优劣对比及适用场景。 - RequestAnimationFrame:介绍其作用及相比于
setInterval的优势。
⚡ 6. 性能优化 (Performance)
- 图片优化策略:
- 不同后缀图片(WebP, AVIF, PNG, JPG)的区别。
- 有损压缩与无损压缩。
- 图片懒加载的具体实现。
- 大数据量渲染:
- 如何优化 1 万张图片的轮播图?
- 若用户疯狂点击切换且图片较大,应如何 design 防抖/节流及请求撤回策略?
🧩 7. 算法与手写题 (Algorithms)
- 数据流中的中位数:描述算法思路或手写实现。
- 二维数组搜索:在有序二维数组中寻找目标值索引并进行性能优化。
- 字符串高亮:给定字符串及关键词数组,返回高亮后的字符串(需注意关键词重叠/公共部分的处理)。
- 对象遍历:非递归方式实现对象的深度优先遍历(DFS),对象包含
name和children数组。 - 逻辑改写:将多个 Promise 函数改为串行执行。
