第二天前端面试题

1、说一说map 和 forEach 的区别?

map将会返回一个新数组,该数组的长度length与原数组的长度一样,即使数组元素是underfined或者null。foreach默认无返回值,返回的结果为underfined,通过在函数体内部使用索引改变数组元素的值

2、说一说事件循环Event loop,宏任务与微任务?

Eventloop是指js执行代码的时候,遇到同步任务,直接推到调用栈中执行,遇到异步任务,将任务挂起,直到异步任务返回结果是推到任务队列中,当调用栈同步任务全部执行完成,依次执行任务队列中的任务,反复执行以上行为。宏任务:任务队列里面的任务是宏任务,宏任务包含微任务队列。微任务:在宏任务完成了主要功能的之后,渲染引擎不着急去执行下一个宏任务,而是执行当前宏任务的微任务。宏任务包括script标签里面执行的代码、setintervel/settimeout、Ajax请求、I/O流。微任务包括promise、nexttick、object.observe等

3、说一说三栏布局的实现方案?

答:1)左右浮动,设置宽高,中间设置高,宽度自适应。2)bfc:左右浮动,中间overflow:hidden。3)flex布局,父元素设置flex,中间元素设置flex-grow:1

4、说一下浏览器垃圾回收机制?

答:垃圾回收机制根据数据存储方式分为堆垃圾回收和栈垃圾回收。栈垃圾回收非常简便,当一个函数结束之后,js引擎会向下移动ESP来销毁在栈中该函数的执行上下文,遵循先紧后出原则。堆垃圾回收,一个函数结束之后,栈空间处理完成,虽然堆空间数据并没有调用,但是占用堆内存空间,此时垃圾回收器将堆空间垃圾数据回收。

5、说一说defer和async区别?

html遇到script标签,先js加载,立即执行js代码,执行完之后dom结构更新。

加上defer和async,当HTML遇到script标签时,js加载和dom结构更新同时进行。

async在js加载之后,立即执行js代码,堵塞dom结构更新

而defer,在js加载之后,先dom结构更新在执行js代码

6、说一下浏览器如何渲染页面的?

答:先将HTML形成dom树,然后css形成css树,接着dom树和css树合并成布局树,将布局树进行分层,将每一个图层转换为图块,将图块进行光栅化转换为位图,最终渲染成页面

7、说一说new会发生什么?

new创建一个空的简单的JS对象,在对象里添加属性_proto_,将该属性链接到构造函数原型上,将创建的新对象作为执行上下文this,如果该函数没有返回对象就返回this

8、说一下token 能放在cookie中吗?

能,token是判断用户是否登录状态,token包括有uid、time、sign,token可以放在cookie,token失效是由后端决定,而不是前端,token放在cookie中只要不设置cookie的过期时间就OK的。如果token失效,后端会在接口中返回一个固定状态通知token失效,需要重新登录,再重新登录的时候,重新设置cookie中token。

9、说一下浏览器输入URL发生了什么?

1)解析URL  2)查询缓存  3)DNS解析 4)TCP三次握手  5)http请求  6)TCP四次挥手 

7)HTML渲染

10、说一说盒模型?

CSS盒子模型含有border、pedding、margin、content,根据盒子的大小和计算方式分为两种盒子模型,分别是标准盒模型和怪异盒模型。标准盒模型设置width和height,实际是content的大小,盒子实际大小是pedding、margin加上设置的宽高。怪异盒模型设置的width和height,包含content、pedding和margin,设置的width和height就是实际的大小

11、说一说伪数组和数组的区别?

伪数组类型不是array而是object,可以使用length查看长度,也可以用index来获取某个元素,但是不能用数组的方法,不能修改长度,例如:参数arguments

12、说一说如何实现可过期的localstorage数据?

localstorage是永久化存储数据,直到手动删除数据,如果实现过期localstorage的话,有两种解决方式:第一种惰性删除,第二种是定时删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值