Tsai笔记:C++学习随性笔记(5)—— 虎牙直播C++后台开发面试(已拿offer-》虎牙直播内推)
一、前言
附上虎牙直播内推链接:
https://app.mokahr.com/recommendation-apply/huya/4113?recommenderId=680221&hash=%23%2Fjobs%3FisCampusJob%3D1%26zhineng%3D%26page%3D1%26_k%3Dcoc9lz
虎牙直播内推码:
必须掌握的技术:C++编程语言、计算机网络、设计模式、数据结构与算法、操作系统、网络编程、数据库
推荐一个学习路线:C++后台/基础架构岗位学习路线
二、技术一、二、三面总结(75min+45min+30min)
注:Q:面试官,W:泛指内容
注:有些问题可能忘记了,以下是面试官大部分提问的东西。
Q:请简单自我介绍?
W:每个技术面试官都会具体问项目的内容,以及深挖了里面的技术;还会让你找出你亮点最大的一个项目进行介绍?技术难点在哪?
Q:多态的实现过程?怎么实现动态联编?虚函数表属于对象还是类?析构函数不设为虚析构会怎么样?
Q:malloc和new,free和delete的实现?区别是什么,有什么不同?
Q:C++三种智能指针分别是什么?share_ptr怎么管理多个对象的?weak_ptr的作用场合?以及unique_ptr?
Q:讲讲extern关键字的作用?extern "C"的作用?
Q:vector与list的区别?迭代器失效情况?
Q:线程和进程的区别?怎么创建进程和线程?
Q:线程池知道?怎么实现及详细过程?怎么保证线程安全?有哪些锁(unique_lock、lock_guard)?条件变量的作用?讲一下条件变量工作过程?线程解锁和条件变量的notify_one或notify_all的先后顺序?
Q:map和hashmap的底层数据结构?哈希表是怎么实现的?怎么解决哈希冲突?
Q:计算机网络熟悉吗?TCP和UDP是区别?讲一下TCP完整的一个传输过程?(具体到每一层添加首部的关键内容?(即port—》IP—》MAC等等),路由选路,下一跳的选择等等),有哪些是使用UDP协议的?
Q:粘包听过吗?为什么会出现粘包现象?怎么解决?
Q:有学过SQL吗?
Q:二叉树使用过吗?说一下中序遍历的思路?
Q:讲一下单例模式的实现?是否存在线程安全问题?为什么单检查锁会有性能问题?双检查锁的作用?
Q:工厂模式使用过吗?讲一下实现?为什么要使用工厂模式?
Q:socket知道吗?(然后问了socket的一些服务器和客户端的监听、连接、发送和接收信息的相关问题)
三、HR面(30min)
Q:自我介绍?
Q:讲一个你做过的最有成就感或亮点十足的项目?
Q:对上一家公司的印象及感想?
Q:对虎牙直播的了解?
Q:遇到的挫折?有没有承受很大压力的时候?
Q:自己的职业规划?offer的选择?秋招会不会像尝试其他大厂公司?