以下是一些热门的前端面试题,按技术分类整理,希望能帮助你更好地准备面试。
HTML/CSS
1. HTML5的新特性有哪些?
-
语义化标签:如
<header>
、<footer>
、<article>
等,增强页面语义。 -
表单控件增强:新增
email
、date
、range
等类型。 -
媒体支持:引入
<audio>
和<video>
标签。 -
Canvas和SVG:用于图形绘制。
2. 如何实现响应式布局?
-
使用媒体查询(Media Queries)根据设备宽度调整样式。
-
使用弹性布局(Flexbox)和网格布局(CSS Grid)。
-
使用百分比单位和视口单位(vw/vh)。
3. CSS盒模型是什么?
CSS盒模型包括内容区、内边距(padding)、边框(border)和外边距(margin)。它决定了元素的布局和尺寸。
JavaScript
1. 事件循环、Promise和async/await
-
事件循环:用于处理JavaScript中的异步操作,确保代码在执行时能够响应事件。
-
Promise:表示一个异步操作的最终结果,有
pending
、fulfilled
和rejected
三种状态。 -
async/await:基于Promise的语法糖,使异步代码更像同步代码。
2. 如何实现防抖和节流?
-
防抖:在指定时间内,只有最后一次操作才会触发回调函数。常用于搜索框输入防抖。
-
节流:在指定时间内,只允许触发一次回调函数。常用于滚动事件。
3. JavaScript中的闭包是什么?
闭包是一个函数可以“记住”并访问其外部作用域的变量,即使外部函数已经返回。
Vue.js
1. Vue3的响应式原理是什么?
Vue3使用Proxy
API实现响应式系统,相比Vue2的Object.defineProperty
,Proxy
可以监听对象的添加和删除操作,性能更高。
2. Vue2和Vue3的主要区别有哪些?
-
响应式系统:Vue3使用
Proxy
,Vue2使用Object.defineProperty
。 -
性能优化:Vue3在性能和内存占用上有显著提升。
-
Composition API:Vue3引入了Composition API,提供更灵活的代码组织方式。
3. 如何实现Vue项目中的路由懒加载?
通过import()
动态加载组件,减少初始加载时间。
React
1. React中的虚拟DOM和Diff算法
-
虚拟DOM:React使用虚拟DOM来提高性能,避免直接操作真实DOM。
-
Diff算法:React通过比较虚拟DOM的变化,最小化真实DOM的更新。
2. 如何优化React组件的性能?
-
使用
React.memo
和useMemo
避免不必要的组件渲染。 -
使用
useCallback
缓存回调函数。
3. React中的Context是什么?
Context用于在组件树中传递数据,避免逐层传递props。
性能优化
1. 如何优化前端项目的性能?
-
代码压缩:使用Webpack等工具压缩代码。
-
懒加载:对图片和组件进行懒加载。
-
缓存策略:合理设置HTTP缓存。
2. 如何减少页面的重绘和回流?
-
避免频繁操作DOM。
-
使用
requestAnimationFrame
优化动画。
安全性
1. 如何防止XSS攻击?
-
对用户输入进行编码。
-
使用
Content-Security-Policy
(CSP)。
2. 如何防止CSRF攻击?
-
使用Token验证。
-
检查Referer。