1. 自我介绍
2. 如何理解前端这个岗位
3. 浏览器如何渲染HTML文档
4. 重排和重绘的区别(讲了定义,以及如何触发)
5.重绘会引起重排吗
6. 使用scale属性会引起重排列还是重绘(这个我不清楚,求大神解答),追问:使用translate做一个过渡会引起重绘嘛
7. 同步和异步的区别(顺便给面试官讲了一下event loop),追问:setTimeout属于微任务还是宏任务,setTimeout里面的代码块是宏任务还是微任务(不清楚,求大神解答,应该是宏任务呀?)
8.如何实现图片懒加载(vue使用了lazyload插件,但是我还看到网上有一些自定义指令,面试官更愿意听到哪一种呢?求大佬解答)同时还说了js原生实现懒加载的三种方式
9.图片懒加载为了解决什么样的事情(打散请求,减轻浏览器压力)
10.如何实现路由懒加载,路由懒加载的坏处
11.如何实现路由鉴权
12. 请求拦截器的实现原理
13. 请求拦截器里面有个next??(不懂,没见过,求大佬解答)比如定义两个请求拦截器,但是如何实现当满足某个条件,只走第一个拦截器,不用走第二个。(面试官的解决:1.只定义一个请求拦截器在里面用if调用函数,在遍历请求拦截器的数组的时候,用break打断)
14.栈和队列的区别
15.遍历栈的优秀的算法
16.对链表的理解
17.数组和链表在内存中的存储结构
18.数组的长度是想要多长就多长吗?(肯定不能吧)
19.文件的断点续传如何实现,附件上传和下载怎么实现
20.场景题,请你提供一个函数,这个函数负责打开一个弹出框,别人在使用这个函数的时候,只需要传递对应的参数,就可以打开弹出框,比如说使用window.show就可以打开、并且给调用方一个反馈,用户点击了哪个按钮,才能继续写按钮对应的逻辑(1.传入对应按钮的回调,并且给对应按钮帮的那个对应回调,2.返回一个promise,如果promise可以调用then就意味着点击了确定或取消,然后书写应对then和catch的回调)
21.给一个树,获得某个节点的层级