恐怖的腾讯云一二面。。。 总计接近3个小时40个问题
> 首先说明,本文是作者本人今日在面试腾讯云区域研发公司的总结
## 自我介绍之后面试就开始了,平台是腾讯会议。
#### 做题
1. 面试官让我做两道题,第一题编写一个memcpy,第二题编写二叉树的先序遍历(**树的结构面试官给出,调用有一个travseFun 函数指针,进行回调函数的调用**)
写完memcpy,面试官问我内存重叠问题考虑没有(**这儿我没说出来,当时感觉自己要挂了**)面试官直接第二题;
先序遍历简单,递归和迭代两种。
2. 二叉树的递归遍历有什么问题?(**回答可能会导致调用栈过深内存问题**)
3. 二叉树迭代遍历时用到了自定义栈,栈类型的特性,实现?(**回答先进后出,顺序表实现,线性表实现**)
4. C++析构函数为什么要用virtual修饰?(**基类指针动态创建子类对象引发内存泄露问题**)
5. 堆和栈的区别?(**从调用和内存分布两方面**)
6. 进程间通讯方式?(**pipe, fifo, signl, mmap, socket, 并详细说明是否全双工,以及优缺点**)
7. UDP和TCP的区别?(**地球人都知道**)
8. TCP为什么被称为流式传输协议?你怎么定义流?(**从TCP的连接以及断开扯起,再涉及了一下socket 创建中的网络编程知识**)
9. TIME_WAIT为什么是两个MSL时间?(**大致说了一下FIN的丢失,以及端口重用**)
10. 进程和线程的区别?(**结合Linux对其实现分点来说**)
11. 什么是分页错误?(**计算机组成原理学过。。。但是忘了,我就实话实话不太记得**)
12. 数据库范式?(**三大范式,并详细介绍了每个范式**)
13. 数据库索引?(**结合项目来说,用过primary_key, unique, index等**)
14. 树在C++中的应用,红黑树的特性,红黑树增删查改的时间复杂度?(**set, map, 红黑树的定义,Log N**)
15. 有没有一种数据结构可以让查找性能为常数?(**哈希表,并详细介绍了STL的哈希表实现**)
16. 数据库为什么不用红黑树用B+树?(**从磁盘说起,到B+树的数据结构优点**)
17. 如果有个联合索引 为(时间,姓名),现在只查找姓名会不会用到索引?(**最左匹配原则**)
18. 虚拟内存和物理内存的区别,联系?(**中间层,以及linux对虚拟内存的大致实现**)
#### 项目
> 简历中写了两个项目,然而面试官说我简历中没有东西可以看。。。。就问我有没有跟老师做过项目。我说做过一个社区二维码登记系统。
1. 你项目中有无使用加密方法,若使用加密你会用哪种加密办法?(没有使用,若可以使用的话一是简单加密:例如字母a+3,然后解密a-3;还有一种就是MD5或者哈希散列)
2. 二维码有无考虑信息冲突问题?(没有。。。 一脸尴尬)
#### 总结
上面这些大概持续**1个小时45分钟**感觉面试官还要问很多问题,但是由于我电脑没电关机了。。。 之后我感觉用手机进入会议,面试官说今天面试就到这儿了,也没问我什么问题,也没说准备后续面试,我以为就这样凉了。
#面经##C++工程师##校招#
## 自我介绍之后面试就开始了,平台是腾讯会议。
#### 做题
1. 面试官让我做两道题,第一题编写一个memcpy,第二题编写二叉树的先序遍历(**树的结构面试官给出,调用有一个travseFun 函数指针,进行回调函数的调用**)
写完memcpy,面试官问我内存重叠问题考虑没有(**这儿我没说出来,当时感觉自己要挂了**)面试官直接第二题;
先序遍历简单,递归和迭代两种。
2. 二叉树的递归遍历有什么问题?(**回答可能会导致调用栈过深内存问题**)
3. 二叉树迭代遍历时用到了自定义栈,栈类型的特性,实现?(**回答先进后出,顺序表实现,线性表实现**)
4. C++析构函数为什么要用virtual修饰?(**基类指针动态创建子类对象引发内存泄露问题**)
5. 堆和栈的区别?(**从调用和内存分布两方面**)
6. 进程间通讯方式?(**pipe, fifo, signl, mmap, socket, 并详细说明是否全双工,以及优缺点**)
7. UDP和TCP的区别?(**地球人都知道**)
8. TCP为什么被称为流式传输协议?你怎么定义流?(**从TCP的连接以及断开扯起,再涉及了一下socket 创建中的网络编程知识**)
9. TIME_WAIT为什么是两个MSL时间?(**大致说了一下FIN的丢失,以及端口重用**)
10. 进程和线程的区别?(**结合Linux对其实现分点来说**)
11. 什么是分页错误?(**计算机组成原理学过。。。但是忘了,我就实话实话不太记得**)
12. 数据库范式?(**三大范式,并详细介绍了每个范式**)
13. 数据库索引?(**结合项目来说,用过primary_key, unique, index等**)
14. 树在C++中的应用,红黑树的特性,红黑树增删查改的时间复杂度?(**set, map, 红黑树的定义,Log N**)
15. 有没有一种数据结构可以让查找性能为常数?(**哈希表,并详细介绍了STL的哈希表实现**)
16. 数据库为什么不用红黑树用B+树?(**从磁盘说起,到B+树的数据结构优点**)
17. 如果有个联合索引 为(时间,姓名),现在只查找姓名会不会用到索引?(**最左匹配原则**)
18. 虚拟内存和物理内存的区别,联系?(**中间层,以及linux对虚拟内存的大致实现**)
#### 项目
> 简历中写了两个项目,然而面试官说我简历中没有东西可以看。。。。就问我有没有跟老师做过项目。我说做过一个社区二维码登记系统。
1. 你项目中有无使用加密方法,若使用加密你会用哪种加密办法?(没有使用,若可以使用的话一是简单加密:例如字母a+3,然后解密a-3;还有一种就是MD5或者哈希散列)
2. 二维码有无考虑信息冲突问题?(没有。。。 一脸尴尬)
#### 总结
上面这些大概持续**1个小时45分钟**感觉面试官还要问很多问题,但是由于我电脑没电关机了。。。 之后我感觉用手机进入会议,面试官说今天面试就到这儿了,也没问我什么问题,也没说准备后续面试,我以为就这样凉了。
结果回到宿舍就受到了二面通知,加油叭加油叭~
> 今天11:40等到了面试,简单自我介绍之后开始面试
#### 问题
1. 面试官给10进制转换为2进制题目,在线手撕代码
2. 负数在计算机中的表示,如何转换?(**补码,反码等**)
3. select和epoll区别?(**文件描述符限制,采用的数据结构**)
4. select和epoll对于用户态和内核态消耗的不同?(**select基于用户态,epoll 红黑树基于内核态等**)
5. 介绍下如何判断一个socket可读?(**一脸懵逼,说了收到数据,收到FIN,收到SYN等, 结果面试官问我SYN会让socket可读吗? 懵逼**)
6. epoll如何实现多路复用?(**从epoll_create, epoll_ctl, epoll_wait三个函数讲起,并详细说明包括红黑树事件注册,双向链表活跃事件添加等**)
7. epoll为什么用红黑树和list?(**对比select, 使用红黑树可以让时间复杂度达到log n, 链表的话增删操作更方便,没有数目限制等**)
8. epoll的两种触发方式?(**ET,LT,并详细说明了两者的应用场景**)
9. 哈希表和list有什么区别?(**结合STL对两者实现来说**)
10. 红黑树在STL 中有什么应用?(**set, map,并详细说明了红黑树的数据结构**)
11. STL如何实现哈希表?(**从哈希方法,到哈希冲突解决,到哈希表扩容,以及为什么要用质数**)
#### 项目
> 简单说了一下我做的一个网站,并说用到了mysql等
1. 看你项目中用到了测试工具,你如何进行测试?(**从内存泄露工具valgrind, 到tcpdump, tcpcopy, wireshark说起**)
2. 如果一个TCP连接出现问题,你如何进行排除?(**从nginx和apache使用经验说起,排查配置文件,排查网络状况,排查网卡,DNS,系统使用等**)
3. 你都有哪些工具来进行排查?(**内存方面free, vmstat, 进程 top, ps, 网络netstat, ip等命令**)
4. 数据库主从复制介绍一下?(**从为什么要用主从复制,读写分离说起**)
5. 主从辅助如何保证事件的执行?(**简单说了一下mysql对事件的支持,以及原子性,隔离性等四个特性,再说了一下bin-log对其支持**)
6. 如何一个事件中包含四个操作,从服务器执行到第3个操作失败,结果会怎样?(**说实话不是特别清楚,但结合redis对于事务的支持模糊地说了一下**)
7. redis和mysql缓存一致性怎么理解?(**举了一个例子,为什么要有redis做中间层,以及为什么要先改数据库再改缓存中的数据**)
8. redis如何定位数据?(**没回答上来。。。。真的一脸懵逼**)
9. 你家在哪?
#### 总结
> 此次面试没有一面时间长,只有1个小时10分钟,面完之后面试官说会评估面试结果,尽快给答复。
等吧等吧~ 希望可以过~
#### 问题
1. 面试官给10进制转换为2进制题目,在线手撕代码
2. 负数在计算机中的表示,如何转换?(**补码,反码等**)
3. select和epoll区别?(**文件描述符限制,采用的数据结构**)
4. select和epoll对于用户态和内核态消耗的不同?(**select基于用户态,epoll 红黑树基于内核态等**)
5. 介绍下如何判断一个socket可读?(**一脸懵逼,说了收到数据,收到FIN,收到SYN等, 结果面试官问我SYN会让socket可读吗? 懵逼**)
6. epoll如何实现多路复用?(**从epoll_create, epoll_ctl, epoll_wait三个函数讲起,并详细说明包括红黑树事件注册,双向链表活跃事件添加等**)
7. epoll为什么用红黑树和list?(**对比select, 使用红黑树可以让时间复杂度达到log n, 链表的话增删操作更方便,没有数目限制等**)
8. epoll的两种触发方式?(**ET,LT,并详细说明了两者的应用场景**)
9. 哈希表和list有什么区别?(**结合STL对两者实现来说**)
10. 红黑树在STL 中有什么应用?(**set, map,并详细说明了红黑树的数据结构**)
11. STL如何实现哈希表?(**从哈希方法,到哈希冲突解决,到哈希表扩容,以及为什么要用质数**)
#### 项目
> 简单说了一下我做的一个网站,并说用到了mysql等
1. 看你项目中用到了测试工具,你如何进行测试?(**从内存泄露工具valgrind, 到tcpdump, tcpcopy, wireshark说起**)
2. 如果一个TCP连接出现问题,你如何进行排除?(**从nginx和apache使用经验说起,排查配置文件,排查网络状况,排查网卡,DNS,系统使用等**)
3. 你都有哪些工具来进行排查?(**内存方面free, vmstat, 进程 top, ps, 网络netstat, ip等命令**)
4. 数据库主从复制介绍一下?(**从为什么要用主从复制,读写分离说起**)
5. 主从辅助如何保证事件的执行?(**简单说了一下mysql对事件的支持,以及原子性,隔离性等四个特性,再说了一下bin-log对其支持**)
6. 如何一个事件中包含四个操作,从服务器执行到第3个操作失败,结果会怎样?(**说实话不是特别清楚,但结合redis对于事务的支持模糊地说了一下**)
7. redis和mysql缓存一致性怎么理解?(**举了一个例子,为什么要有redis做中间层,以及为什么要先改数据库再改缓存中的数据**)
8. redis如何定位数据?(**没回答上来。。。。真的一脸懵逼**)
9. 你家在哪?
#### 总结
> 此次面试没有一面时间长,只有1个小时10分钟,面完之后面试官说会评估面试结果,尽快给答复。
等吧等吧~ 希望可以过~