软件开发秋招面经--------2021腾讯秋招软件开发工程师C++面经(三面+hr面)
主要技术栈为Linux C++技术方向,2021年腾讯秋招软件开发岗位
一面
1. 自我介绍
2. 看你简历上有写智能指针,你能给我简单描述一下吗?
3. C文件的编译过程?
4. 链接有哪些链接方式?
5. 指针数组、数组指针的sizeof求值分别是什么?
6. 你对模板有了解吗?
7. 你了解运行时多态的实现过程吗?
8. 你了解STL吗?map的底层实现?map中查找一个元素的时间复杂度?hash冲突的解决方法?
9. 排序算法你了解哪些,具体说说
10. core文件的调试方式?gdb的使用方法你了解过哪些?要是你的代码core掉,你一般会怎样调试?
11. 多进程间通信的方式?你认为哪一种的效率最高?
12. 那多线程间通信有哪些方法?线程安全问题如何解决?如果想让数据属于线程私有应该怎样实现?有了解过tls的底层实现吗?
13. TCP/UDP可以进行广播吗?UDP可靠吗?MTU/MSS的大小?
14. unique_lock和lock_groud的区别?我看到你的项目中有个bug?我看到你的项目中用的send和recv,怎样设置为非阻塞?非阻塞如果没有数据可读返回值是什么?
15. 三次握手和四次挥手?
16. 有没有了解过malloc的底层?
17. 查看服务器连接的工具?你有抓过数据包吗?
18. 你有了解过开源的东西吗?你有了解过协程吗?分布式?阿帕奇?
19. 算法题:K行,每一行有无穷多的数,每一行都是由大到小排列,从这K行中找前N个最大的数
20. 你有什么问题要问的么
二面
1. 自我介绍
2. 主要聊项目
3. 算法题:在无数个无序数中找到中位数
4. 你问的问题
三面
1. 问了学校相关专业课
2. 算法题:一个文件中有100亿个int数据,用最短时间找到最大的1000个
3. 进程和线程的区别
4. 线程池的实现方法?有什么好处?
5. vector和list的区别,push_back如何实现?vector的扩容方式?为什么扩容有这样差异?
6. vector、list、map、set有什么区别?分别的使用场景?
7. Linux下进程间通信方式?管道、共享内存什么场景下会用?两个进程不在同一个机器如何通信?
8. 有用过socket吗?UDP不可靠为啥还要存在?
9. 微信聊天用的是UDP还是TCP?
10. Linux下查看网络端口?
11. Linux下查看负载情况?
12. 临时变量int arr[]可以达到的最大大小
13. 一个进程最大能占用多大的内存空间?
14. 你考虑读研究生吗?你家是哪里的?
hr面
1. 自我介绍
2. 介绍部门
3. 你有什么兴趣爱好吗?
4. 你使用过直播app吗?
5. 你平时喜欢看什么直播?
6. 你觉得直播的app平时哪些地方的压力会比较大?
7. 你有面试其他公司吗?考虑优先级?
8. 考虑读研究生吗?
9. 有女朋友吗?
10. 父母做什么工作?
11. 问一个问题
