常见前端面试题总结
汤姆不是猫 ... 2022-03-09 大约 4 分钟
# HTML篇
# 1. 对html语义化的理解
HTML5语义化标签是指正确的标签包含了正确的内容,结构良好,便于阅读,比如nav表示导航条,类似的还有article、header、footer等等标签。
# 2. html5有哪些更新
# 3. src和href的区别
# 4. 行内/块级元素有哪些?空(void)元素有哪些
# 5. script标签中defer和async的区别
# CSS篇
# 基础
# 1. css选择器及其优先级
# 2. display的属性及其作用
# 3. display的block、inline和inline-block的区别
# 4. display:none与visibility:hidden的区别
# 5. 对盒模型的理解
# 6. css3中有哪些新特性
# 7. 单行、多行文本溢出隐藏
# 页面布局
# 8. 两栏布局的实现
# 9. 三栏布局的实现
# 10. 水平垂直居中的实现
# 11. 对Flex布局的理解及其使用场景
# 定位浮动
# 12. 为什么需要清除浮动?清除浮动的方式
# 13. 对BFC的理解,如何创建BFC
BFC,块级格式化上下文,一个创建了新的BFC的盒子是独立布局的,盒子里面的子元素的样式不会影响到外面的元素。
在同一个BFC中的两个毗邻的块级盒在垂直方向(和布局方向有关系)的margin会发生折叠。
W3C CSS 2.1中的一个概念,它决定了元素如何对其内容进行布局,以及与其他元素的关系和相互作用。
# 14. position的属性有哪些。区别是什么
# 场景应用
# 15. 实现一个三角形
# 16. 如何解决1px的问题
# JS篇
# 基础
# 1. new操作符的实现原理
# 2. 数组有哪些原生方法
# 3. 什么是DOM和BOM?
# 4. 对类数组对象的理解,如何转化为数组
# 5. 对AJAX的理解,实现一个AJAX请求
# 6. js为什么要进行变量提升,它导致了什么问题
# 数据类型
# 7. js有哪些数据类型,他们的区别?
# 8. 数据类型检测的方式有哪些
# 9. 判断数组的方式有哪些
# 10. null和undefined区别
# 11. intanceof操作符的实现及原理
# 12. 为什么0.1+0.2!==0.3,如何让其相等
# 13. ==操作符的强制类型转换规则
# 14. Object.is()与比较操作符“===”、“==”的区别
# ES6
# 15. let、const、var的区别
# 16. 箭头函数与普通函数的区别
# 原型
# 17. 对原型、原型链的理解
# 18. 原型链指向
# 异步编程
# 19. 对promise的理解
它是什么?
Promise是一个方案,用来解决多层回调嵌套的解决方案。它现在是ES6的原生对象。
干嘛用的?
可以把一个多层嵌套的同步、异步都有回调的方法,给拉直为一串.then()组成的调用链。
解决啥问题?
多层嵌套的回调方法中,如果同时存在同步、异步的方法,那么实际执行顺序会混乱。不好调试不好维护。
# 20. promise基本用法
# 21. 对async/await的理解
# 22. async/await对比promise的优势
# 其他
# 23. 对闭包的理解
# 24. 对作用域、作用域链的理解
# 25. 对执行上下文的理解
# 26. 对this的对象的理解
# 27. call()和apply()的区别
# 28. 浏览器垃圾回收机制
# VUE篇
# 基础
# 1. Vue的基本原理
# 2. 双向数据绑定的原理
# 3. MVC、MVVM、MVP的区别
# 4. Computed和Watch的区别
# 5. Computed和Methods的区别
# 6. v-if和v-show的区别
# 7. data为什么是一个函数二不是对象
# 8. 单页面应用于多页面应用的区别
# 9. 对SPA单页面的理解,它的优缺点分别是什么
# 10. React和Vue的区别
# 11. Vue的优点
# 生命周期
# 12. 简单说一下Vue的生命周期
Vue实例有一个完整的生命周期 也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程
我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。
每一个组件或者实例都会经历一个完整的生命周期,总共分为三个阶段:初始化、运行中、销毁。