快手 C++ 一面面经

概述:10月11日面试,面了50分钟,主要是八股,难绷的是投简历筛了1个月才面上,不过面试官人特别好,不会的题都会让我思考,然后和我详细讲答案,体验不错

面试流程:

1.自我介绍

2.new和malloc的区别

3.全局静态变量的构造和析构时机

4.map容器,在for循环中erase(it)会怎么样,怎么修改(erase返回值就是下一个it)

5.什么时候用多线程/多进程(io多、连接多、切换多用多线程,计算多,连接少、要求安全性用多进程)

6.多线程的优点(切换快、原语丰富,通信方便)

7.HTTP1/2/3的区别

8.DNS用的UDP还是TCP

9.shutdown的效果

10.tcp是全双工吗?(我记错了,http是半双工,tcp是全双工)

11.epoll用的边缘触发还是水平触发?有什么区别

  • 说了边缘触发比水平触发效率高,因为epoll_wait唤醒的次数少
  • 反问二者至少需要几次read,以为都是一次(面试官解释了一下,但不知道是不是正确的)
  • 边缘触发最少要两次,当返回为0且ERRNO不为EAGIN的时候才结束
  • 水平触发最少要一次,数据量少的时候效率更高,所以要权衡一下

12.对协程的理解

13.协程用在什么场景(异步并发)

14.协程适合计算量大的任务吗(不适合,会延迟,协程主要是用在等待非CPU资源(其他设备的CPU也算)的情况)

15.用协程并发为什么有优势(没答对,面试官说不需要竞争锁,意思是锁不会到内核层面?)

16.手撕:Z字型层序遍历

17.反问

#软件开发笔面经##快手求职进展汇总#
全部评论

相关推荐

2 3 评论
分享
牛客网
牛客企业服务