当前位置: 首页 > 面试经验 >

腾讯 PCG 春招面经

优质
小牛编辑
63浏览
2024-04-29

腾讯 PCG 春招面经

背景:2 本 9 硕,一段中厂实习,意向后端开发。

时间线:4.8 一面,4.11 二面,4.15 三面,4.16 HR 面,4.17 录用评估+云证,4.18 OC,4.19 录用信。

4.8 一面

时长 60 分钟,由于部门的技术栈是 c++ 和 go,因此没有问我 Java 相关的八股,问题大部分是引导性的问题,面试官会抛出一个大的方向,然后让我自由发挥,面试官会根据答的内容做进一步的提问。

上来先是自我介绍,接着问了问我实习中的项目详情,怎么样保证缓存一致性的,会出现什么问题,这部分因人而异。项目问完之后让我挑 Redis 里面熟悉的讲讲,我重点讲了 Redis 里面跳表的实现,比如跳表的结构,每个节点中包含的内容,跳表的层级如何确定,面试官看来挺满意。接着是一些常见的八股(针对 MySQL 索引等),这部分比较简单,因此没啥印象了。最后做题:实现一个栈,要求 O(1) 时间复杂度内能取出栈内最小的元素。

面完过了两天面试链接消失,4.10 约了二面。

4.11 二面

时长 100 分钟,压力最大、内容最多的一面,从百草园问到三味书屋,这个面试官看来应该是 leader 级别的人,面试过程中不时打断我,要求我描述的更准确些,但同时也不断对我进行引导。整体看来虽然压力大,但面试体验不算差。记忆有限,只想起来一些印象深刻的问题。

  • 上来也是自我介绍,我刚讲 2 分钟,面试官打断我问我实习项目中的 Redis 集群中脑裂是如何产生的,这部分我没有答好,然后他就没让我继续介绍,而是直接问八股了(这里我都感觉要凉了,开局不利)。
  • 接着问了个常规的八股:HashMap 是如何构建的。我讲了通过 hashcode 方法计算索引,然后对 HashMap 的大小做取余,正准备讲通过 equals 方法判断是否相等的时候,他打断我让我详细讲讲怎么通过 hashcode 方法计算索引的,我说可能是通过某种哈希运算,他又问为什么要进行哈希,直接用元素本身做索引行不行,我答不行,哈希过程是为了对原有的元素进行一次映射,使其散布更均匀,从而降低哈希冲突的概率(这部分其实我心里也没底),接着我回答了些基础的内容,比如 HashMap 的拉链法,红黑树等。他没有对我的回答做出评价。
  • HashMap 如何扩容,扩容过程中是否是阻塞的。我猜他可能是为了引出 ConcurrentHashMap 的扩容机制,但这部分我并没有详细了解过,只能说我对 Redis 中的哈希表比较熟悉,对于扩容和收缩操作会有 rehash 的过程,然后给他展开讲了讲。之后谈到了 rehash 时候线程安全的问题,这部分我自由发挥了。
  • Redis 如何持久化的。RDB 和 AOF,我介绍完这两个持久化机制后,他问我这两个机制分别在什么情况下使用,我说从节占刚连上主节点的时候会用 RDB,之后会再从 AOF 中读取数据。
  • 接着重点来了,对于 Redis 集群问题,让我自己设计一个服务器集群的部署方案,要讲明白数据是如何进行分布的,如何在集群中快速找到客户端要求的数据。这部分完完全全是自由发挥,照本宣科是很难的。我当时根据 Redis 中的 Slot 给出了一个很不成熟的方案,他居然也就顺着我这个不成熟方案讲了下去。
  • 在我给出的方案中,从节点连上主节点后,如何克隆数据的。这部分问的很细,花了很多时间,要讲明白明确的时间节点,最终不断修改后我给出的方案是:在从节点连上主节点后,先取主节点中最新一次 RDB 的数据进行拷贝,然后再根据这次 RDB 数据生成的开始时间,取出 AOF 中在这个时间之后的数据,这样才能保持数据的一致性。
  • 做题:二维数组的动态规划问题。给定一个由数字构成的二维数组,数组中的元素可以按上下左右的方式连接从而形成一个链,要求返回按数字大小严格递增的最长链的长度。
  • 面完一小时后过了。4.15 中午约了当天下午的三面。

小结,感觉二面的面试官看重的不仅仅是背八股的能力,更重要的是自己的思考,就是为什么要这样设计,有什么样的好处,避免了什么问题。在进行 Redis 集群设计方案的时候,很多地方我的方案和 Redis 原本的实现不一致,面试官也没说什么,反而让我继续完善自己的方案,只要我能给出一个能自圆其说的答案即可。

4.15 三面

时长 40 分钟,整体难度不大,也基本上都是由我自由发挥。自我介绍完了之后,让我挑项目中的亮点讲一讲,接着问 Redis 中我有哪些熟悉的内容,我讲了基本的数据结构的底层实现,比如 SDS,压缩列表,跳表等。接着又问我 Redis 的持久化策略,我又重复了一遍,重点讲了讲在 RDB 中 SAVE 命令和 BGSAVE 命令的区别。然后是计网的东西,问 TCP 怎么保证流量控制的,这部分我没有答好。最后做题:经典的计算两个字符串的最短编辑距离。

面完秒过。当天晚上收到 HR 面链接。

4.16 HR 面

时长 20 分钟,没啥实质内容,就是问了问为什么春招还在找工作,手里有哪些 offer,期望薪资啥的。

写在后面

走了狗屎运,拿到了之前不敢想的 offer,有种不真实感。虽然是白菜,比起大佬来说肯定不算啥,但对我这个考研跨考、秋招前无实习经历的人来说已经很很好了。

去年九月一度怀疑自己是不是不适合干程序员这一行,个中艰难有口难言,所幸最后坚持了下来。一路走来,牛客这个平台对我帮助很大,写下这篇笔记希望能对其它牛友有所帮助。祝各位牛友心想事成,offer 多多。

#24届软开秋招面试经验大赏#
 类似资料: