面经深度解析:腾讯C++后台
问题涵盖:数据结构,网络协议TCP,K8s,操作系统,数据库,分布式开发等方面。
完整面经解析文档包含思路解析、问题解答、衍生问题,均为实时复盘手打,需要的同学请私戳。
正在面试的同学,需要复盘解析,也欢迎投稿完整面试问题,C++/Java/数据分析/产品/运营皆可。
面试问题思路解析:
map和unorder_map的底层实现,如何用哈希表设计出类似红黑树的效果?
map和unorder_map的底层实现:
主要考察面试者对常用数据结构的底层机制了解程度,可以从底层机制实现、性能优缺点以及数据结构的适用场景3个方面进行解答。
如何用哈希表设计出类似红黑树的效果:
这里是基于上一个问题的进一步深挖,主要考察面试者对底层机制的掌握程度以及灵活应用程度。
这个问题的字面表述其实不是很能完整理解面试官的出题思路,面试中我们可以向面试官进一步确认明确的实现效果。
若进一步分析,我们可以先从哈希表与红黑树两者的差异点入手,红黑树的主要优点为有序,但是数据查找、插入和删除操作的平均复杂度比哈希表高,因此我们可以确定设计目标是基于哈希表来达到数据有序排列的效果。
K8s Go 有没有了解过?
K8s是很多公司针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。Go语言是常用来进行K8s开发的常用语言,这是一个实际的项目经验问题。
如果面试者没有使用过K8s或者Go语言,可以直接说暂时没有了解过,或者将自己对这两者的了解进行一个阐述即可,不用过于紧张。
如果面试者使用过K8s或者Go语言,可以结合自己的使用场景进行讲述,没有完全统一的答案,但是切忌进行错误知识概念的描述,不了解的方面可以少说或者不说。
TCP的滑动窗口和拥塞控制?
TCP协议相关问题,是面试中经常考察的计算机网络基础知识。滑动窗口和拥塞控制也是TCP协议中的流量控制的核心机制,可以从两者的实现原理和常用机制进行解答。
窗口满了的情况下,write函数的阻塞和非阻塞分别返回什么?
主要考察面试者网络编程相关知识的理解掌握情况,考察面试者对阻塞模式和非阻塞模式的理解。
MySQL 索引的底层实现,索引的存储方式,查询优化?
Mysql考察中,经常考察对于索引的理解,并结合数据结构的底层实现进行提问,还可以结合数据结构的底层原理结合实际业务,考察面试者对数据库查询的优化手段以及实际应用能力。
rpc和微服务的理解?
该问题主要考察面试者对分布式系统的认知与理解,微服务与RPC是当今分布式软件系统的重要组成部分。可以从两种的本质含义、以及两者的关联与差异进行回答。
进程和线程?
进程与线程是操作系统相关知识点,也是计算机基础知识中的比较容易混淆的概念,可以从两者的基本概念、两者的关系、是否拥有资源、通信与同步等方便对比来进行解答。
TCP与HTTP?
TCP(传输控制协议)与HTTP(超文本传输协议)都是后端开发中常用的2个网络协议,它们分别属于网络协议栈的不同层次,具有不同的功能和特点。因此我们可以根据两者的差异点进行解答。
智能指针的使用和原理,C++内存管理?
智能指针与内存管理,都是考察面试者对于C++程序开发中内存机制的理解。针对智能指针,我们可以从智能指针的概念、类型、使用场景进行解答。针对内存管理机制,我们可以从内存分区、内存分配机制和内存泄漏等方面进行回答。