腾讯面试提前 1 天和提前一个小时都会发短信提示。
去的腾讯滨海大厦面试,大楼的现代化程度很高,不过需要提醒一下的是,腾讯的滨海大厦分为南塔和北塔。
我去的时候就上错楼了,需要下到 4 楼重新换成电梯。
一面
笔试
- 微服务的特点,如何实现服务发现和负载均衡
- c++内存管理
- time_wait 在哪一端产生,作用是什么
- 程序 crash 如何定位
- 服务性能问题如何定位
- 两个排序数组找中位数
- 就数字 n 的平方根
- 设计一个算法,抽奖次数越多中奖概率就越高
- MySQL 如何分析一条语句的执行过程。delete from t1 limit 3 和 delete from t1 的区别?
面试
- 问项目
- 跳台阶
- 数组中奇数个元素
- 一栋楼有 n 层,不知道鸡蛋从第几层扔下去会碎,用最少的次数找出刚好会碎的楼层
- 动态规划与贪心有什么区别
- redis 数据结构的底层实现
- redis 如何实现高可用
- 负载均衡算法有哪些
- 服务发现是怎么实现的
- 熔断是怎么实现的
- id 生成器怎么实现的,如何实现全局递增
- 协程和线程的区别
- 进程间通讯方法
- 平时逛哪些论坛,研究哪些算法
- paxos 算法,这个算法我说不清楚,然后说了 raft 算法
- gdb 怎么切换线程
- 如何判断一个图是否有环
- 介绍一下缓存
- 查看 CPU 的命令和磁盘 IO 的命令
二面
- 项目的系统架构画一下
- 如果用户量上涨怎么优化
- 负载均衡的加权轮询算法怎么实现
- 背包问题
- 贝叶斯的概率学原理
- 分词算法
- 连续整数求和(leetcode 第 829 题),要求时间复杂度小于 O(N)
总结
腾讯二面面完我就知道凉了。
动态规划非要写出递推公式,因为我一直都是用动态规划表的思路来解题,所以这个地方没有答好。后面又问贝叶斯和分词算法,一点都不会(我的内心:我是来面后台的,又不是面算法的)。
最后一道算法题只能想出 O(N) 复杂度的,面试官一定要小于 O(N) 的,答不上来。这道题是 leetcode hard 级别的难度,所以没有刷。
不过后面去看可能也没有那么难,只是这种通过数学公式的特点来解题往往容易被忽略了。
总之,腾讯的一面算是中规中矩,二面确实让我有点手足无措。
之前看网上的说法是腾讯算法题考的比较少,可能还是要分部门吧,我这次面试的是腾讯视频,二面基本上全是考算法。还有大部分面经都说,算法题很少考 leetcode hard 级别,这个我也要表示怀疑了,因为腾讯和后面的头条都考了 hard 级别的。
所以刷题时不能完全跳过 hard 级别的题。那有什么题不会考呢?我认为是描述起来很复杂的题面试时不会考,因为面试时间比较紧,如果光时把题看懂都要解释半天的,这种是不太会考的,比如那个 LeetCode 上买股票的题。