前端面试最常考、最容易被问崩的 50 道八股精简版

JS 核心 / 浏览器 / 网络 / Vue / 工程化 & 性能 / CSS


一、JS 核心(必背,18 题)

  1. var / let / const 区别
    • 变量提升、块级作用域、重复声明、重新赋值
  2. 闭包是什么?有什么用?有什么坑?
    • 函数访问外部作用域变量;模块化、保存变量;内存泄漏
  3. 原型和原型链
    • __proto__prototypeObject.prototype.__proto__ === null
  4. 作用域和作用域链
    • 全局、函数、块级;查找变量的规则
  5. this 指向
    • 默认、隐式、显式(call/apply/bind)、new、箭头函数
  6. call / apply / bind 区别
    • 立即执行 / 立即执行 / 返回函数;参数形式
  7. new 关键字做了什么
    • 创建空对象、绑定原型、执行构造函数、返回对象
  8. Promise 原理 & 状态
    • pending/fulfilled/rejected,不可逆,链式调用
  9. Promise.all / race / any / allSettled 区别
  10. async/await 原理
    • Generator + 自动执行 + Promise
  11. Event Loop(浏览器)
    • 执行栈 → 微任务 → 宏任务
  12. 微任务 / 宏任务有哪些
    • 微:Promise.then、queueMicrotask、MutationObserver
    • 宏:setTimeout、setInterval、script、I/O、UI 渲染
  13. 防抖节流
    • 防抖:最后一次触发;节流:固定频率触发
  14. 深拷贝和浅拷贝
    • 浅拷贝:只拷贝一层;深拷贝:递归拷贝所有层级
  15. == 和 === 区别
    • == 会隐式类型转换
  16. 类型判断方式
    • typeof、instanceof、Object.prototype.toString.call()
  17. 数组去重方法
    • Set、filter、includes、reduce
  18. 手写:防抖 / 节流 / 深拷贝 / Promise.all(高频)

二、浏览器(10 题)

  1. 从输入 URL 到页面展示发生了什么
    • DNS → TCP → TLS → 请求 → 响应 → 解析 HTML → 构建 DOM/CSSOM → 渲染树 → 布局 → 绘制 → 合成
  2. 重排(回流)和重绘
    • 重排:几何变化,必触发重绘;重绘:样式变化
  3. 如何减少重排重绘
    • 批量修改 DOM、脱离文档流、使用 transform/opacity
  4. 浏览器缓存
    • 强缓存(Cache-Control/Expires)、协商缓存(ETag/Last-Modified)
  5. localStorage / sessionStorage / cookie / session
  6. cookie 属性
    • domain、path、expires、max-age、httpOnly、secure、SameSite
  7. 跨域是什么?怎么解决
    • 同源策略:协议+域名+端口;CORS、proxy、JSONP、postMessage
  8. XSS 攻击与防御
    • 注入脚本;转义、CSP、httpOnly
  9. CSRF 攻击与防御
    • 伪造请求;token、SameSite、Referer
  10. 浏览器渲染流程
    • DOM + CSSOM → 渲染树 → 布局 → 绘制 → 合成

三、计算机网络(8 题)

  1. HTTP 和 HTTPS 区别
    • 明文/加密、端口 80/443、CA 证书
  2. HTTP1.1 / HTTP2 / HTTP3
    • 长连接、多路复用、二进制帧、QUIC
  3. GET 和 POST 区别
    • 语义、缓存、参数、编码、幂等
  4. TCP 三次握手
  5. TCP 四次挥手
  6. TCP 和 UDP 区别
  7. 状态码 301/302/304/401/403/404/500/502
  8. HTTPS 握手过程

四、Vue(高频,10 题)

  1. Vue2 和 Vue3 响应式区别
    • Object.defineProperty / Proxy
  2. Vue 生命周期
    • 创建、挂载、更新、销毁;setup 执行时机
  3. computed 和 watch 区别
    • 计算属性缓存;监听数据变化
  4. v-if 和 v-show 区别
    • 销毁/渲染;display:none
  5. v-for 和 v-if 为什么不能一起用
    • v-for 优先级更高,性能差
  6. key 作用
    • diff 算法标识,复用节点
  7. 组件通信方式
    • props/emit、eventBus、provide/inject、pinia/vuex、ref、emit、eventBus、provide/inject、pinia/vuex、ref、emit、eventBus、provide/inject、pinia/vuex、ref、parent
  8. Vue 双向绑定原理
    • 响应式 + 模板编译 + 发布订阅
  9. diff 算法核心
    • 同层比较、key 复用、头尾指针
  10. Vue 性能优化
    • v-once、v-show、异步组件、keep-alive、懒加载

五、工程化 & 性能(3 题)

  1. webpack 作用
    • 模块化打包、loader、plugin、chunk
  2. 前端性能优化
    • 网络、资源、渲染、JS、构建
  3. 懒加载 & 预加载

六、CSS(1 题)

  1. 居中方案
    • 行内:text-align + line-height
    • 定位:margin:auto / transform
    • flex:justify-content + align-items
相关推荐
wefly201720 小时前
纯前端架构深度解析:jsontop.cn,JSON 格式化与全栈开发效率平台
java·前端·python·架构·正则表达式·json·php
我命由我1234521 小时前
React - 类组件 setState 的 2 种写法、LazyLoad、useState
前端·javascript·react.js·html·ecmascript·html5·js
自由生长20241 天前
IndexedDB的观察
前端
IT_陈寒1 天前
Vite热更新坑了我三天,原来配置要这么写
前端·人工智能·后端
逆境不可逃1 天前
LeetCode 热题 100 之 543. 二叉树的直径 102. 二叉树的层序遍历 108. 将有序数组转换为二叉搜索树 98. 验证二叉搜索树
算法·leetcode·职场和发展
斯班奇的好朋友阿法法1 天前
离线ollama导入Qwen3.5-9B.Q8_0.gguf模型
开发语言·前端·javascript
掘金一周1 天前
每月固定续订,但是token根本不够用,掘友们有无算力焦虑啊 | 沸点周刊 4.2
前端·aigc·openai
小村儿1 天前
连载加餐01-claude code 源码泄漏 ---一起吃透 Claude Code,告别 AI coding 迷茫
前端·后端·ai编程
莫物1 天前
vue过滤表格数据导致的索引错乱问题
前端·javascript·vue.js
竹林8181 天前
从监听失败到实时更新:我在NFT铸造项目中搞定合约事件监听的全过程
前端·javascript