11.17 笔试

本文深入讲解前端开发中的关键概念和技术,包括深拷贝与浅拷贝的区别、客户端存储机制、Vue双向绑定原理、前端性能优化策略、滚动吸顶实现方法等。

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 服务端配置错误
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳晓黑胡椒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值