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問。