前端面试总结....

2020.7.3 JS面试总结…

1、let和var的区别:

1.块级作用域。 2、不存在变量提升  3、不能有重复的声明    。

2.闭包:

 闭包是一个函数有权访问另一个函数的作用域。
 闭包的特点:
	函数嵌套函数
	内部的函数可以引用外部函数的参数或者变量
	参数和变量不会被垃圾回收机制回收,因为内部函数还在引用
闭包的好处:
	模块化代码(通过立即执行函数构建具有私有变量和私有函数的对象)
	for循环中的索引
闭包的坏处:
	内存泄露(比如DOM节点的事件引用的函数和函数里使用到DOM节点后的互相引用,引起内存泄露。)
	解决方法:用不到时将对象或方法设为null

3.怎么判断数据类型?

 通吃:Object.prototype.toString.call(55)     "[object,number]"
 基本类型:typeof   (null会被判定为object)
 原型链上的判断:instanceof
 数组:Array. isArray()

4.原型链:

每个对象都可以有一个原型_proto_,这个原型还可以有它自己的原型,以此类推,形成一个原型链。

原型链知识链接

5.如何实现继承

类的声明与继承链接
1,原型链继承
2,借助构造函数继承
3,组合式继承
4,寄生式继承
5,寄生组合式继承(组合继承+寄生继承)

6.原生ajax

		var xhr = new XMLHttpRequest()
		// 设置请求方式,url,是否异步,true代表异步
		xhr.open('GET',url,true
		// onreadystatechange回调函数,readystate改变时会调用这个函数
		xhr.onreadystatechange = function (){
			if(xhr.readystate ===4){
				if(xhr.status === 200){
					resolve(xhr.responseText)
				}else if(xhr.status === 404){
				// reject错误回调处理
					reject(new Error('404 NOT FOUND'))
				}
			}
		}
		// 发送ajax请求
		xhr.send(null)
		//当发送get请求时,send方法参数为null,只有当发送post请求时,send方法才有对应string参数

7.事件循环机制

有很多个线程,比如说http请求线程,定时器线程之类,发送http请求会创建http的线程,将这个线程发
送到后台,获取到数据后将回调函数放进任务队列,js的主线程完成了就会去任务队列取出来放到主线
程执行,然后又去取。

JS运行机制博客链接

8.本地存储

cookie	:	cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来
回传递。cookie数据不能超过4k。只在设置的cookie过期时间之前一直有效。所有同源窗口中都是共享
sessionStorage:不会自动把数据发给服务器。当前浏览器窗口关闭前有效。存储可以达到5M或更大。
localStorage:不会自动把数据发给服务器。永久有效。存储可以达到5M或更大。

同源:JS只能与同一个域中的页面进行通讯
	当协议、域名、端口号都相等时,是同源的。三者有一样不同都会形成跨域。

9.跨域:

JSONP:利用scritp标签请求外部服务器中的数据,从而绕开同源策略对AJAX请求数据的限制。
iframe实现跨域:
后台代理方式:后台作为代理,每次对其它域的请求转交给本域的后台,本域的后台通过模拟http请求
去访问其它域,再将返回的结果返回给前台

10.性能优化

见我另一篇博客 性能优化

11.浏览器渲染机制

见我另一篇博客 渲染机制

12.重绘次数过多造成页面卡顿怎么解决?

 把那个元素设置成absolute,让它脱离文档流

13.写动画的方法

svg canvas  transtion settimeout   面试官推荐 requestAnimationFrame 帧率函数

14.异步操作都有哪些?

1、定时器都是异步操作
2、事件绑定也是异步操作
3、AJAX中一般采取异步操作
4、回调函数可以理解为异步

15.http请求

我的一篇博客有提到:http详解

16.输入url后经历了什么

一、浏览器查找输入域名的IP地址
	1、查找浏览器缓存(浏览器一般会缓存DNS记录一段时间,一般为2-30分钟)。
	2、查找系统缓存(即hosts文件,有没有对应的IP)
  3、以上都没有的话,就会经过DNS域名服务器进行域名解析
二、建立TCP连接(三次握手)
三、发送Http请求
四、服务器处理请求
五、返回响应结果
六、关闭TCP连接
七、浏览器解析html
八、浏览器布局渲染

17.flex布局

18.一万条数据用列表形式渲染,不想影响浏览器帧率。

 分批次渲染,按帧数渲染
 帧率:浏览器的帧率是每秒六十帧,十六点六毫秒一帧,如果每一帧的渲染超过十六点六毫秒
 就会掉帧,页面卡顿。

19.未解决的问题:登录注册的实现(token)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值