滴滴日常一面
全程30min,最后一个场景题和答的不太好,完了没有消息了
一,项目有没有上线使用
二,怎么学前端的
三,为什么要学前端,没学后端了啥的
四,JS的基本数据类型
五,null和undefined的区别
六,存储一个基本数据类型和引用数据类型在内存中有什么区别
一个在堆一个在栈
七,堆和栈有什么区别
八,看代码题
var obj = {a: 1} var objCopy = obj objCopy.a = 2 obj.a ?
- 怎样修改objCopy而不影响obj? 深拷贝
- 深拷贝和浅拷贝的区别
- 实现深拷贝的方法
九,什么是函数作用域
十,this的绑定有几种
- 代码题解释一下答案
- 箭头函数和普通函数的区别
十一,JS是怎么处理异步请求的
事件循环
- 代码题
new Promise((resolve, reject) => { console.log("promise1"); resolve(); }).then(() => { console.log("promise2"); }); console.log("start1"); setTimeout(() => { console.log("a"); }, 2000); setTimeout(() => { console.log("b"); }, 1000); setTimeout(() => { Promise.resolve() .then(() => { console.log("promiseA"); }) .then(() => { console.log("promiseB"); }); }); console.log("start2"); Promise.resolve() .then(() => { console.log("promise88"); setTimeout(() => { console.log(333); }); }) .then(() => { console.log("promise2"); setTimeout(() => { console.log(555); }); });
讲一下过程
十二,手写题
let arr = [1,2,[3,4,[5,[6]]]] // 使用闭包实现每隔一秒打印 1,2,3,4
中间用了次let,又问了let和var的区别,说了let会形成块级作用域
又问了块级作用域和函数作用域的区别,这个不太知道怎么答
十三,场景题
有一个接口,他的接收和发送的速度都受网络带宽的影响,可能会有延迟,那么可能会导致处理请求的顺序和发送请求的顺序不一样,那怎么保证返回结果的顺序就是发送请求的顺序
提示一下:用一种数据结构
回答说用队列去实现,然后让我写代码,我不是很理解怎么写