元戎 / 百度 / 快手 / 图森秋招凉经合集

1. 元戎启行(软件工程师 - 仿真 - 一面)

C++:

  • 类成员函数后加 const 和 final 关键字分别代表什么
  • 如果基类析构函数没有声明为虚函数会造成什么问题
  • 浅拷贝和深拷贝的区别(举例说明)
  • 重写和重载的区别
  • 静态库 .a 和动态库 .so 的区别
  • 从数据结构角度分析堆、栈、队列的区别
  • map 和 unordered_map 的区别

LeetCode:

  • 无序数组的中位数(类似 <数据流的中位数 No. 295>、要求 O(n) 时间复杂度、提示:快速排序)
  • 分割等和子集(No. 416)

2. 百度(C++/PHP/GO 研发工程师 - 小度 - 一面)

C++:

  • vector 和 list 的区别以及查找、插入、删除的时间复杂度
  • 向 vector 末尾 push_back 元素时底层做了哪些操作
  • vector push_backemplace_back 的区别以及使用场景
  • 如何清空一个 vector
  • vector 是线程安全的吗
  • 如何解决 vector 线程不安全的情况
  • 介绍一下模板的工作原理
  • 虚函数和纯虚函数的区别以及使用场景
  • 虚函数表存放在内存的哪个区(常量区)
  • 如何避免内存泄漏(RAII / 智能指针)
  • 介绍一下智能指针的几种类型
  • 声明和调用一个 shared_ptr 的语句是什么
  • 举一个发生会循环引用的例子以及如何解决
  • 如何实现某一个线程可以独占内存
  • 说一下原子变量 std::atomic 的实现原理
  • new 和 malloc 的区别
  • new 开辟的内存可以 free 释放掉吗

Go:

  • goroutine 和线程的区别以及使用场景
  • 介绍一下 context 的用法

gRPC:

  • 介绍一下 gRPC 底层实现原理

LeetCode:

  • 串联所有单词的子串(No. 30)

Expand:

  • deletedelete[] 的区别

3. 快手(C++ 开发工程师 - 商业化 - 一面)

Redis:

  • 了解哪些分布式锁的实现方式以及优缺点
  • 为什么用 SET + 过期时间的方式而不使用 Lua 脚本
  • 为什么需要使用 Redis 分布式锁

Project:

  • 深入思考项目背景、意义、难点和收获、相关技术选型(为什么用 A 不用 B)

LeetCode:

  • 合并两个有序链表并去除重复元素(要求时间复杂度 O(m + n)

4. 百度(C++/PHP/GO 研发工程师 - 小度 - 二面)

WebServer:

  • 线程池是如何实现的、分为哪些步骤
  • 用户 HTTP 请求是长连接还是短连接
  • 如果是长连接、或者 POST 一个很大的消息怎么办(线程池中某个线程一直阻塞)
  • HTTP 报文是如何解析的(在线程池还是在其他地方)

C++:

  • 介绍一下 std::function 的用法和使用场景
  • std::move 实现原理和使用场景
  • 左值引用和右值引用
  • 不使用 std::move 不行么(C++11/14 之前如何写代码的)
  • std::bindstd::function 的区别

Redis:

  • ZSet 的使用场景和底层实现原理
  • 为什么需要压缩列表
  • 压缩列表和跳表插入的时间复杂度
  • 为什么元素少的时候不直接使用跳表

Project:

  • perf 底层实现原理(详细)

Expand:

  • 线程池加锁 std::unique_lockstd::lock_guard 的区别和使用场景
  • 条件变量 condition_variable 中的 wait / notify_one / notify_all 的区别
  • std::bind 使用场景

5. 图森未来(算法平台 - 一面)

LeetCode:

  • 连通两个岛屿的最小反转次数(DFS + BFS)
  • 链表数值翻倍(例如 9->9 变为 1->9->8

6. 图森未来(算法平台 - 二面)

OS:

  • 将磁盘中一个大小为 4k 的文件读到大小为 4k 的 buffer 中、操作系统发生了什么(详细)
  • read() 函数实现原理
  • 如果从磁盘读取数据有 100ms 的延迟、读取文件的进程(A)是什么状态
  • 如果此时还有一个进程(B)需要做计算、两个进程是如何切换的(单核 CPU)
  • 进程 A 是如何让出 CPU、进程 B 是如何拿到 CPU 的(内核源码层面做了什么)
  • 内核是如何发生中断的(具体是什么中断)
  • 内核是如何通知进程 B 当前 CPU 是可用的

Network:

  • TCP 和 UDP 是哪层协议
  • TCP 拥塞控制
  • HTTP3 底层使用了 UDP、那为什么不一开始就使用 TCP
  • UDP 也可以用作文件传输、那么 TCP 还有存在的必要么

LeetCode:

  • 和大于等于 sum 的连续子数组个数(类似 No.560、数组元素均为正数、时间复杂度 O(N)
  • 计算 (a ^ b) % c(不能使用 pow(a, b) 做法、要求时间复杂度 O(logN)

Offer 数量

0

更新频率

平时面试完习惯在语雀记录面经,周末会集中复盘,所以大概一到两周会更新一次凉经,更新频率和收到的面试数量强相关~

#秋招#
全部评论
Hugo佬的面经看起来好舒服啊
4 回复 分享
发布于 2023-08-22 12:20 广东
人类高质量面经
3 回复 分享
发布于 2023-08-20 00:27 广东
不是,佬这么强都凉啊,那我还面个屁
2 回复 分享
发布于 2023-08-21 20:47 山东
m
1 回复 分享
发布于 2023-08-19 18:01 北京
追更了 明天再看一整天
1 回复 分享
发布于 2023-08-19 21:13 北京
s哥
1 回复 分享
发布于 2023-08-20 17:29 湖南
好多八股啊😢
点赞 回复 分享
发布于 2023-08-19 18:03 北京
“如果从磁盘读取数据有 100ms 的延迟、读取文件的进程(A)是什么状态” 这个问题怎么回答的呀
点赞 回复 分享
发布于 2023-08-20 20:50 江苏
”如何实现某一个线程可以独占内存“这怎么做啊,在堆上手动分配内存,然后让线程加锁吗
点赞 回复 分享
发布于 2023-08-21 09:33 江苏
m
点赞 回复 分享
发布于 2023-08-21 11:49 广东
内核是如何通知进程 B 当前 CPU 是可用的。这啥问题,CPU应该是从选择就绪进程B吧,怎么还带通知的。
点赞 回复 分享
发布于 2023-08-21 13:30 北京
百度提前批你有消息了吗
点赞 回复 分享
发布于 2023-08-25 10:33 广东
大佬,百度目前状态如何
点赞 回复 分享
发布于 2023-08-28 17:39 江苏

相关推荐

31 137 评论
分享
牛客网
牛客企业服务