Tiny URL基本也算是必考题目了,我是第一次刷这道题感觉并没有什么头绪在encoding上面。我觉得是不是就随机生成几个数字,然后存在Database里,跟本来的url做一个matching。decode的话直接找database看/ HashMap.
也是system design可以,但是这道题不能使用database,如果用了HashMap,user如果初始化另一个object 就没法get Key了。
看完答案发现,看来只会生成一个TinyURL object. 所以我原本想的hashmap是可以的。 这个地方需要问面试官确认是不是只生成一个object。
把给定的url 换成prefix+ counter. counter 变量是一个global variable。 这个方法的一个很严重的问题是,当第10000万个用户使用这个方法的时候,也许他生成的编号比原本的url还长,这就不是Tiny URL了
Hashcode方法也很厉害,但是很容易出现collision. 因为当用户有个几万人以后,很容易出现重复的hashcode。这个时候就操蛋了。
个人比较喜欢这个方法,用random的方法来encode URL。如果这个随机生成的code已经被用过的话, 我们生成一个新的random 来用。
Decode的话就去找database/hashmap问。