滴滴出行一面面试经历
滴滴是和阿里同一天面的,阿里的面试总结点击这里,滴滴的面试官人也很好,很有耐心,大概面了一个多小时,其中有两道编程题,一道算法题。
面试题
你做的难度最大的项目是什么?
我: 就是我简历中写的第一个项目(个人记账)。
面试官:用到了那些技术?
我:前端:Vue3+TSX、VueRouter、Pinia、Vite、Vant、Faker.js
为什么用Vite呢,它和Webpack有什么区别?
我:打包速度更快,热更新更快,因为用到了ES Module的标准,动态打包加载模块,并用WebSocket推送到服浏览器。
为什么Vite的热更新比Webpack的热更新快
我:因为Vite的热更新是动态打包,采用了ES Module模块标准,当浏览器用到对应的模块时才会打包,并用WebSocket推送至浏览器。而Webpack会全部重新打包。(Webpack这一块我了解的不多,所以我就跟面试官说,关于Webpack了解的不是很多,就下一题了。。。。)
讲一下JS中的this
做一下以下的编程题,看一下console.log的结果
let obj = {
dev: 'bfe',
a: function() {
return this.dev
},
b() {
return this.dev
},
c: () => {
return this.dev
},
d: function() {
return (() => {
return this.dev
})()
},
e: function() {
return this.b()
},
f: function() {
return this.b
},
}
console.log(obj.a())
console.log(obj.b())
console.log(obj.c())
console.log(obj.d())
console.log(obj.e())
console.log(obj.f()())
// bfe bfe undefined bfe bfe undefined
做完之后,面试官要求解释一下
React中的useMemo和useCallback的区别
他们的应用场景分别是什么
JS中的事件队列
编程题,看一下console.log会输出什么
console.log('1')
setTimeout(()=>{
console.log('2')
},0)
Promise.resolve().then((a)=>{
console.log('3')
})
new Promise((resolve)=>{
console.log('4')
resolve()
console.log('5')
}).then(()=>{
console.log('6')
})
new Promise((resolve)=>{
setTimeout(() => {
resolve();
}, 100);
}).then(() => {
console.log('7');
});
// 1 4 5 3 6 2 7
同样,做完之后,面试官要求解释。
你在React中使用Hooks遇到过什么bug
Cookie和localStorage、seesionStorage的区别
追问,怎么实现Cookie两个子域名之间共享
Get请求和Post请求的区别
我:幂等性······
面试官:复杂请求是过程是什么样的。
我:post请求之前会有一个options请求······。
怎么实现两个子域名之间的登录功能
- sessionID
- jwt放在cookie中
(刚开始我理解错了。。。以为是微服务那样的。。。一直以为是两个服务器,后面才发现面试官说的是两个子域名。)
怎么实现CORS跨域
追问 后端怎么设置响应头实现跨域
为什么使用zustand作为第三方状态管理库,而不是使用redux
算法题 返回二叉树最大深度
function maxDepth(root: TreeNode | null): number {
if(root===null){
return 0;
}
else{
const rl :TreeNode=root.left;
const rr :TreeNode=root.right;
return Math.max(maxDepth(rl)+1,maxDepth(rr)+1)
}
};
TS用的多吗?
能实习多久
能来北京实习吗?
总结
💡 💡 💡
这次的面试体验非常不错,跟面试官的互动很愉快,面试官的问题也是由浅入深,先问项目,再一点点拓展。面试题所涵盖的知识点也很多。对技术提升也很有帮助。