腾讯音乐后台开发四面面经

5.22 更新

5.18 已 oc

回馈社区,许愿oc

4.13 一面

  • 继承权限,public、private
  • 子类构造函数的调用顺序、过程
  • 构造函数、析构函数可以为虚函数吗
  • 操作系统调度算法,这里扯了 CFS 调度,说了挺久
  • 多进程和多线程比较
  • TCP 和 UDP 报头多少字节
  • 三次握手第二个包丢了如何处理
  • static
  • 对C++11有什么了解,然后问了线程编程
  • RAII
  • 用过什么STL,然后问了 map 和 unordered_map 的实现区别,又扯了 CFS,甚至还扯了 Redis 的跳表,因为他们都适合有序的查找 O(logn) 的应用场景
  • STL 那些容器是线程安全的
  • 两道海量数据处理题,分治后排序、基数排序
  • 项目选型
  • 项目改进的一些点,怎么做的

问的不多,主要是自己每个点都扯了比较久,本来预约的是45分钟的,硬生生给我扯了一个小时,然后反问。

五分钟后更新状态,进入复试

4.16 二面

关于项目

  • 做这个项目的原因
  • 技术选型
  • fastDFS的架构
  • 一些副本的问题,以及副本同步的问题,这里扯 Redis 的主从复制
  • 数据同步发生网络分区应该如何恢复,这里继续扯 Redis 的全量复制和部分复制的细节
  • 秒传的设计
  • 普通上传(非秒传)的设计
  • 分享的设计
  • 分布式锁怎么做的,怎么考虑的,有什么需要改进的。因为本来就只有 SETNX + expire + lua 的简单实现,所以改进的话引入 reddison 的看门狗会比较好
  • fastDFS 原来负载均衡的算法,以及自己是如何改进的,如何考虑的
  • 根据项目延伸一些问题,如何客户端无法正常联网工作,有可能是哪些问题,主要从客户端、客户端到服务器的链路、服务器这三个点进行分析,结合 CAP 和 raft 去鬼扯就完事了

八股

  • 多态的实现
  • 虚函数表指针、虚函数表、如何实现虚函数的调用,这里扯了C++内存模型,接着就问了
  • C++内存模型,进程的虚拟空间如何组织
  • volatile 和 mutable ,一顿扯,还扯了 C++11 标准明确指出解决多线程数据竞争应该用原子操作或者互斥锁,而不是 volatile,后面被接着问了
  • C++11 线程安全的理解,如何实现
  • 同步 IO,阻塞 IO,非阻塞 IO,异步 IO 是如何工作的,有什么区别
  • 设计一个异步调用函数,这里结合了 js 的协程和 epoll 的设计鬼扯
  • OSI 模型,然后基于数据链路层和网络层做了一些拓展的问题
  • HTTP常见的状态码,每种都例举了一两个
  • 数据结构,比如哈希表和二叉树的异同,应用场景等,这里哈希表主要说对单点查询然后延伸到 bitmap,bitmap 用途可多了比如排序、查重、做布隆过滤器等等,然后二叉说扯红黑树和 B+ 树,红黑树扯 CFS 和 epoll 里的 rbr,B+ 树扯 MySQL 索引组织,主要是频繁的插入删除和有序查询有要求就多用红黑或者 B+ 吧
  • 哈希表和二叉树占用内存的问题
  • 哈希表哈希冲突如何解决,扯 unordered_map 的实现,还有线性探测这些方法
  • 口述一道二叉树的简单题

问的也不多(其实挺多的,一直说了一个多小时,口干舌燥),自己一直在举一些实际的例子,或者在鬼扯,约的45分钟,又给扯到了 72 分钟。

最后面试官说也面了很久了,说感谢我的时间,顿时背后一股凉意。

好在第二天查状态,进入 HR 面了,应该问题不大。

5.6 之后 tme 都陆续发 offer 了,只有我和同部门的几个小伙伴还被晾着。

插曲:5.11 中午被通知换部门了,晚上再加面一轮技术。

后来知道是因为原部门大cy了,估计也影响到了实习的 hc。

5.11 三面

换了个部门:搜索中台

60分钟

海量数据处理

  • 10亿个整数,1GB 的内存,要求对这10亿个整数完全排序,无需去重。

    这里因为之前只是听过外部排序,但是没细看,这里就考了,真不会,面试官多次提醒,还是只能答出来个大概,老菜鸡了。这道题磨了20分钟。

  • 10亿个整数,1GB 的内存,要求统计出现两次及两次以上的整数,无需去重。bitmap 即可秒杀。

八股

  • new 及其报错处理

  • 移动语义,移动构造函数怎么写,move() 的作用

  • 线程和协程的区别

  • 内存对齐,怎么做,为什么这么做(这里答得不好)

  • HTTPS RSA 握手过程

  • 四次挥手过程、状态的变化、为什么 2*MSL

  • 一致性哈希

  • 一大堆 Linux 命令

  • gdb 调试 codedump

这一面答得一般般,八股基本都能答上来,问题是面试官在八股中穿插很多实际写代码的问题,这就让我这种八股选手很难受了呜呜,还以为凉凉了,不过最后面试官跟我说接下来应该是 hr 联系我了,所以觉得应该问题也不大。

5.13 四面

5.12 通知我下一面,问了一下还是技术,应该是上一面太拉了,所以还要捞一捞呜呜。

40分钟

项目

  • 项目背景
  • 技术选型
  • fastDFS 架构

八股

  • CAP 理论

  • 一致性哈希,一致性哈希跟 CAP 中的 C 是否一样?

  • 守护进程

  • Linux 命令 如何查看进程号 介绍 awk

智力题(数学题)

  • 有1分硬币两枚,2分硬币2枚,5分硬币3枚,从中抽2枚,币值之和为7分的概率为?
  • 五升水三升水怎么倒出四升水?
  • 升级:A升水B升水怎么倒出C升水。能不能倒出来,如果能倒出来如何倒?如何编程?

场景题

  • 海量文本,敏感词命中如何设计:倒排索引、 莱文斯顿距离、 前缀树一顿乱扯
  • 面完之后去查了一下,这篇文章讲的很好 vivo 敏感词匹配系统的设计与实践,所以比较好的答案是多模态匹配算法如AC自动机,该算法的数据结构是在Trie树的基础上,为每个节点加入了Fail指针,从而实现模式串的匹配。莱文斯顿距离应该更适用于文本纠错或者模糊匹配的场景,而不是模式匹配(敏感词命中)。

这一面答得还行,不过好多智力题(数学题)啊。

#实习##面经##C/C++##腾讯音乐娱乐#
全部评论
大佬太强了
点赞 回复 分享
发布于 2022-04-18 13:03
点赞 回复 分享
发布于 2022-05-18 14:37
大佬看了你的面试,觉得我们的面试确实非常小儿科
点赞 回复 分享
发布于 2023-03-04 18:54 湖南
感谢答主
点赞 回复 分享
发布于 2023-08-31 11:35 辽宁

相关推荐

点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
Java抽象练习生:教育背景放最前面,不要耍小聪明
点赞 评论 收藏
分享
8 55 评论
分享
牛客网
牛客企业服务