不知不觉,已是八月中旬。最近有很多大四的小伙伴都在跟我谈论秋招面试的问题,其实对于面试,我也没有太多的经验,只能默默地把之前整理的前端面试题分享给Ta。今天就来大致的梳理一下前端的面试体系(每一部分最后都有相应的面试题参考答案哦)。

1. 前端知识体系

在说前端面试体系之前,先来看一下之前整理的前端知识体系图(可能不太完整,毕竟我只是一个刚毕业一个多月的小菜鸡),这只是一个基础版的前端知识体系图,适合刚入门前端的小伙伴参考,大佬勿喷: 前端.png

2. HTML

(1)面试题目

常考的HTML面试题:

  1. src和href的区别
  2. 对HTML语义化的理解
  3. DOCTYPE(⽂档类型) 的作⽤
  4. script标签中defer和async的区别
  5. 常⽤的meta标签有哪些
  6. HTML5有哪些更新
  7. img的srcset属性的作⽤?
  8. 行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
  9. 说一下 web worker
  10. HTML5的离线储存怎么使用,它的工作原理是什么
  11. 浏览器是如何对 HTML5 的离线储存资源进行管理和加载?
  12. title与h1的区别、b与strong的区别、i与em的区别?
  13. iframe 有那些优点和缺点?
  14. label 的作用是什么?如何使用?
  15. Canvas和SVG的区别
  16. head 标签有什么作用,其中什么标签必不可少?
  17. 文档声明(Doctype)和有何作用? 严格模式与混杂模式如何区分?它们有何意义?
  18. 浏览器乱码的原因是什么?如何解决?
  19. 渐进增强和优雅降级之间的区别
  20. 说一下 HTML5 drag API

(2)思维导图

下图对HTML面试题的考察频率进行了大致的区分,可以选择性的学习: HTML面试题.png

(3)答案解析

既然有面试题,那面试题答案也是必不可少的,参考文章:「2021」高频前端面试题汇总之HTML篇

2. CSS

(1)面试题目

常考的CSS面试题:

一、CSS基础

  1. CSS选择器及其优先级

  2. CSS中可继承与不可继承属性有哪些

  3. display的属性值及其作用

  4. display的block、inline和inline-block的区别

  5. 隐藏元素的方法有哪些

  6. link和@import的区别

  7. transition和animation的区别

  8. display:none与visibility:hidden的区别

  9. 伪元素和伪类的区别和作用?

  10. 对requestAnimationframe的理解

  11. 对盒模型的理解

  12. 为什么有时候⽤translate来改变位置⽽不是定位?

  13. li 与 li 之间有看不见的空白间隔是什么原因引起的?如何解决?

  14. CSS3中有哪些新特性

  15. 替换元素的概念及计算规则

  16. 常见的图片格式及使用场景

  17. 对 CSSSprites 的理解

  18. 什么是物理像素,逻辑像素和像素密度,为什么在移动端开发时需要用到@3x, @2x这种图片?

  19. margin 和 padding 的使用场景

  20. 对line-height 的理解及其赋值方式

  21. CSS 优化和提高性能的方法有哪些?

  22. CSS预处理器/后处理器是什么?为什么要使用它们?

  23. ::before 和 :after 的双冒号和单冒号有什么区别?

  24. display:inline-block 什么时候会显示间隙?

  25. 单行、多行文本溢出隐藏

  26. Sass、Less 是什么?为什么要使用他们?

  27. 对媒体查询的理解?

  28. 对 CSS 工程化的理解

  29. 如何判断元素是否到达可视区域

  30. z-index属性在什么情况下会失效

  31. CSS3中的transform有哪些属性

二、页面布局

  1. 常见的CSS布局单位
  2. px、em、rem的区别及使用场景
  3. 两栏布局的实现
  4. 三栏布局的实现
  5. 水平垂直居中的实现
  6. 如何根据设计稿进行移动端适配?
  7. 对Flex布局的理解及其使用场景
  8. 响应式设计的概念及基本原理

三、定位与浮动

  1. 为什么需要清除浮动?清除浮动的方式
  2. 使用 clear 属性清除浮动的原理?
  3. 对BFC的理解,如何创建BFC
  4. 什么是margin重叠问题?如何解决?
  5. 元素的层叠顺序
  6. position的属性有哪些,区别是什么
  7. display、float、position的关系
  8. absolute与fixed共同点与不同点
  9. 对 sticky 定位的理解

四、场景应用

  1. 实现一个三角形
  2. 实现一个扇形
  3. 实现一个宽高自适应的正方形
  4. 画一条0.5px的线
  5. 设置小于12px的字体
  6. 如何解决 1px 问题?

(2)思维导图

下图对CSS面试题的考察频率进行了大致的区分,可以选择性的学习: CSS面试题.png

(3)答案解析

既然有面试题,那面试题答案也是必不可少的,参考文章:「2021」高频前端面试题汇总之CSS篇

3. JavaScript

(1)面试题目

一、数据类型

  1. JavaScript有哪些数据类型,它们的区别?
  2. 数据类型检测的方式有哪些
  3. 判断数组的方式有哪些
  4. null和undefined区别
  5. typeof null 的结果是什么,为什么?
  6. intanceof 操作符的实现原理及实现
  7. 为什么0.1+0.2 ! == 0.3,如何让其相等
  8. 如何获取安全的 undefined 值?
  9. typeof NaN 的结果是什么?
  10. isNaN 和 Number.isNaN 函数的区别?
  11. == 操作符的强制类型转换规则?
  12. 其他值到字符串的转换规则?
  13. 其他值到数字值的转换规则?
  14. 其他值到布尔类型的值的转换规则?
  15. || 和 && 操作符的返回值?
  16. Object.is() 与比较操作符 “===”、“==” 的区别?
  17. 什么是 JavaScript 中的包装类型?
  18. JavaScript 中如何进行隐式类型转换?
  19. +操作符什么时候用于字符串的拼接?
  20. 为什么会有BigInt的提案?
  21. object.assign和扩展运算法是深拷贝还是浅拷贝,两者区别

二、ES6

  1. let、const、var的区别
  2. const对象的属性可以修改吗
  3. 如果new一个箭头函数的会怎么样
  4. 箭头函数与普通函数的区别
  5. 箭头函数的this指向哪⾥?
  6. 扩展运算符的作用及使用场景
  7. Proxy 可以实现什么功能?
  8. 对对象与数组的解构的理解
  9. 如何提取高度嵌套的对象里的指定属性?
  10. 对 rest 参数的理解
  11. ES6中模板语法与字符串处理

三、JavaScript基础

  1. new操作符的实现原理

  2. map和Object的区别

  3. map和weakMap的区别

  4. JavaScript有哪些内置对象

  5. 常用的正则表达式有哪些?

  6. 对JSON的理解

  7. JavaScript脚本延迟加载的方式有哪些?

  8. JavaScript 类数组对象的定义?

  9. 数组有哪些原生方法?

  10. Unicode、UTF-8、UTF-16、UTF-32的区别?

  11. 常见的位运算符有哪些?其计算规则是什么?

  12. 为什么函数的 arguments 参数是类数组而不是数组?如何遍历类数组?

  13. 什么是 DOM 和 BOM?

  14. 对类数组对象的理解,如何转化为数组

  15. escape、encodeURI、encodeURIComponent 的区别

  16. 对AJAX的理解,实现一个AJAX请求

  17. JavaScript为什么要进行变量提升,它导致了什么问题?

  18. 什么是尾调用,使用尾调用有什么好处?

  19. ES6模块与CommonJS模块有什么异同?

  20. 常见的DOM操作有哪些

  21. use strict是什么意思 ? 使用它区别是什么?

  22. 如何判断一个对象是否属于某个类?

  23. 强类型语言和弱类型语言的区别

  24. 解释性语言和编译型语言的区别

  25. for...in和for...of的区别

  26. 如何使用for...of遍历对象

  27. ajax、axios、fetch的区别

  28. 数组的遍历方法有哪些

  29. forEach和map方法有什么区别

四、原型与原型链

  1. 对原型、原型链的理解
  2. 原型修改、重写
  3. 原型链指向
  4. 原型链的终点是什么?如何打印出原型链的终点?
  5. 如何获得对象非原型链上的属性?

五、执行上下文/作用域链/闭包

  1. 对闭包的理解

  2. 对作用域、作用域链的理解

  3. 对执行上下文的理解

六、this/call/apply/bind

  1. 对this对象的理解
  2. call() 和 apply() 的区别?
  3. 实现call、apply 及 bind 函数

七、异步编程

  1. 异步编程的实现方式?
  2. setTimeout、Promise、Async/Await 的区别
  3. 对Promise的理解
  4. Promise的基本用法
  5. Promise解决了什么问题
  6. Promise.all和Promise.race的区别的使用场景
  7. 对async/await 的理解
  8. await 到底在等啥?
  9. async/await的优势
  10. async/await对比Promise的优势
  11. async/await 如何捕获异常
  12. 并发与并行的区别?
  13. 什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题?
  14. setTimeout、setInterval、requestAnimationFrame 各有什么特点?

八、面向对象

  1. 对象创建的方式有哪些?
  2. 对象继承的方式有哪些?

九、垃圾回收与内存泄漏

  1. 浏览器的垃圾回收机制
  2. 哪些情况会导致内存泄漏

(2)思维导图

下图对JavaScript面试题的考察频率进行了大致的区分,可以选择性的学习: JavaScript面试题.png

(3)答案解析

既然有面试题,那面试题答案也是必不可少的,参考文章:

4. Vue

(1)面试题目

一、Vue 基础

  1. Vue的基本原理
  2. 双向数据绑定的原理
  3. 使用 Object.defineProperty() 来进行数据劫持有什么缺点?
  4. MVVM、MVC、MVP的区别
  5. Computed 和 Watch 的区别
  6. Computed 和 Methods 的区别
  7. slot是什么?有什么作用?原理是什么?
  8. 过滤器的作用,如何实现一个过滤器
  9. 如何保存页面的当前的状态
  10. 常见的事件修饰符及其作用
  11. v-if、v-show、v-html 的原理
  12. v-if和v-show的区别
  13. v-model 是如何实现的,语法糖实际是什么?
  14. v-model 可以被用在自定义组件上吗?如果可以,如何使用?
  15. data为什么是一个函数而不是对象
  16. 对keep-alive的理解,它是如何实现的,具体缓存的是什么?
  17. $nextTick 原理及作用
  18. Vue 中给 data 中的对象属性添加一个新的属性时会发生什么?如何解决?
  19. Vue中封装的数组方法有哪些,其如何实现页面更新
  20. Vue 单页应用与多页应用的区别
  21. Vue template 到 render 的过程
  22. Vue data 中某一个属性的值发生改变后,视图会立即同步执行重新渲染吗?
  23. 简述 mixin、extends 的覆盖逻辑
  24. 描述下Vue自定义指令
  25. 子组件可以直接改变父组件的数据吗?
  26. Vue是如何收集依赖的?
  27. 对 React 和 Vue 的理解,它们的异同
  28. Vue的优点
  29. assets和static的区别
  30. delete和Vue.delete删除数组的区别
  31. vue如何监听对象或者数组某个属性的变化
  32. 什么是 mixin ?
  33. Vue模版编译原理
  34. 对SSR的理解
  35. Vue的性能优化有哪些
  36. 对 SPA 单页面的理解,它的优缺点分别是什么?
  37. template和jsx的有什么分别?
  38. vue初始化页面闪动问题
  39. extend 有什么作用
  40. mixin 和 mixins 区别
  41. MVVM的优缺点?

二、生命周期

  1. 说一下Vue的生命周期
  2. Vue 子组件和父组件执行顺序
  3. created和mounted的区别
  4. 一般在哪个生命周期请求异步数据
  5. keep-alive 中的生命周期哪些

三、组件通信

  1. 组件通信的方式

四、路由

  1. Vue-Router 的懒加载如何实现
  2. 路由的hash和history模式的区别
  3. 如何获取页面的hash变化
  4. route和route 和routerouter 的区别
  5. 如何定义动态路由?如何获取传过来的动态参数?
  6. Vue-router 路由钩子在生命周期的体现
  7. Vue-router跳转和location.href有什么区别
  8. params和query的区别
  9. Vue-router 导航守卫有哪些
  10. 对前端路由的理解

五、Vuex

  1. Vuex 的原理

  2. Vuex中action和mutation的区别

  3. Vuex 和 localStorage 的区别

  4. Redux 和 Vuex 有什么区别,它们的共同思想

  5. 为什么要用 Vuex 或者 Redux

  6. Vuex有哪几种属性?

  7. Vuex和单纯的全局对象有什么区别?

  8. 为什么 Vuex 的 mutation 中不能做异步操作?

  9. Vuex的严格模式是什么,有什么作用,如何开启?

  10. 如何在组件中批量使用Vuex的getter属性

  11. 如何在组件中重复使用Vuex的mutation

六、Vue 3.0

  1. Vue3.0有什么更新
  2. defineProperty和proxy的区别
  3. Vue3.0 为什么要用 proxy?
  4. Vue 3.0 中的 Vue Composition API?
  5. Composition API与React Hook很像,区别是什么