11.17 笔试

1.深拷贝
深拷贝实现链接

什么是深拷贝,什么是浅拷贝?有几种方式实现深拷贝?区别是什么?工作中什么情况下会用到深拷贝?
1.	深拷贝:不仅把第一级拷贝,如果原始数组或对象中存在多级,把每一级都拷贝一份赋值给新数组或对象的每一个级别
2.	浅拷贝:只把第一级的拷贝一份,赋值给新数组或对象,如数组的slice,concat,对象的 Object.assign()方法
3.	实现深拷贝:JSON数据格式,自己递归封装
4.	做表格排序,先存储深拷贝一个数据,以免造成原数据改动

2.客户端存储

Cookie、sessionStorage、localStorage的区别?你在工作中什么情况下会去运用到这三种?
1.	大小:cookie最大4k,localStorage和sessionStorage最大5M
2.	有效期:cookie可以设置过期时间,localStorage永不过期,sessionStorage 当前页面关掉
3.	作用域:Cookie和localStorage是同源窗口,seeionStorage是当前页面

3.Vue的双向绑定
vue数据双向绑定实现链接

Vue数据双向绑定的原理是什么?手写一个简易的数据双向绑定
	原理:通过数据劫持结合发布者-订阅者模式的方式实现的,利用了Object.defineProperty()这个方法重新定义了对象获取获取属性值(get)和设置属性值(set)

4.前端优化

前端性能如何优化?你平常用到最多的是什么?
1.	DNS优化:减少DNS次解析数
2.	http优化:减少http请求量,如精灵图,雪碧图
3.	渲染优化:减少回流重绘,如className统一添加样式,脱离文档流
4.	缓存优化:使用离线缓存

5.滚动吸顶
滚动吸顶实现链接

滚动吸顶有几种方式?
1.	使用 position:sticky 实现
2.	使用 JQuery 的 offset().top 实现
3.	使用原生的 offsetTop 实现
4.	使用 obj.getBoundingClientRect().top 实现

6.splice和slice

Splice 和 slice 的区别?
1.	splice会改变原数组,slice不会改变原数组
2.	splice 是实现数组的增删改
3.	slice 是实现数组的查询

7.用css3写一个drawer 抽屉从下到上的动画

待续

8.js数组去重
数组去重实现链接

8.	js数组去重有几种方式,分别是哪几种?
1.[new Set(arr)]
2.arr.filter((val,i)=>arr.indexOf(val) === i)
3.reduce方法
4.map方法
5.利用对象去重

9.异步

什么是异步?什么情况下会用到异步?
1.	js是单线程的语言,同步任务会在主线程次序执行,异步任务会寄托在宿主环境中执行,把执行完的回调放在任务队列中,等主线程的栈内存执行完,再执行任务队列中的回调
2.	异步任务分为 宏任务和微任务,在按照先微后宏执行
3.	异步的使用场景:发送ajax请求,用fs读取文件

10.手写一个promise

待续

11.闭包,递归,回调
1到100求和实现链接

说一下对递归、闭包、回调的理解?什么情况下会用到?用js递归的方式写1100求和?
1.  递归:方法自己调用自己 ,每次调用时传入不同的变量
2.  闭包:有权访问另一个函数作用域中变量的函数。即一个作用域可以访问另一个函数内部的局部变量
3.  回调:一个被当做参数的函数

12.封装简易请求
封装ajax链接

封装一个简易请求需要几步?

13.css水平、垂直居中
水平垂直居中实现链接

css水平、垂直居中的写法,请至少写出4种?
1.	定位  -- 使用 margin-top:- 盒子的高度一半 
2.	Flex
3.	Transform
4.	定位  -- 使用 上下左右都为 0 ,margin:auto

14.1rem,1em,1vh,1px

1rem、1em、1vh、1px各自代表的含义?
1rem  根标签 html 标签的字体大小
1em	  相对于父元素的字体大小
1vh	  可视区域(视窗)的高度,100vh等于视窗高度
1px	  一像素,一般电脑分辨率是1920 * 1024:即1920个像素 * 1024个像素

15.盒模型

说一下盒模型?
Css3中 box-sizing 有两个属性
border-box: 例如其中 width 包含 padding和border,而且设置width时,里面的内容部分会随着padding和border调节
content-box: 例如其中width 不包含 padding,border,只包含内容部分

16.画一条0.5px的直线?

画一条0.5px的直线?
第一种:transform:scale(0.5)
第二种:meta标签中intival-scale:0.5   初始缩放比例
第三种:canvas

17.清除浮动

清除浮动的几种方式,及原理?
第一种:Clear,两种方式 1.在浮动元素的最后创建一个div,加上 clear:both  2. 使用伪类元素
第二种:BFC,创建格式化上下文,如overflow:hidden,浮动,display:inline-block

18.继承

说一下继承的几种方式及优缺点?
待续

19.es6

说一下自己常用的es6的功能?
箭头函数,class,promise/async/await,扩展运算符,解构赋值,模板字符串…

20.http状态码

你所知道的http的响应码及含义?
200 成功
201 创建成功
301 永久重定向
302 临时重定向
304 协商缓存
400 客户端错误
401 token验证失败
403 账号权力不够
500	 服务端语法错误
502 服务端配置错误

猜你喜欢

转载自blog.csdn.net/hr_beginner/article/details/121392286
今日推荐