cruise automation onsite 挂经

一道#of Island
一道react 前端的题, 大概就是做个auto suggest(给你API), 有一些synchronization 的bug要解决
系统设计要design hangman

比如答案是work fork
用户一开始看到的是 _ _ _ _ _ _ _ _
输入o 以后 变成 _ o _ _ _ o _ _
输入k以后 变成 _ o _ k _ o _ k

  1. design hangman solver bot
  2. 设计前后端

hangman solver 挂了,不是很懂怎么做, 说是assume你有一个dictionary of words, solve hangman as efficient as possible
感觉应该是trie 做 , 不过是不是需要both prefix and suffix 呢? 比如很多单词会有同一个后缀 ion 这种

这题挺难啊,具体的系统的input和output各是什么?
主要不太了解 hangman solver,这题不常见

系统设计题, 所以都是input output都可以自己设计
已知条件就是这个solver 内部有一个dictionary, hangman 里的词是字典里随机抽的

我记得这个游戏 以前国内文曲星上都有的 初中经常和同学一起玩:rofl:

是给一个word,中间缺失几个letter,然后让你猜出缺失的letter么?

差不多 ,我在主贴里更新了例子

这题你把它当算法题用trie做,感觉是偏了,算法的话思路参考 LC 745 Prefix and Suffix Search

但是这里你说的是系统设计,思路上可以先参考算法的思路,见 说道谷歌猜词的题目
考虑到题目本身是系统设计,那么肯定先从API 定义入手,然后进一步明确需求,然后就该定义存储策略了

确认一下题意,是要优化猜的策略吗?
要求设计的系统是要最快的找到target word对吧?

是的,说是bot要能赢大部分的用户

没玩过这游戏,感觉落伍了 :joy:
所以我的问题是,难道用户和bot 轮流猜吗?
还是说用户在猜,bot 同时猜,bot先猜出?

嗯 轮流猜的 忘记解释了

那不是只要猜到最后一个letter就赢了?
我估计猜对一个letter可以继续猜是不,多一次机会?

我也不知道 面试官没说我也没问:rofl: 光顾着画trie了 哈哈

这个有点先入为主了,况且这不是考算法
系统设计一般存储方面先选择数据库存储的database schema (要决定SQL还是NoSQL)。
数据结构设计一般是后来问的很细的时候才需要,一般在 Controller layer 这块了。

我的意思是在系统设计面试中,数据结构设计其实往往在很后面很细节的时候才发生,不应该一开始就focus。
甚至很多面试都不需要答到数据结构这层。