Uber 黑车 OA 面试经验分享

Viewed 52

题目 1: 字符串首部/尾部编排后最小字符串

给定一个字符串 word,可以将首部或尾部的部分字符编排顺序(只能选择开头或结尾的 k 位字符)。

目标是实现所有可能的编排后字符串,并返回按词典顺序最小的一个。

示例:

word = "dbaca"
输出 = "acabd"

处理复杂度:接受 O(n) 级别的时间处理算法


题目 2: MENTION 记录统计

根据时间排序的事件列表,统计被 mention 次数。

支持如下格式的操作:

  • "MESSAGE", timestamp, mentions
  • "OFFLINE", timestamp, id (该用户在该时刻后 60 单位时间内为 inactive)

mention 规则包括:

  • id 单个用户
  • ALL 所有用户
  • HERE 当前活跃用户

示例:

members = ["id42", "id158", "id23"]
events = [
 ["MESSAGE", "0", "ALL id158 id42"],
 ["OFFLINE", "1", "id158"],
 ["MESSAGE", "2", "id158 id158"],
 ["OFFLINE", "3", "id23"],
 ["MESSAGE", "60", "HERE id158 id42 id23"],
 ["MESSAGE", "61", "HERE"]
]
输出: ["id158=4", "id23=2", "id42=3"]

题目 3: 数线上符合条件的块接查询

无限的数线,支持两类操作:

  • [1, x]:在坐标 x 处构建障碍
  • [2, l, r]:查询区间 [l, r] 是否正常(没有障碍)

示例:

operations = [
  [1, 2],
  [1, 6],
  [2, 4, 21],
  [2, 5, 2],
  [2, 1, 1],
  [2, 1, 2]
]
输出: "1010"
0 Answers