zhuanghaixin / Interview

8 stars 0 forks source link
algorithm css interview js react vue

Interview

答题模版

原理题答题模版

1. 必考:你是如何理解 HTML 语义化的?

3. 你用过哪些 HTML 5 标签?

原生 JS

1. 必考:ES 6-11 语法知道哪些,分别怎么用?

 // 节流(一段时间执行一次之后,就不执行第二次)
 function throttle(fn, delay){
     let canUse = true
     return function(){
         if(canUse){
             fn.apply(this, arguments)
             canUse = false
             setTimeout(()=>canUse = true, delay)
         }
     }
 }

 const throttled = throttle(()=>console.log('hi'))
 throttled()
 throttled() 

注意,有些地方认为节流函数不是立刻执行的,而是在冷却时间末尾执行的(相当于施法有吟唱时间),那样说也是对的。

背代码

 // 防抖(一段时间会等,然后带着一起做了)
 function debounce(fn, delay){
     let timerId = null
     return function(){
         const context = this
         if(timerId){window.clearTimeout(timerId)}
         timerId = setTimeout(()=>{
             fn.apply(context, arguments)
             timerId = null
         },delay)
     }
 }
 const debounced = debounce(()=>console.log('hi'))
 debounced()
 debounced()

4. 必考:手写AJAX

5. 必考:这段代码里的 this 是什么?

11. 常考:不用 class 如何实现继承?用 class 又如何实现?

12. 常考:如何实现数组去重?

13. 放弃:== 相关题目(反着答)

不要背,记不住,太复杂且没有规律

14. 送命题:手写一个 Promise

提前写一遍,放在博客里,参考 https://juejin.im/post/5aafe3edf265da238f125c0a

DOM

1. 必考:事件委托

bug 在于,如果用户点击的是 li 里面的 span,就没法触发 fn,这显然不对。

思路是点击 span 后,递归遍历 span 的祖先元素看其中有没有 ul 里面的 li。

2. 曾考:用 mouse 事件写一个可拖曳的 div

参考代码:https://jsbin.com/munuzureya/edit?html,js,output

HTTP

1. 必考:HTTP 状态码知道哪些?分别什么意思?

2xx 表示成功 3xx 表示需要进一步操作 4xx 表示浏览器方面出错 5xx 表示服务器方面出错 完整参考 http://www.runoob.com/http/http-status-codes.html

2. 大公司必考:HTTP 缓存有哪几种?

需要详细的了解 ETag、CacheControl、Expires 的异同 参考 https://imweb.io/topic/5795dcb6fb312541492eda8c 答题要点: ETag 是通过对比浏览器和服务器资源的特征值(如MD5)来决定是否要发送文件内容,如果一样就只发送 304(not modified) Expires 是设置过期时间(绝对时间),但是如果用户的本地时间错乱了,可能会有问题 CacheControl: max-age=3600 是设置过期时长(相对时间),跟本地时间无关。

3. 必考:GET 和 POST 的区别

2. 必考:React 有哪些生命周期函数?分别有什么用?(Ajax 请求放在哪个阶段?)

答题思路跟 Vue 的一样

安全

1. 必考:什么是 XSS?如何预防?

比较复杂,看我的文章 https://zhuanlan.zhihu.com/p/22500730

2. 必考:什么是 CSRF?如何预防?

比较复杂,看若愚的文章 https://zhuanlan.zhihu.com/p/22521378

开放题目

超纲题

1.JS 垃圾回收机制

注意:这一题的答案不唯一,在 Node.js 和 Chrome 的结果不一样,甚至在 Chrome 上也是时而这个答案,时而那个答案。所以还是说思路最重要。

个性化题目

PWA

echarts.js / d3.js

three.js

flutter

SSR