当前位置: 首页 > 面试经验 >

滴滴 前端日常实习 一面二面(二面挂)

优质
小牛编辑
141浏览
2023-03-28

滴滴 前端日常实习 一面二面(二面挂)

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了。。。。。

总结:战绩最差的一次面试,虽说是日常实习,但是也让我明白了算法的重要性,回头恶补算法
#滴滴实习生##前端开发实习#
 类似资料: