腾讯-QQ后台开发一面面经
前情提要
之前腾讯云二面挂了,当天被QQ部门捞了起来。面试官特别像漠叔,开场让我做了个简单的自我介绍,然后直接进入八股文环节。
面试问题回顾
- C++多态有哪些?
- 我提到了静态多态(函数重载、模板)和动态多态(虚函数、继承)。
- C++异常处理?
- 我解释了try-catch机制,以及如何通过throw抛出异常。
- C++堆栈大小?
- 我猜测可能是问堆和栈的内存分配,简单提了一下栈的大小有限,堆可以动态分配。
- 用户态和内核态的区别?
- 我解释了用户态是应用程序运行的状态,内核态是操作系统核心运行的状态,切换需要系统调用。
- 系统调用和函数调用的开销?
- 我提到系统调用涉及用户态和内核态的切换,开销比函数调用大。
- 如何理解一切皆文件?
- 我解释了Linux中设备、管道、套接字等都可以抽象为文件。
- 内存泄露是什么,如何查找,如何避免?
- 我解释了内存泄露是指分配的内存未被释放,可以通过工具(如Valgrind)查找,并提到使用智能指针避免。
- 智能指针的实现?
- unique_ptr、shared_ptr和weak_ptr的实现原理。
- map为什么用红黑树,好处?
- 我解释了红黑树的平衡性保证了查找、插入、删除的时间复杂度为O(log n)。
- protocol buffer?
- 不知道
- SQL注入?
- 我解释了SQL注入的原理,并提到如何通过预编译语句防止。
- NoSQL?KV存储?
- 我提到了Redis和Memcached,但对具体实现不太熟悉
- 消息队列?
- 我提到了消息队列的作用(解耦、异步、削峰填谷),并简单提了RabbitMQ。
- 了解过Kafka吗?
- 不熟
- HTTP2.0?
- 我提到了HTTP2.0的多路复用、头部压缩等特性。
算法题
面试官出了一道题:最长非递减子序列。我用了贪心+二分的思路,并详细解释了原理。这道题其实我之前在山羊算法后端训练营的课程中学过,导师当时讲解了贪心+二分的核心思路,还通过多道真题让我彻底掌握了这种题型的解法。面试时我几乎没怎么思考,直接上手写了出来,面试官也很满意。不得不说,训练营的课程设计真的很贴近大厂面试需求,尤其是算法部分,几乎覆盖了所有常考题型。
反问环节
- 个人努力方向?面试官建议我多关注分布式系统和网络编程。
- 部门相关?面试官介绍了QQ后台的主要业务和技术栈。
- 工作地点?面试官说主要是在深圳。
总结
这次面试整体感觉还不错,虽然有些问题答得不太好,但算法题的表现让我挽回了一些分数。面试官最后告诉我30分钟后转复试,算是过了第一关吧!
其实这次面试能顺利通过,很大程度上得益于我在山羊算法后端训练营的学习经历。训练营的课程不仅覆盖了大厂常考的算法题,还有详细的解题思路和真题训练,像我这次遇到的“最长非递减子序列”就是训练营里反复练习过的题目。训练营还提供模拟面试服务,由大厂在职工程师亲自指导,可以提前熟悉面试流程,找到自己的薄弱点。
#后端##面试中的破防瞬间##C++后端##腾讯2025实习生招聘##腾讯#