前端面试题总结
随着前端技术的飞速发展,面试中对技术深度和广度的要求也越来越高。本文旨在帮助前端开发者系统地复习和准备面试,涵盖JavaScript、HTML、小程序、React、ES6、Vue等核心技术的面试要点。
1. JavaScript 面试题
基础篇:
- 简述同步和异步的区别:同步操作会阻塞后续代码的执行,直到当前操作完成;异步操作则不会阻塞后续代码,通过回调函数、Promises、async/await等方式处理结果。
- JavaScript有哪几种数据类型:包括基本数据类型(Number、String、Boolean、Null、Undefined、Symbol、BigInt)和对象类型(Object、Array、Function等)。
- 如何判断数据类型:使用
typeof、instanceof、Object.prototype.toString.call()等方法。
进阶篇:
- Js的事件委托是什么,原理是什么:事件委托是利用事件冒泡的原理,将事件监听器设置在父元素上,而不是直接设置在目标元素上,提高性能并简化代码。
- Promise构造函数是同步还是异步执行,then呢:Promise构造函数是同步执行的,但
then方法是异步执行的。 - 垃圾回收机制的方式及内存管理:JavaScript中主要使用标记-清除和引用计数两种垃圾回收机制,现代浏览器多采用标记-清除算法。
2. HTML/CSS 面试题
基础篇:
- HTML5新增了哪些重要特性:包括语义化标签、表单控件、多媒体元素(如audio、video)、Canvas绘图、WebSockets等。
- CSS选择器有哪些,优先级如何:包括ID选择器、类选择器、标签选择器、属性选择器、伪类选择器、伪元素选择器等,优先级由高到低。
进阶篇:
- CSS盒模型有哪些,IE盒模型与标准盒模型的区别:包括IE盒模型(怪异模式)和标准盒模型,主要区别在于是否包含padding和border在元素的width和height中。
- CSS3新增了哪些布局方式:包括Flexbox布局、Grid布局、多列布局等。
3. 小程序面试题
基础篇:
- 微信小程序与原生APP的区别:小程序无需安装,即用即走,占用内存小;原生APP需要下载安装,功能更强大,但占用内存大。
- 小程序的生命周期函数有哪些:包括
onLoad、onShow、onReady、onHide、onUnload等。
进阶篇:
- 如何实现小程序的页面跳转:可以使用
wx.navigateTo、wx.redirectTo、wx.switchTab、wx.reLaunch等方法。 - 小程序中如何处理网络请求:可以使用微信提供的
wx.request方法发起网络请求。
4. React 面试题
基础篇:
- React的核心概念是什么:包括组件(Component)、JSX、状态(State)和属性(Props)等。
- React生命周期函数有哪些:包括
componentDidMount、componentDidUpdate、componentWillUnmount等(注意:在React 18及后续版本中,一些生命周期函数已被废弃或替代)。
进阶篇:
- React中如何实现组件间的通信:包括父子组件通信(通过props和回调函数)、兄弟组件通信(通过Context API或Redux等状态管理库)、跨组件通信(使用Redux等全局状态管理库)。
- React Hooks的使用场景和优势:Hooks允许你在不编写类的情况下使用state和其他React特性,使函数组件更加强大。
5. ES6 面试题
基础篇:
- ES6新增了哪些常用特性:包括let/const、箭头函数、模板字符串、解构赋值、Promise等。
- let、const与var的区别:let和const具有块级作用域,const声明的变量不可重新赋值,var具有函数作用域。
进阶篇:
- Promise与async/await的区别与联系:Promise是异步编程的一种解决方案,async/await是基于Promise的语法糖,使得异步代码更加简洁易读。
- **Generator函数与Async函数的比较