Google 面试真题:只能用旧数据库,如何实现反向查询? – VO 辅助 – 面试真题 – 代面试 – 谷歌 – 一亩三分地

You have a database that works with strings of lowercase letters a-z.

The database provides two functions:

insert(str):插入一个字符串。
get(query):返回所有大于等于 query 的字符串,并按照递增字典序排列。

例如:

Insert("aaaaa")
Insert("aabaa")
Insert("cdefg")
Insert("aaxyz")
Insert("vwxyz")

调用:

Get("aaxyz")

会返回:

["aaxyz", "cdefg", "vwxyz"]

现在要求实现一个新的数据库,但只能把旧数据库当作底层存储来用。

新数据库需要支持:

OurInsert(str)
OurGet(query)

其中:

OurInsert(str):插入字符串。
OurGet(query):返回所有小于等于 query 的字符串,并按照递减字典序排列。

例如:

OurInsert("aaaaa")
OurInsert("aabaa")
OurInsert("cdefg")
OurInsert("aaxyz")
OurInsert("vwxyz")

调用:

OurGet("aaxyz")

应该返回:

["aaxyz", "aabaa", "aaaaa"]

这题的关键点其实是:通过字符映射,把原本的字典序反过来。比如 a -> zb -> y,这样原来小的字符串会变大,原来大的字符串会变小。插入时存转换后的字符串,查询时也转换 query,再调用旧数据库的 get,最后把结果转回来。

这样就能用旧数据库的“查大于等于 + 升序”,实现新数据库的“查小于等于 + 降序”。

CsoaHelp 的面试辅助服务,主要就是帮候选人解决这种问题:

不是只告诉你答案,而是帮你在面试现场快速判断题型、组织思路、解释方案、应对追问。尤其是 Google、OpenAI、Anthropic、Stripe、Meta 这类公司,很多题并不靠刷题原题,而是靠现场拆解能力。

如果你也遇到类似的系统设计、算法变形题、wrapper 设计题,CsoaHelp 可以提供实时面试辅助,帮助你把“看懂题”变成“讲清楚并通过”。

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

Leave a Reply

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