- HTML的
meta标签有哪些常见用法?请举例说明。
答案要点:设置字符编码<meta charset="UTF-8">;适配移动端<meta name="viewport" content="width=device-width, initial-scale=1.0">;设置页面描述<meta name="description" content="xxx">(利于SEO);刷新页面<meta http-equiv="refresh" content="5;url=xxx">。
2.CSS中display: none、visibility: hidden和opacity: 0的区别是什么?
答案要点: - display: none:元素从DOM中移除,不占空间,触发重排重绘; - visibility: hidden:元素隐藏,仍占空间,只触发重绘; - opacity: 0:元素透明,仍占空间,可触发事件,只触发重绘。
3.CSS3有哪些新特性?请列举至少5个。
答案要点:圆角 border-radius、阴影 box-shadow/text-shadow、过渡 transition、变换 transform、弹性盒 flex、网格 grid、媒体查询 @media、渐变 linear-gradient/radial-gradient。
4.什么是CSS的浮动?浮动会带来什么问题?如何清除浮动?
答案要点:浮动让元素脱离文档流,向左/右移动,直到碰到父元素或其他浮动元素;问题:父元素高度塌陷;清除方法:父元素设置 overflow: hidden、添加 clearfix 伪元素、父元素也设置浮动。
-
JavaScript中如何判断一个变量是否为数组?请说出至少3种方法。
答案要点:-Array.isArray(arr)(最准确); -arr instanceof Array; -Object.prototype.toString.call(arr) === '[object Array]'。 -
JavaScript中
null和undefined的区别是什么?
答案要点:undefined表示变量声明未赋值,或对象属性不存在;null表示空对象指针,是人为设置的空值;typeof undefined是undefined,typeof null是object。 -
JavaScript中数组有哪些常用方法?请区分改变原数组和不改变原数组的方法。
答案要点: - 改变原数组:push()pop()shift()unshift()splice()sort()reverse(); - 不改变原数组:map()filter()reduce()forEach()slice()concat()indexOf()。 -
什么是事件冒泡和事件捕获?如何阻止事件冒泡?
答案要点:事件冒泡是事件从目标元素向上传播到根元素;事件捕获是事件从根元素向下传播到目标元素;阻止冒泡:event.stopPropagation(),阻止默认行为:event.preventDefault()。 -
JavaScript中如何实现深拷贝?请说出至少2种方法。
答案要点: - 简易方法:JSON.parse(JSON.stringify(obj))(缺点:无法拷贝函数、正则、循环引用); - 递归方法:手写递归函数,遍历对象/数组,逐层拷贝属性值。 -
什么是立即执行函数(IIFE)?它的作用是什么?
答案要点:IIFE即(function(){})()或(function(){}()),定义后立即执行;作用:创建独立作用域,避免变量污染全局、封装临时逻辑。 -
Promise的三种状态是什么?Promise有哪些常用方法?
答案要点:三种状态:pending(进行中)、fulfilled(成功)、rejected(失败),状态一旦改变不可逆;常用方法:then()catch()finally()Promise.all()Promise.race()。 -
async/await的作用是什么?它和Promise的关系是什么?
答案要点:async/await是 Promise 的语法糖,用于简化异步代码的书写;async修饰的函数返回 Promise 对象,await用于等待 Promise 执行完成,可捕获异步错误。 -
浏览器的渲染过程是怎样的?重排和重绘的区别是什么?
答案要点:渲染过程:解析HTML生成DOM树 → 解析CSS生成CSSOM树 → 结合生成渲染树 → 布局(重排)→ 绘制(重绘);重排是布局改变(如尺寸、位置),消耗性能大;重绘是样式改变(如颜色、透明度),不影响布局,性能消耗小。 -
Vue中
v-for的key作用是什么?为什么不推荐用index作为key?
答案要点:key是 Vue 虚拟DOM的标识,用于高效更新DOM;若用index作为key,当数组元素顺序变化时,index会跟着变化,导致Vue误判元素已更新,重新渲染DOM,降低性能,甚至引发数据错乱。 -
Vue中
computed和watch的区别是什么?分别适用于什么场景?
答案要点: -computed:计算属性,依赖其他数据,有缓存,值变化时才重新计算,适用于复杂计算(如拼接字符串、过滤数据); -watch:监听属性,无缓存,数据变化时执行回调,适用于异步操作或复杂逻辑处理(如数据变化请求接口)。 -
React中
setState的特点是什么?它是同步还是异步的?
答案要点:setState用于更新组件状态,不能直接修改state;在合成事件和生命周期钩子中是异步的,在原生事件和setTimeout中是同步的;可接收第二个参数(回调函数),在状态更新后执行。 -
什么是前端路由?Vue Router的两种模式是什么?区别是什么?
答案要点:前端路由是通过改变URL,不刷新页面,切换不同组件的技术;两种模式:hash模式(URL带#,如#/home)和history模式(URL无#,如/home);区别:hash兼容性好,无需后端配置;history依赖后端配置,否则刷新页面会404。 -
什么是ES6的模块化?
export和import的用法有哪些?
答案要点:ES6模块化是将JS文件拆分为多个模块,实现按需加载;export用于导出模块:默认导出export default、按需导出export const a = 1;import用于导入模块:导入默认导出import a from './a'、导入按需导出import {a} from './a'。 -
前端常见的存储方式有哪些?它们的区别是什么?
答案要点: -localStorage:永久存储,容量5MB左右,不随会话清除; -sessionStorage:会话存储,容量5MB左右,关闭页面/浏览器清除; -cookie:容量小(4KB左右),可设置过期时间,随请求发送到服务器。 -
Git的常见命令有哪些?请说明
git pull和git fetch的区别。
答案要点:常见命令:git initgit addgit commitgit pushgit pullgit clonegit branchgit checkout;区别:git fetch是拉取远程分支到本地,不合并;git pull=git fetch + git merge,拉取后合并到当前分支。