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 的生命周期提供了更为细化的钩子函数,如 beforeCreatecreatedmountedupdatedbeforeDestroy 等。

new Vue({
    data: {
        message: 'Hello Vue!'
    },
    mounted() {
        console.log('组件挂载');
    },
    beforeDestroy() {
        console.log('组件卸载');
    }
});

结语

前端面试题目不仅考察基础知识的广度,也着重评估应用能力和实际解决问题的能力。以上是一些经典的面试题目,建议应届生深入理解并通过实际编码练习来巩固知识。希望这份资料能为你们的面试准备带来帮助。祝好运!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部