腾讯 / 美团 / 京东秋招凉经合集
腾讯(后台开发 - 腾讯视频 - 一面)
C++:
- const 和 static 关键字的区别
- const 修饰成员函数的作用
- const 成员函数尝试修改普通成员变量会发生什么
- 如果使用 const 修饰成员函数、还想修改成员变量怎么办(成员变量声明为
mutable
) - const 成员函数只能访问 const 成员变量么
- 重载和重写的区别
- 指针和引用的区别
- 多态是如何实现的
Network:
- 说一下 TCP 三次握手建连的过程
- 第三次握手丢了会发生什么(服务端超时重传、客户端 ACK 不会重传)
- 断连时为什么需要 TIME_WAIT 状态
- HTTPS 建连过程
- 说一下 TLS 握手是如何进行的
Project:
- 审核模型出现大量宕机、造成微服务中的稿件数据在 Redis 里大量积压怎么办
- 准备如何设计在线和离线(定时回扫)任务在微服务中的优先级
- 为什么需要使用 LRU 复用 gRPC 连接(看起来并发量并不高)
Scene Questions:
- 如何设计一栋大楼里的电梯(分布位置、流量、成本等角度)
LeetCode:
- 买卖股票的最佳时机(No. 121)
Expand:
- const 成员函数为什么不会修改对象状态(本质:this 指针视为指向常量的指针)
美团(软件开发工程师 - 基础研发平台 - 一面)
MySQL:
- 事务隔离级别有哪些
- 当前读和快照读的区别
- 什么语句会触发当前读
- 你知道的 MySQL 有哪些索引
- InnoDB 索引底层数据结构是什么
- 除了 B+ 树还有哪些可以作为索引的数据结构
- B+ 树和哈希表的优缺点(按块读取内存、范围查询)
OS:
- 什么场景下会造成死锁(多线程循环等待、单线程递归加锁)
- 了解可重入锁吗(
std::recursive_mutex
)
Project:
- B 站 Go 组件库如何封装 gRPC 实现服务发现和负载均衡(开源框架:Kratos)
- cgroup 项目难点、以及自己遇到的困难
LeetCode:
- LRU(No. 146、注意线程安全)
腾讯(后台开发 - 腾讯视频 - 二面)
Redis:
- Redis 单线程仍然性能优异的原因
- Hash 底层数据结构
- Redis 的哈希表数据结构如何解决哈希冲突
LeetCode:
- 找到时间
t
之后播放量最多的视频
Scene Questions:
- 设计系统支持用户轮播指定频道(一级)的指定节目(二级)下的所有视频
Expand:
- 了解哪些接口限流算法
京东(后端开发 - 广告算法平台 - 一面)
C++:
- 面向对象特性(封装、继承、多态)
- 虚函数表是何时生成的(编译)
- 派生类如何通过虚函数表查找到需要执行的函数(虚函数表指针)
- 把构造函数声明为虚函数会发生什么
- 不把基类的析构函数声明为虚函数会怎么样
- static 关键字修饰各种变量和函数的场景
- static 修饰全局变量和使用 namespace 限定作用域有什么区别
- 模板类声明在 .h 中、定义在 .cpp 中、其他 .cpp 文件引入 .h 文件为什么导致链接错误(编译)
- 为什么普通函数的声明和定义分开存放就不会报错(链接)
- new 分配堆内存的底层过程
Scene Questions:
- 背景:A 服务需要请求 B 服务获取不经常变动的模型特征、用户使用
id
在 A 服务查找特征 - 问题:如何在 A 服务设计缓存、避免频繁请求 B 服务(答案:LRU)
LeetCode:
- 使用数组实现循环队列