首页 > 面试复盘 | 腾讯WXG三轮面经
头像
金基德深港
编辑于 2021-08-20 18:57
+ 关注

面试复盘 | 腾讯WXG三轮面经

腾讯一面 100min 8月17日【WXG】

实习内容

  • 实习部门的工作介绍
  • 谈谈你对tRPC框架的理解

语言+操作系统

  • IO多路复用中的select系统调用和Go语言中的select有什么区别
  • 讲讲Go语言中的协程goroutine
  • Go语言如何对并发goroutine进行处理
  • 死锁概念、如何解决死锁
  • 并发问题可不可以不用锁处理
  • 无锁编程如何实现

网络

  • 讲讲TCP的三次握手、四次挥手
  • 为什么要三次握手
  • TIME_WAIT状态出现在连接哪个阶段
  • TIME_WAIT状态连接过多如何解决
  • 长连接会有什么问题
  • 通用的连接池应该如何实现
  • TCP的滑动窗口机制

数据库+分布式

  • Redis为什么采用单线程
  • Redis的单线程模型是如何实现的
  • Redis如何实现分布式锁、锁的过期时间如何设置、如何避免加锁过程中的单点问题
  • Redis主从哨兵模式下master宕机,进行故障自动转移时,如何挑选新master
  • 了解Redis的Gossip协议吗,讲讲
  • Redis是如何进行rehash的
  • 你怎么看待最终一致性和强一致性,业务选用最终一致性时要考虑哪些因素
  • 最终一致性的补偿性措施了解吗
  • 讲讲你对MySQL事务的理解
  • 了解2PC、3PC吗

数据结构与算法

  • 有哪些排序算法
  • 快排最坏时间复杂度多少,什么情况下会出现
  • 讲讲红黑树原理
  • 动态规划问题的解决思路一般是怎么样的
  • 哈希原理

其他

  • 了解docker、K8S、云原生吗
  • 了解docker底层原理吗、自己有没有搭建过K8S集群
  • 实习时是在普通开发机上还是在容器中开发的
  • 接触过消息队列吗
  • 自己有配置过Nginx,或者用Nginx进行过网站部署吗

撕题(二选一)

  • 螺旋矩阵【lc54】
  • 和为s的连续正数序列【剑指57】

设计题(二选一)

  • 以拉链法实现一个哈希表【要求手写链表】
  • 实现一个大根堆【实现建堆、弹堆顶两个操作】

腾讯二面 50min 8月18日

二面自我介绍环节都没有,简单确认简历上几个信息点后,便直接开始面试。

项目

  • 介绍一个你觉得做的比较深入的项目,由于微信支付部门技术栈是C++,所以我讲了C++服务器项目
  • 讲讲主从Reactor模式
  • 为什么选用主从Reactor线程模型而不是单Reactor线程模型
  • 主IO线程如何将客户连接分发给子IO线程的
    • 【轮询分发至子IO线程任务队列+eventfd跨线程唤醒】
  • 客户连接的分发有没有优化方案
    • 【采用无锁队列通信】
  • 如何处理各IO线程负载不均衡的情况
    • 【采用权重轮询策略进行连接分发】
  • 上述连接分配方案是轮询式的主动分发方案,有没有被动分发的方案
    • 【维护一个客户连接池,由子IO线程根据自身负载情况去池中获取】
  • 比较一下连接主动分发和被动分发两种方案的优缺点
    • 【锁争用的激烈程度+客户连接的饥饿程度】
  • 以上只是你的猜测,如何定量比较两种方案下锁的性能开销大小
    • 【比较两种方案在固定时间窗口内的客户连接数量】
  • 项目中的IO线程和工作线程为什么要分开
    • 【提高吞吐量】
  • 为什么吞吐量会提高呢,分析一下
  • 在数据读写方面有哪些拷贝开销,分析一下能怎么优化
    • 【网卡和磁盘等IO设备与内核缓冲区间的数据拷贝由DMA控制器完成,内核缓冲区与用户态缓冲区的数据拷贝由CPU完成。可采用零拷贝方案减少拷贝和上下文切换开销,如mmap、sendfile、splice等系统调用】
  • 看过哪些书籍
  • 看过哪些开源组件的源码
  • 讲讲Muduo网络库的线程模型、客户连接是怎么分发的
  • 服务器开启的线程数量和CPU核数的关系如何确定
    • 【(线程IO等待时间/线程执行时间+1)*CPU核数】
  • 多线程程序能否用协程进行优化、开启协程的话,线程数应该开多少?
  • 协程和线程的区别
  • 协程适用于哪种业务类型?
  • CPU有10个核,A:开启100个线程、B:开启10个线程,每个线程开10个协程。服务器用哪种方案效率高

实习

  • 实习内容介绍
  • 服务发现的原理了解吗
  • 负载均衡怎么做的
  • 缓存命中但数据库未命中会有什么问题
  • 服务并发量有多大
  • 实习收获

计算机基础

  • 讲讲Mysql的乐观锁和悲观锁,分别在什么情况下使用
  • 分布式系统一致性协议
  • 分布式锁
  • 零拷贝技术

反问环节

  • 部门业务
  • 面试流程【业务部门3轮+面委1~2轮+Hr面】
  • 新人培养机制
  • 面试表现评价

腾讯三面 40min 8月20日

三面面试官应该是组长,也没有自我介绍环节,直接问问题。

  • 实习多久了、为什么没考虑在实习部门转正而考虑投微信
  • 通过什么方式了解到我们部门的岗位的
  • 在学校的研究方向
  • 讲讲阻塞IO、非阻塞IO、同步IO、异步IO的区别
  • Linux中常见的IO多路复用函数有哪些?它们属于哪种IO模式
  • 看你简历上的东西都偏底层,是实验室要用到这些技术还是自己感兴趣
  • C++智能指针了解吗,讲讲shared_ptr原理
  • 比赛内容
  • 实习内容

撕题

  • 实现一个shared_ptr智能指针类,要求含有构造函数、析构函数、拷贝构造函数、拷贝赋值运算符四个成员函数

总结

  • WXG面试还是有一定难度的,一面深挖基础,语言方面由于一面面试官平常用Go,所以问了些Go知识,没怎么问C++。二面深挖项目,连算法题都没让撕。三面由于面试官后面有会议,所以整体问的不多。后续还有1~2轮面委面。
  • 部门整体技术栈是C++,因此面试时让自己实现一个类的题目较多,像哈希表、大顶堆、智能指针等,平常只刷核心代码模式下的算法题可能还不太够,还没面试的小伙伴们可以参考参考,多准备准备这方面。

讨论

面试中有一些问题不是很清楚,大家可以讨论下:

  • 长连接通信会有什么问题
  • 最终一致性的补偿性措施有哪些
  • 协程适用于哪种业务类型

更多模拟面试

全部评论

(17) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐