TikTok 面试复盘:Conference Room Booking System + Grid Number Search – 面试辅助 – 一亩三分地

最近有一位候选人参加了 TikTok 的技术面试,整场面试大约 1小时20分钟。面试整体节奏比较紧凑,先是 System Design,然后是 算法题

面试官风格比较偏工程实践,会不断追问系统设计细节以及复杂度。

下面复盘一下这场面试的完整过程。


第一题:System Design

Design a conference room booking system

题目大意是设计一个公司内部的会议室预订系统,核心需求包括:

  • 公司大约有 100k employees
  • 50个国家的100个办公地点都有会议室
  • 用户在创建会议时需要 查找可用会议室并预定
  • 会议开始时需要 check in
  • 如果 5分钟内没有check in,会议室会自动释放

这道题其实和 Google Calendar + Meeting Room 类似。


面试开始

面试官先简单介绍了一下题目。

面试官:
假设这是一个公司内部系统,你需要设计一个会议室预订系统。

候选人先确认需求。

候选人:
用户是在创建会议的时候选择会议室吗?还是单独预订?

面试官回答:

面试官:
一般是在创建 meeting 的时候系统推荐合适的会议室。

于是候选人总结核心功能:

  1. 查找会议室
  2. 会议室预订
  3. check in
  4. 自动释放

面试官表示可以继续设计。


系统设计思路

候选人先从 核心问题 入手。

会议室预订系统的关键难点其实只有两个:

1 查找可用会议室
2 避免会议室冲突

如果直接用数据库查询,随着数据量增长会很慢。

于是候选人提出一个比较经典的方案。


Availability Index

候选人提出要做 Availability Index

核心思想:

把会议室每天的时间段用 bitmap 表示。

例如:

如果使用 5分钟粒度

一天共有:

24 × 60 / 5 = 288 个时间槽

每个 slot 表示:

0 = free
1 = occupied

例如某个会议室当天的 schedule:

10:00 - 10:05 1
10:05 - 10:10 1
10:10 - 10:15 1
11:00 - 11:05 0

这样查询某个时间段是否可用时,只需要检查 bitmap。

时间复杂度非常低。


数据分区设计

面试官接着问:

如果全球有很多 office,数据怎么 partition?

候选人提出按 office + date 分区。

例如:

office_id = Singapore-01
date = 2026-03-07

因为用户搜索会议室通常是:

  • 某个 office
  • 某一天
  • 按该 office 的 timezone

这样 partition 非常自然。


数据结构

候选人继续补充:

系统中其实有两个核心 index:

Metadata index

用于存储会议室信息:

  • room_id
  • office_id
  • capacity
  • feature(projector、whiteboard)

用于筛选 合适会议室


Availability index

用于判断 某个时间是否空闲

数据结构:

office_id
date
room_id
bitmap

查询流程:

1 metadata index 过滤会议室
2 availability index 判断时间

Check-in 机制

面试官接着追问:

如果用户不来开会怎么办?

候选人提出 check-in机制

流程:

会议开始

5分钟内必须check-in

否则自动释放会议室

实现方式:

可以通过:

delayed job
或者
message queue + scheduler

在会议开始后触发检查。

如果没有 check-in:

update bitmap
释放slot

面试官对这个设计整体比较满意,没有继续深挖。

第二题:Grid Number Search

算法题描述如下:

给一个 m × n 的整数矩阵 board,以及一个整数 number。

如果可以通过 相邻格子 拼出这个整数,则返回 true。

规则:

  • 每个格子只能使用一次
  • 只能 上下左右移动
  • 格子里的数字按顺序拼接

例如:

board = [
[1,2,3,5],
[9,6,3,9],
[1,4,5,5]
]number = 955Output = true

面试过程

候选人看到题目后先确认:

候选人:
这是类似 Word Search 吗?

面试官点头。

于是候选人思路很清晰。

核心就是:

DFS + Backtracking

步骤:

1 从矩阵每个位置开始
2 匹配 number 的第一位
3 DFS 搜索下一位
4 使用 visited 防止重复使用格子

面试官继续问:

如果 number 很长怎么办?

候选人回答:

时间复杂度大概是:

O(m * n * 4^k)

k 是数字长度。

但实际情况中:

  • matrix 不大
  • 剪枝效果很好

一个特殊点

这道题还有一个细节:

数字可能是 负数

例如:

number = -123354

候选人注意到了这个点。

于是先把整数转成字符串。

再做 DFS。


面试官没有再继续追问。

算法题大约花了 30分钟左右

csoahelp 提供:

  • TikTok 高频面试题整理
  • 实时 VO 面试辅助
  • System Design 结构化思路指导

帮助候选人在面试中 快速理清思路并稳定发挥

如果你近期准备 TikTok / Meta / Google / Stripe 等公司面试,可以提前准备这些高频题目。

往往一两道题就决定了面试结果。

如果你最近有 VO 面试,提前准备这些 真实题型和思路,会非常关键。

我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

Leave a Reply

Your email address will not be published. Required fields are marked *