base北京,数据科学部。
9.13 下午约面,一面1h左右,体验还不错,中途在面试的过程中因为我那边“不可抗力”被打断了一次,心态有点小崩,挂断电话后好在面试官态度挺好,又联系上了继续面试。
项目、JS基础、Vue、计算机网络问的比较多,还有部分webpack,大部分题目都记得,少部分忘了估计比较简单没留意
1. 自我介绍
2. 介绍一下做的项目?项目中比较有成就感的点是什么?
3. 你们是团队协作吗?为什么独立开发的项目要用commit-lint、husky这些规范?
4. 你们的项目是基于git托管吗?git常用命令说一下?git如何回滚?
5. 说一下对闭包的理解?
6. 说输出结果?
for (var i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i)
}, 1000)
}
追问:如何打印0-9?
7. 说一下浏览器事件循环?
8. 一道异步输出的题
async function a1() {
console.log('a1 start') //2
await a2()
console.log('a1 end') //7
}
async function a2() {
console.log('a2') //3
}
console.log('script start') //1
setTimeout(() => {
console.log('setTimeout') //10
}, 0)
Promise.resolve().then(() => {
console.log('promise1') //6
})
a1()
let promise2 = new Promise((resolve) => {
resolve('promise2.then')
console.log('promise2') //4
})
promise2.then((res) => {
console.log(res) //8
Promise.resolve().then(() => {
console.log('promise3') //9
})
})
console.log('script end') //5
9. ES6有哪些新增的数组方法?map和forEach有什么区别?
10. 了解reduce吗?手写:用reduce实现数组拍平n层?
一时没有思路拍平n层,就用递归+reduce写了个完全拍平,并回答了面试官项目中的数组拍平的业务场景
function flattern(arr) {
return arr.reduce((prev, next) => {
return prev.concat(Array.isArray(next) ? flattern(next) : next)
}, [])
}
var arr = [[1, 2, 3], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [1, 2, 13, [14]]]], 10]
console.log(flattern(arr))
11. 算法:合并递增数组
function concatOrderedArray(arr1, arr2) {
let i = 0
let j = 0
let newArr = []
while (i < arr1.length && j < arr2.length) {
if (arr1[i] < arr2[j]) {
newArr.push(arr1[i])
i++
} else {
newArr.push(arr2[j])
j++
}
}
//arr2已经遍历完
while (i < arr1.length) {
newArr.push(arr1[i])
i++
}
//arr1已经遍历完
while (j < arr2.length) {
newArr.push(arr2[j])
j++
}
return newArr
}
const arr1 = [1, 3, 5, 7, 9]
const arr2 = [2, 4, 6, 8]
console.log(concatOrderedArray(arr1, arr2))
12. new一个对象的过程中发生了什么?追问:如果构造函数中return了呢?
13. HTTPS了解吗?和HTTP有什么区别?HTTPS的握手过程说一下?
14. get和post有什么区别?项目中用过除get和post之外的方法吗?
回答了项目中没有使用restful规范,但是知道其他方法
15. 项目上线了吗?跨域怎么解决的? 开发环境怎么解决的?上线后怎么解决跨域?
16. Vue中的组件通讯机制知道哪些?
17. 项目中的权限管理怎么做的?控制到按钮级别的权限怎么做?
18. 说一下对Vue响应式的理解?Vue2对比Vue3
19. diff算法的细节?双指针比较子节点具体是怎么比较的呢? 为什么要加key? 问的很细。。。
20. Vue的双向数据绑定怎么实现的?
21. watch和computed源码看过吗? 源码不会。。。
22. 写过webpack的配置吗?常用配置哪些?
23. loader的作用?项目中用过loader吗? 回答了项目中用到的svg-loader
24. 补充:ES6新增的API?
反问:问了学习建议?问了实习生的业务、技术栈?问了在滴滴的工作日常?
听面试官语气好像是可以过的意思,他说了要是我来就负责PC端的开发,任务不是很多balabala。。。好像部门不是很卷,弹性制度。
9.14 通知二面
------------------------------分割线------------------------------------------
9.15 二面
二面运气不是很好,上来把面试官姓名叫错两遍(因为HR发邮件里面信息有误,冤大头了),面试官态度也不是很好。。。。。
1. 自我介绍
2. 问项目
2. 如何封装搜索组件?可能有什么问题?防抖节流区别?手写防抖?
3. 手撕两道算法
算法没刷够,半天没A出来,G了。。。。。
总结:战绩最差的一次面试,虽说是日常实习,但是也让我明白了算法的重要性,回头恶补算法
#滴滴实习生##前端开发实习#