前端面试精选
一、 基础知识(HTML、CSS、JS)
基础中html是很少问到的,大部分是css和js的问题
1、 CSS相关
1) css选择符有哪些(记住前几个即可)
➢ id 选择器( #myid)
➢ 类选择器(.myclassname)
➢ 标签选择器(div,h1,p) ,用逗号分割,可多个
➢ 相邻选择器(h1 p) ,兄弟节点
➢ 子选择器(ul>li) ,
➢ 后代选择器(lia)
➢ 通配符选择器( * )
➢ 属性选择器(arel=“external”) ,jQuery常用
➢ 伪类选择器(a:hover,li:nth-child)
2) flex布局参考=》https://cloud.tencent.com/developer/article/1935297
3) 定位详解=》https://blog.csdn.net/weixin_38055381/article/details/81558288
2、 JavaScript相关
1) 深拷贝和浅拷贝
假设B复制了A,修改A的时候,看B是否发生变化:
如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)
如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)
代码语言:javascript复制// 浅拷贝
let person = {
name: '张三'
};
let personCopy = person;
personCopy.name = '李四';
// 此时person的name也变成了李四
// 深拷贝
let person = {
name: '张三'
};
let personCopy = JSON.parse(JSON.stringify(person));
personCopy.name = '李四';
// 此时person的name还是张三
// 将JSON对象转成JSON字符串
JSON.stringify()
// 将JSON字符串转成JSON对象
JSON.parse()
复制
2) js循环遍历方式=》https://cloud.tencent.com/developer/article/1935298
3) 数组和字符串的常用api(记住几个即可)
数组:https://www.w3school.com.cn/jsref/jsref_obj_array.asp
字符串:https://www.w3school.com.cn/jsref/jsref_obj_string.asp
4) ES6相关=》https://zhuanlan.zhihu.com/p/102442557
ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化ECMAScript6,即ES6,是ECMAScript的第六次修订,于2015年完成,也称ES2015ES6是继ES5之后的一次改进,相对于ES5更加简洁,提高了开发效率ES6新增的一些特性:
➢ let声明变量和const声明常量,两个都有块级作用域ES5中是没有块级作用域的,并且var有变量提升,在let中,使用的变量一定要进行声明
➢ 箭头函数ES6中的函数定义不再使用关键字function(),而是利用了()=>来进行定义
➢ 模板字符串模板字符串是增强版的字符串,用反引号(`)标识,可以当作普通字符串使用,也可以用来定义多行字符串
➢ 解构赋值ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值
➢ for of循环for…of循环可以遍历数组、Set和Map结构、某些类似数组的对象、对象,以及字符串
➢ import、export导入导出ES6标准中,Js原生支持模块(module)。将JS代码分割成不同功能的小块进行模块化,将不同功能的代码分别写在不同文件中,各模块只需导出公共接口部分,然后通过模块的导入的方式可以在其他地方使用
➢ set数据结构Set数据结构,类似数组。所有的数据都是唯一的,没有重复的值。它本身是一个构造函数
➢ … 展开运算符可以将数组或对象里面的值展开;还可以将多个值收集为一个变量