腾讯(后台开发 - 腾讯视频 - 一面)
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 指针视为指向常量的指针)
腾讯(后台开发 - 腾讯视频 - 二面)
Redis:
Redis 单线程仍然性能优异的原因 Hash 底层数据结构 Redis 的哈希表数据结构如何解决哈希冲突
LeetCode:
找到时间 t 之后播放量最多的视频
Scene Questions:
设计系统支持用户轮播指定频道(一级)的指定节目(二级)下的所有视频
Expand:
了解哪些接口限流算法
美团(软件开发工程师 - 基础研发平台 - 一面)
MySQL:
事务隔离级别有哪些 当前读和快照读的区别 什么语句会触发当前读 你知道的 MySQL 有哪些索引 InnoDB 索引底层数据结构是什么 除了 B+ 树还有哪些可以作为索引的数据结构 B+ 树和哈希表的优缺点(按块读取内存、范围查询)
OS:
什么场景下会造成死锁(多线程循环等待、单线程递归加锁) 了解可重入锁吗(std::recursive_mutex)
Project:
B 站 Go 组件库如何封装 gRPC 实现服务发现和负载均衡(开源框架:Kratos) cgroup 项目难点、以及自己遇到的困难
LeetCode:
LRU(No. 146、注意线程安全)
京东(后端开发 - 广告算法平台 - 一面)
C++:
面向对象特性(封装、继承、多态) 虚函数表是何时生成的(编译) 派生类如何通过虚函数表查找到需要执行的函数(虚函数表指针) 把构造函数声明为虚函数会发生什么 不把基类的析构函数声明为虚函数会怎么样 static 关键字修饰各种变量和函数的场景 static 修饰全局变量和使用 namespace 限定作用域有什么区别 模板类声明在 .h 中、定义在 .cpp 中、其他 .cpp 文件引入 .h 文件为什么导致链接错误(编译) 为什么普通函数的声明和定义分开存放就不会报错(链接) new 分配堆内存的底层过程
Scene Questions:
背景:A 服务需要请求 B 服务获取不经常变动的模型特征、用户使用 id 在 A 服务查找特征 问题:如何在 A 服务设计缓存、避免频繁请求 B 服务(答案:LRU)
LeetCode:
使用数组实现循环队列
迪瑞医疗(软件工程师 - QT - 一面)
C++:
源文件编译成可执行文件的步骤 什么是内存(字节)对齐 引入头文件后编译显示未定义、是什么原因
OS:
进程和线程的区别 线程是如何共享资源的 线程同步有哪些方式
Network:
网络大端和小端字节序 什么是 TCP 粘包、如何解决
Linux:
常用哪些 Linux 命令
Git:
遇到过代码冲突的情况吗、如何解决
Webserver:
了解 Windows 高并发 Socket 模型么 介绍一下 Reactor 事件处理模式 线程池如何动态调整线程数量
华为(通用软件工程师 - 云核心网)
C++:
指针占几个字节 哪些场景会造成内存泄漏、如何解决
OS:
大端存储和小端存储 进程间通信方式 自旋锁的含义与使用场景
Network:
介绍一下五层网络模型 ARP 协议是干什么的 网页输入一个 URL 并回车到显示网页、这个过程发生了什么(详细)
根据 Key 在一亿数据中查找结果、使用什么数据结构 哈希表底层实现 如何解决哈希冲突 计算最短路径有哪些方法(图论)
数据库在某一时刻的并发连接数(差分数组、类似 No. 1450) 无重复字符的最长子串(No. 3)
经纬恒润(C++ 开发工程师 - 一面)
C++:
new 和 malloc 的区别 如何解决 shared_ptr 循环引用
OS & Network:
线程同步有哪些方法 select 和 epoll 的区别 如何解决 TCP 粘包问题
gRPC:
gRPC 性能如何 JSON 和 protobuf 序列化和反序列化的性能对比
美行科技(C++ 开发工程师 - 一面)
C++:
如果 vector 中的元素是类对象、可以使用 sort 排序吗(如何进行范围查找) 如果 map 的 key 是类对象、会以什么样的规则排序 为什么需要将函数定义为虚函数 派生类的虚函数后加 final 关键字、编译器做了什么优化(静态绑定) 如何实现一个 shared_ptr weak_ptr 的用处、为什么不会增加引用计数 C++ 使用指针时踩过哪些坑(dynamic_cast、const、浅拷贝) 了解内存破坏的概念吗、如何排查(指针 p 指向的内存被其他线程修改) 什么情况下会出现栈溢出
Network:
介绍一下 HTTP、哪些信息需要被缓存 HTTP 缓存策略由报文 header 中的哪个字段控制(Cache-Control)
gRPC:
protobuf 和 JSON 格式的优缺点 如果想在 proto 文件的函数接口中扩充两个字段、如何操作 proto 文件中每个变量后面的序号 1、2、3 代表什么含义
MySQL:
介绍一下事务 索引有哪些类型 联表查询有哪些方法、区别是什么 计算生日在特定日期的学生数量(count & group by)
Design Pattern:
什么是懒汉单例模式 介绍一下装饰模式的用法和优缺点
Expand:
Cookie 和 Session 的区别