2024年最全前端面试八股文
随着互联网的发展,前端技术日新月异,面试中不仅考察应聘者的基础知识,也越来越重视其实际能力。2024年,前端面试题目持续关注JavaScript、CSS、HTML以及常见框架(如React、Vue、Angular)等方面。以下是一些经典且全面的前端面试题及相应的解答和代码示例,供应届生参考和备考。
1. 什么是闭包?有何作用?
定义:闭包是指一个函数可以“记住”并访问其定义时的作用域,即使在该函数是在其外部被执行。
作用: - 封装私有变量 - 创建工厂函数 - 维护状态
代码示例:
function outerFunction() {
let count = 0;
return function innerFunction() {
count++;
return count;
}
}
const counter = outerFunction();
console.log(counter()); // 1
console.log(counter()); // 2
2. 解释事件委托(Event Delegation)是什么?
定义:事件委托是一种通过父元素来处理子元素的事件的技术。通过将事件监听器添加到父元素,可以减少内存消耗并提高性能,特别是在有大量子元素时。
代码示例:
<ul id="list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<script>
const list = document.getElementById('list');
list.addEventListener('click', function(event) {
if (event.target.tagName === 'LI') {
alert(event.target.textContent);
}
});
</script>
3. CSS 中的盒模型是什么?
定义:盒模型是指 HTML 元素的布局,以“盒子”形式呈现。每个盒子包含:边距(margin)、边框(border)、内边距(padding)和内容(content)。
示例:
.box {
width: 200px; /* 内容宽度 */
padding: 20px; /* 内边距 */
border: 5px solid black; /* 边框 */
margin: 10px; /* 外边距 */
}
4. 介绍一下 Promise 的基本用法以及链式调用?
定义:Promise 是一种用于处理异步操作的对象。它代表一个可能在未来的某个时刻才会完成的操作的结果。
基本用法:
const myPromise = new Promise((resolve, reject) => {
// 异步操作
let success = true; // 模拟成功/失败
if (success) {
resolve('成功');
} else {
reject('失败');
}
});
myPromise
.then(result => console.log(result)) // 成功
.catch(error => console.log(error)); // 失败
5. React 和 Vue 中的生命周期钩子有什么区别?
React: - React 的生命周期分为三个主要阶段:挂载(Mounting)、更新(Updating)、卸载(Unmounting)。
class MyComponent extends React.Component {
componentDidMount() {
console.log('组件挂载');
}
componentDidUpdate(prevProps, prevState) {
console.log('组件更新');
}
componentWillUnmount() {
console.log('组件卸载');
}
}
Vue:
- Vue 的生命周期提供了更为细化的钩子函数,如 beforeCreate
、created
、mounted
、updated
、beforeDestroy
等。
new Vue({
data: {
message: 'Hello Vue!'
},
mounted() {
console.log('组件挂载');
},
beforeDestroy() {
console.log('组件卸载');
}
});
结语
前端面试题目不仅考察基础知识的广度,也着重评估应用能力和实际解决问题的能力。以上是一些经典的面试题目,建议应届生深入理解并通过实际编码练习来巩固知识。希望这份资料能为你们的面试准备带来帮助。祝好运!