拼多多前端实习面经
一面(4.19)
1.项目2.组件自适应
3.手写防抖
function debounce(fn,delay) {
let timer
return function () {
let args = Array.prototype.slice.call(arguments)
clearTimeout(timer)
timer = setTimeout(()=>{
fn.apply(this,args)
},delay)
}
}
然后追问如何改写才能使得3次then获得相同的结果
我想不到,此处要@一个大佬
const fun = debounce()
fun().then()
fun().then()
fun().then()
4.原型链
5.apply的第二个参数可以是伪数组吗,我说伪数组会有问题(可以是伪数组的)
6.伪数组如何转成数组
Array.slice
Array.from
数组解构
7.styled-components的原理,里面有scoped包裹(类似vue 的style的scoped)
8.对框架的感受
9.js隐式转换
10.隐式转换遇到过哪些坑
二面(4.27)
1.自我介绍
2.每个项目中遇到的问题及解决方案
3.多页面通信的方法
4.Vue和React的异同
重点:
vue和react diff算法差异
vue3怎么优化diff算法
指定key和不指定key的diff算法有什么不同
vue和react怎么实现驱动试图更新,什么区别,为什么会有这种区别(随便说的,已经答蒙了)
vue2修改数组如何更新视图
vue3新特性
react hooks和compsitions api有什么不同(只说上了依赖收集的不同)
虚拟DOM是什么,优点是什么
性能
跨端
(知道的大佬可以补充一下)
浏览器渲染过程
重排重绘
什么操作会造成重绘
减少重绘的方法
5.TS中unknown和any的区别
6.浏览器跨域,问题的解决方法
代理服务器能跨域吗?为什么能访问代理服务器
jsonp如何实现的
CORS通过什么控制跨域,简单请求和非简单请求
7.http协议,http2相对于http1有哪些改进
解决队头阻塞
服务端推送
头部压缩
多路复用
发送的是二进制数据
8.浏览器缓存(强缓存和协商缓存)
Etag和modifysince的区别
9.事件循环,微任务和宏任务有哪些,说完就做一道题
10.手撕leetcode重排链表算法
1-2-3-4-5=>1-5-2-4-3
面试官提示下想到了思路:找到链表中点,将中点后的子链表反转,将子链表合并到前面分割的链表(中点之前的链表)
最终没写出来有点遗憾,觉得过不了了,然后第二天下午就收到三面通知
三面主管面(5.6)
1.自我介绍
2.项目难点
3.react hooks和class组件的区别,为什么要用hooks(只说上了逻辑抽取,面试官说class组件也可以,我就不知道怎么说了)
4.vue3和vue2的区别
5.为什么要用axios,axios做二次封装的实现(promise)
6.手撕leetcode算法题(简单)
7.手写一个发布订阅模式
8.反问
过了一星期发了感谢信,我估计是前面的问题没答好,悲哀
收起全文
#拼多多前端面经##面经#