腾讯一面 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) 回帖