当前位置: 首页 > news >正文

前端基础面试题及答案

前端基础面试题及答案


一、HTML

1. HTML5 新增了哪些特性?

  • 语义化标签:<header><footer><nav><section><article><aside>
  • 新表单类型:emailnumberdaterangesearch
  • 多媒体标签:<audio><video>
  • Canvas / SVG 绘图
  • 本地存储:localStoragesessionStorage
  • WebSocket、地理定位、拖拽 API

2.srchref的区别?

  • src:引入资源并替换当前元素(如<img><script>),会暂停页面解析
  • href:建立文档与资源的关联(如<a><link>),不会暂停解析

3. 行内元素和块级元素的区别?

块级元素行内元素
是否独占一行
宽高设置可以不可以
常见标签div、p、h1-h6span、a、img

二、CSS

4. CSS 盒模型是什么?

  • 标准盒模型(box-sizing: content-box):width只包含内容区,实际宽度 = width + padding + border
  • 怪异盒模型 / IE 盒模型(box-sizing: border-box):width包含内容 + padding + border,实际宽度 = width

怪异盒模型因早期 IE 浏览器的非标准实现而得名,现在通过box-sizing: border-box主动使用,实际开发中反而更常用,因为更直观好控制尺寸。


5. BFC 是什么,如何触发?

BFC(块级格式化上下文)是一个独立的渲染区域,内部元素不影响外部。

触发条件:

  • overflow不为visible
  • display: flex / inline-block / table
  • position: absolute / fixed
  • float不为none

作用:清除浮动、防止 margin 重叠


6. 垂直居中的几种方式?

/* 方式一:flex */.parent{display:flex;align-items:center;justify-content:center;}/* 方式二:absolute + transform */.child{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}/* 方式三:absolute + margin auto */.child{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;width:100px;height:100px;}

7. CSS 选择器优先级?

从高到低:!important> 行内样式 > ID > 类/伪类/属性 > 标签 >*

用数字表示:0, 1, 0, 0(ID) >0, 0, 1, 0(class) >0, 0, 0, 1(tag)


8. flex 布局常用属性?

/* 容器属性 */display:flex;flex-direction:row | column;/* 主轴方向 */justify-content:center | space-between;/* 主轴对齐 */align-items:center | flex-start;/* 交叉轴对齐 */flex-wrap:wrap;/* 是否换行 *//* 子项属性 */flex:1;/* flex-grow: 1, flex-shrink: 1, flex-basis: 0 */align-self:...;/* 单独设置交叉轴对齐 */order:1;/* 排列顺序 */

三、JavaScript

9.var/let/const的区别?

varletconst
作用域函数作用域块级作用域块级作用域
变量提升有(值为 undefined)有(暂时性死区)有(暂时性死区)
重复声明允许不允许不允许
可重新赋值

10. 什么是闭包?

函数内部可以访问外部函数变量,即使外部函数已执行完毕。

functioncounter(){letcount=0;returnfunction(){return++count;};}constadd=counter();add();// 1add();// 2

应用场景:防抖节流、模块化、数据私有化


11.=====的区别?

  • ===:严格相等,类型和值都要相同
  • ==:宽松相等,会进行类型转换

常见陷阱:

0==false// true''==false// truenull==undefined// truenull===undefined// false

12. 事件循环(Event Loop)?

JavaScript 是单线程的,通过事件循环处理异步:

  1. 执行同步代码(调用栈)
  2. 执行所有微任务(Promise.then、MutationObserver)
  3. 执行一个宏任务(setTimeout、setInterval、I/O)
  4. 重复 2-3
console.log(1);setTimeout(()=>console.log(2),0);Promise.resolve().then(()=>console.log(3));console.log(4);// 输出:1 4 3 2

13. 深拷贝和浅拷贝?

  • 浅拷贝:只拷贝第一层,引用类型仍共享内存(Object.assign、扩展运算符)
  • 深拷贝:完整复制所有层级
// 简单深拷贝(不能处理函数、循环引用)constdeep=JSON.parse(JSON.stringify(obj));// 手写深拷贝functiondeepClone(obj){if(obj===null||typeofobj!=='object')returnobj;if(Array.isArray(obj))returnobj.map(deepClone);returnObject.fromEntries(Object.entries(obj).map(([k,v])=>[k,deepClone(v)]));}

14. 防抖和节流?

防抖(debounce):一段时间内只执行最后一次(搜索框输入)

functiondebounce(fn,delay){lettimer=null;returnfunction(...args){clearTimeout(timer);timer=setTimeout(()=>fn.apply(this,args),delay);};}

节流(throttle):一段时间内只执行第一次(滚动事件)

functionthrottle(fn,interval){letlast=0;returnfunction(...args){constnow=Date.now();if(now-last>=interval){last=now;fn.apply(this,args);}};}

15. Promise 的三种状态?

  • pending:初始状态
  • fulfilled:成功
  • rejected:失败

状态只能从 pending → fulfilled 或 pending → rejected,不可逆。

constp=newPromise((resolve,reject)=>{// 异步操作resolve('success');// 或 reject('error')});p.then(res=>console.log(res)).catch(err=>console.log(err)).finally(()=>console.log('done'));

四、浏览器/网络

16. 从输入 URL 到页面展示经历了什么?

  1. DNS 解析域名 → IP 地址
  2. 建立 TCP 连接(三次握手)
  3. 发送 HTTP 请求
  4. 服务器返回响应
  5. 浏览器解析 HTML,构建 DOM 树
  6. 解析 CSS,构建 CSSOM 树
  7. 合并为 Render Tree
  8. 布局(Layout)→ 绘制(Paint)→ 合成(Composite)

17. HTTP 缓存机制?

强缓存(不请求服务器):

  • Cache-Control: max-age=3600
  • Expires: 过期时间

协商缓存(询问服务器是否更新):

  • Last-Modified/If-Modified-Since
  • ETag/If-None-Match(更精准,优先使用)
  • 未修改返回 304,修改返回 200 + 新资源

18. 跨域是什么,如何解决?

同源策略:协议 + 域名 + 端口 完全相同才算同源。

解决方案:

  • CORS:服务端设置Access-Control-Allow-Origin(最常用)
  • 代理:开发环境 webpack devServer proxy 转发
  • JSONP:只支持 GET,利用 script 标签不受同源限制
  • postMessage:跨 iframe 通信

19. localStorage / sessionStorage / Cookie 区别?

CookielocalStoragesessionStorage
大小4KB5MB5MB
过期时间可设置永久关闭标签页清除
随请求发送
作用域可跨标签页同源共享当前标签页

20. XSS 和 CSRF 攻击?

XSS(跨站脚本攻击):注入恶意脚本

  • 防御:对输入输出转义、Content-Security-Policy

CSRF(跨站请求伪造):伪造用户请求

  • 防御:Token 验证、检查 Referer、SameSite Cookie

五、Vue 基础

21. v-if 和 v-show 区别?

  • v-if:条件为假时不渲染 DOM,适合切换不频繁的场景
  • v-show:始终渲染,用display:none控制显隐,适合频繁切换

22. computed 和 watch 区别?

computedwatch
有无返回值
是否缓存是(依赖不变不重新计算)
适用场景依赖数据计算出新值监听数据变化执行副作用

23. Vue 生命周期?

beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed

  • 请求数据:createdmounted
  • DOM 操作:mounted
  • 清理定时器:beforeDestroy

24. Vue2 响应式原理?

使用Object.defineProperty劫持对象属性的 getter/setter:

  • getter 时收集依赖(Watcher)
  • setter 时通知依赖更新

局限:无法检测数组下标修改、对象新增/删除属性(需用$set

Vue3 改用Proxy,解决了上述问题。


25. Vue 组件通信方式?

  • 父 → 子:props
  • 子 → 父:$emit
  • 跨层级:provide/inject
  • 兄弟组件:EventBus 或 Vuex/Pinia
  • 全局状态:Vuex / Pinia

共 25 题,涵盖 HTML / CSS / JavaScript / 浏览器网络 / Vue 基础

http://www.cnnetsun.cn/news/3067223.html

相关文章:

  • 国内线下会话分析解决方案实施指南:企业级AIOT硬件选型与部署策略
  • 2026 AI营销机构选型指南:本土服务商塔米德数智科技的价值与路径
  • 国内首批《人工智能 智能体互联》国家标准发布——Agent 有了交通规则
  • 计算机毕业设计之大学生教务评教系统的设计与实现
  • 德思特工业级天线方案:助力头部AGV制造商成功打造北美超级工厂标杆项目
  • 还在为验布机效果担心?这五个常见顾虑,AI其实已经解决了
  • 【技术解析】SimpleNet:在特征空间“制造”异常,实现高效图像缺陷检测与定位
  • Vivado IBERT实战:从眼图分析到误码率调优的硬件调试指南
  • 2026实测|TRAE与Copilot选择建议:从踩坑到选型全指南
  • HunterPie:为《怪物猎人:世界》打造的专业级实时监控与数据可视化增强工具
  • 2026年9款CRM管理系统对比:覆盖初创、团队与行业定制
  • 陶瓷卫浴整厂输送线怎么规划合理?4 个核心设计要点与避坑指南
  • 对话希迪智驾CEO胡斯博:“重载具身智能”的本质是系统工程能力
  • 如何用SPT-AKI Profile Editor终极存档修改器掌控你的塔科夫离线体验
  • Flux、Mono、Reactor 核心操作符与高阶应用场景深度解析
  • 第一章Netty,Selector之cancel
  • 个人项目 UI 没配图?用 Pexels API + Claude Code 一键搞定
  • MateCloud 5.0.8 正式版:Spring Boot 4 + Spring AI 2.0,把微服务脚手架推进到 AI 原生工程底座
  • 攻克Win7离线壁垒:VMware vCenter Converter Standalone 6.2服务启动报错(Cannot Start Service)的深度解析与实战修复
  • 5步掌握游戏资源编辑:开源工具ExtractorSharp完全指南
  • H3C 防火墙实战配置:从基础管理到跨域安全策略与NAT映射
  • GPU内存完整性验证:MemtestCL架构解析与实战配置指南
  • Cesium编程入门 (一) 从零搭建你的第一个三维地球
  • Linux ALSA架构:DAPM Widget与音频路径构建实战(三)
  • 珠三角工业一体机源头工厂选型:非标定制交期与产线落地保障指南
  • 利尔达NT21“蝉翼”系列Cat.1模组:尺寸缩减约50%,厚度1.7mm,支持OpenCPU
  • 周一AI周报:GPT-5.6 来了又走、Anthropic 被阿里巴巴薅了2880万次、DeepSeek 偷偷变强
  • AI Agent自动化测试:从原理到实践,实现无代码测试的完整指南
  • 终极指南:5分钟上手MemtestCL,免费检测GPU内存稳定性
  • Matlab多图布局进阶:从subplot到tiledlayout的实战迁移与图例精细化控制