虎牙 C++客户端 一面二面三面hr面(已oc)

9.15 1h 一面
项目
1、客户端不同功能是单线程还是多线程
2、登录页面的密码传输安全性是否保证
3、上传大文件传输效率被限速怎么办

C++
1、构造函数可以设置为虚函数吗
2、析构函数可以设置为虚函数吗
3、C++11新特性
4、智能指针的介绍
5、栈与堆的区别 生长方向为何不同

STL
1、STL容器有哪些
2、set的底层实现
3、set的迭代器如何实现的

反问
1、建议
1)提高自身特长竞争力
2)项目全面性考虑,鲁棒性考虑
3)对自己项目涉及知识面的全面性了解与参照
2、新人培训
1)视频教学
2)导师指导
3)最重要的能力是将学习的东西结合到实践

ps:面试官太耐心太温柔了,不会的还给我举例子说明,对我的建议也是语重心长说了很多东西,全程真的一点都不紧张!

___________________________________________________________________________________


9.24 1h 二面
八股
1、如何避免野指针和内存泄漏
2、智能指针的实现原理
3、多态实现的几种办法
4、栈与堆的区别
5、使用过哪些容器
其他
1、如何对一个自定义类型实现sort编程
2、如何用你已知的数据结构实现一个QQ的最近联系人
3、如何将网络层线程数据传输到UI线程,即window的线程切换
4、如何实现程序的单实例运行
建议
1、东西需要学深而不是随便一个方向工作几年
2、毕业刚出来几年努力,很大程度决定你之后的处境
3、面对困难的时候,学会如何用现有书本知识去解决问题

ps:是同一个面试官,依旧是对我不会的问题好几个方向去引,我真的太幸运了,面完就被发终面邮件了!

___________________________________________________________________________________


复盘
1、如何避免野指针和内存泄漏
野指针:指针初始化为nullptr、释放内存后指针指向nullprt、访问数组时注意边界条件
内容泄漏:配套使用new/delete、使用智能指针、基类析构函数设置为虚函数

2、智能指针的实现原理
auto_ptr——new出来的内存实现自动delete
unique_ptr——实现一指针指向一对象
share_ptr——实现多指针指向一对象
weak_ptr——解决共享指针的循环引用问题

3、多态实现的几种办法
编译多态(静态多态):函数重载(函数名字相同但是参数列表不同)、模板(不去管参数的具体类型,面向处理逻辑编程)
运行多态(动态多态):基类指针指向子类对象实现对应版本的虚函数调用

4、栈与堆的区别
1)申请方式不同:栈是系统自动分配的,寄存器存在对栈操作的指令,效率高;
堆是程序员自己手动分配的,效率没那么高,用起来方便但容易出现问题,容易产生碎片;
2)响应方式不同:当前栈空间大小大于等于申请的栈空间系统则分配,否则提示栈溢出;
当申请堆空间则是遍历空闲链表寻找第一个大于等于申请空间的节点,并将多余部分合并回链表;
3)生长方式不同:栈是从高地址到低地址生长,是一段连续的空间,有预先分配的空间大小限制,默认初始化8M;
堆是从低地址到高地址生长,是一段不连续的空间,堆的大小取决与虚拟内存的大小;
4)存储内容不同:栈用于存储函数的参数与局部变量;
堆用于存储程序员自定义的内容;

5、STL容器
序列容器:vector、deque、list、forward_list
关联容器:set、multiset、map、multimap
无序容器:unordered_set、unordered_multiset、unordered_map、unordered_multimap
适配容器:stack、queue、priority_queue

1、如何对一个自定义类型实现sort编程
sort泛型编程:实现一个自己的class test,创建一个vector<test> test_vector,使用sort(test_vector.begin(),test_vector.end(),cmp)完成排序
重载运算符'<'/'>':实现一个自己的class test,为该类重载'<'/'>',创建一个vector<test> test_vector,使其可以直接调用sort(test_vector.begin(),test_vector.end())完成排序
使用自定义的类对象:自定义类对象Cmp实现class test的()调用函数符重载,创建一个vector<test> test_vector,使用sort(test_vector.begin(),test_vector.end(),Cmp)完成排序
对funtional基类派生:引入funtional头文件,自定义类对象Cmp实现class test的()调用函数符重载,创建一个vector<test> test_vector,使用sort(test_vector.begin(),test_vector.end(),Cmp)完成排序

2、如何用你已知的数据结构实现一个QQ的最近联系人
要求:增删查O(1)
思路:哈希表能实现O(1)查找,链表可实现O(1)增删,将两个数据结构结合使用
实现:unordered_map<qq_id,Node* node> map,list<Node*node> qq_list
注意:value是指向链表节点的指针,实现链表位置的快速定位,链表使用双向链表,可以实现当前节点的删除

3、如何将网络层线程数据传输到UI线程,即window的线程切换

4、如何实现程序的单实例运行
1)扫描进程列表——相同进程名时出现误报
2)扫描窗口列表——漏掉无窗口程序
3)互斥体实现——通过加锁判断是否成功来实现单例
4)共享内存实现——通过对共享内存标记的更改判断是否可创建对象
___________________________________________________________________________________
9.29 25mins 三面
项目
1、心跳机制实现前的思考逻辑
2、客户端想实时接收文件怎么做
3、为什么文件整个做了校验文件块还要做
4、半连接会导致服务器哪方面的负载
5、运行但不工作的线程为啥会占用CPU资源
反问
1、为什么那么快面完
2、岗位用到的图像处理
3、面试多久出结果

ps:人生第一次经历技术三面,万万没想到半小时结束了,也不知道面试官满不满意,咱也不敢问,那就在牛客许愿一下虎牙的hr面叭~
___________________________________________________________________________________
10.9 8mins hr面
1、岗位偏向
2、地方偏向
3、目前求职进程
4、为什么选择虎牙
5、新人培训流程(反问)
6、可否提前实习(反问)
___________________________________________________________________________________
10.11 收到信息审核邮件
___________________________________________________________________________________
10.12 收到意向书
#虎牙直播##面经##C++工程师#
全部评论
楼主,加油!我面试都没面试官提示和反问环节,遇到好的面试官是一辈子修来的福气呀!
2 回复 分享
发布于 2021-09-16 21:14
楼主加油😃
1 回复 分享
发布于 2021-09-16 10:55
楼主是少有的把项目问的问题po出来的,谢谢宁!
1 回复 分享
发布于 2021-09-20 16:55
楼主最后会选虎牙吗?
1 回复 分享
发布于 2021-10-01 18:59
详细 谢谢楼主
点赞 回复 分享
发布于 2021-09-28 23:32
楼主,hr有说啥时候有反馈吗
点赞 回复 分享
发布于 2021-10-12 14:10

相关推荐

1.&nbsp;this指针是什么?它有什么作用?2.&nbsp;const成员函数有什么特点?如何使用?3.&nbsp;如何实现一个简单的动态数组?4.&nbsp;enum和enum&nbsp;class有什么区别?5.&nbsp;nullptr是什么?它与NULL有何不同?6.&nbsp;如何处理内存泄漏?请给出几种方法。7.&nbsp;解释一下数据库的ACID特性。8.&nbsp;什么是死锁?如何避免死锁?9.&nbsp;解释一下链表和数组的区别。10.&nbsp;什么是哈希表?它的优缺点是什么?11.&nbsp;如何使用SQL进行数据查询?请给出示例。12.&nbsp;什么是索引?它如何提高数据库查询性能?13.&nbsp;解释一下进程和线程的区别。14.&nbsp;什么是操作系统的中断机制?15.&nbsp;解释一下二叉树的遍历方式。16.&nbsp;如何实现一个简单的栈?17.&nbsp;什么是数据库范式?请简要说明第一范式和第二范式。18.&nbsp;解释一下内存管理中的堆和栈的区别。19.&nbsp;什么是SQL注入?如何防止它?20.&nbsp;解释一下快速排序和归并排序的基本原理。21.&nbsp;什么是视图(View)?它有什么用?22.&nbsp;如何使用std::vector实现动态数组?23.&nbsp;什么是事务?如何实现事务的提交和回滚?24.&nbsp;解释一下操作系统中的调度算法。25.&nbsp;如何实现一个简单的图结构?26.&nbsp;什么是外键?它的作用是什么?27.&nbsp;解释一下深度优先搜索和广度优先搜索的区别。28.&nbsp;什么是存储过程?它有什么优缺点?29.&nbsp;如何处理数据库中的并发访问?30.&nbsp;解释一下LRU缓存算法的基本原理。我面试看的是大佬的面经,链接放下边了&nbsp;&nbsp;c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
评论
18
120
分享
牛客网
牛客企业服务