"前端面试题集合,涵盖闭包、JWT、Vue生命周期、数据绑定、异步处理、路由、安全问题、性能测试等多个方面,旨在帮助开发者巩固基础知识和提升面试技能。"
在前端开发中,理解并掌握这些知识点是至关重要的:
1. **闭包**:闭包是一种特殊的函数,它能够访问其自身作用域、外部函数作用域以及全局作用域中的变量。关键在于,即使外部函数执行完毕,闭包仍然能保持对外部变量的引用。这种特性使得闭包常用于封装私有变量和实现函数记忆等。
2. **JWT-token的优缺点**:
- 优点:轻量级,传输速度快;支持多种传递方式;服务端无需额外查询数据库验证;适合分布式系统和跨域授权。
- 缺点:无状态,无法主动撤销;一旦泄露,安全性风险高;通常需要HTTPS以防止中间人攻击。
3. **Vue的生命周期**:Vue组件从创建到销毁的过程,包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed等钩子函数。每个阶段都有特定的任务,如数据初始化、DOM操作、网络请求等。
4. **Vue数据双向绑定的底层实现**:Vue通过Object.defineProperty()重新定义数据属性,监听数据变化,结合Vue的编译器,实现视图与数据的实时同步。
5. **回调函数、Promise、async/await**:回调函数是异步处理的基础,但可能导致回调地狱。Promise提供链式调用解决此问题,而async/await是基于Promise的语法糖,使异步代码更接近同步风格,易于理解和维护。
6. **Vue-Router模式**:Vue-Router提供了两种模式——hash模式和history模式,分别基于URL的hash值和HTML5 History API来管理路由。
7. **前端测试和Web压力测试**:前端测试包括单元测试、集成测试、端到端测试等,确保代码质量;Web压力测试则模拟大量用户同时访问,检查系统的稳定性和性能瓶颈。
8. **XSS和CSRF**:XSS(Cross-Site Scripting)是注入恶意脚本攻击,CSRF(Cross-Site Request Forgery)则是利用用户已登录的身份执行非预期操作。防范措施包括输入验证、CSRF令牌等。
9. **SPA计算PV**:单页应用(SPA)的页面浏览量(PV)计算需要在客户端或服务器端记录路由变更,通常通过事件监听或History API实现。
10. **DOMList转Array**:JavaScript的DOMList不是Array,需通过Array.from()或扩展运算符(...)将其转换为Array以便使用数组方法。
11. **Generator和async函数**:Generator函数允许暂停执行,生成迭代器;async/await提供异步编程的同步写法,两者都涉及Promise,但async/await更易读。
12. **CSS3圆型头像**:利用border-radius属性实现圆形图像效果。
13. **排序的几种方法**:JavaScript提供了多种排序方法,如Array.prototype.sort(),快速排序、归并排序、插入排序等算法。
14. **哈希解决冲突**:哈希表通过散列函数将键映射到数组索引,冲突时可以采用开放寻址法、链地址法、再散列法等策略处理。
15. **保存路由信息**:在刷新时保持路由信息,通常使用浏览器的sessionStorage或localStorage,或者结合后端实现服务器端会话存储。
16. **文本和输入框两端对齐**:在CSS中,可以使用text-align: justify实现两端对齐,对于输入框,可能需要自定义样式来达到视觉上的对齐效果。
以上内容是前端面试中常见的知识点,理解并熟练运用它们将有助于提升开发能力和面试表现。