好吧,我一直在進行一些艱難的訪談,但這很荒謬。我被問了一個問題,給了一支筆,紙,計算器,「URL安全」字符的定義,以及20分鐘來完成問題。問題是(盡我所能記得了):訪談失敗:我認爲Google很艱難
編寫一個函數,產生代表在時間的IIS Web服務器上的文件的修改,我們正在部署一個給定的 點的唯一網址安全的字符串明天 。 「時間點」的解決方案是一秒鐘。
爲「URL安全」字符.NET正則表達式模式=
[0-9a-zA-Z\$\-\_\.\+\!\*\'\(\)]
我慌了,只是寫了我的思維,而不是寫實際代碼。他們在查看我的「答案」後駁回了我的看法,因爲我實際上沒有編寫任何代碼。 :(
我寫的是這樣的:。
- 365 days in a year so "day of year" can be represented in 2 bytes - 4 digits in year (0 - 9999) so year can be represented in 3 bytes - 2 digits in hour (0 - 23) so year can be represented in 1 byte - 2 digits in minutes (0 - 59) so minutes can be represented in 1 byte - 2 digits in seconds (0 - 50) so seconds can be represented in 1 byte TOTAL: 2+3+1+1+1 = 8 bytes total that use 0 - 255 - URL-safe range == 10 + 24 + 24 + 10 == 0-9 + a-z + A-Z + special chars == 68 - 4 bits required to represent URL safe char ANSWER: - A byte is 8 bits - Only 4 bits per byte needed to represented the 8 bytes in a date - 8/2 = 4 FINAL ANSWER: - Only 4 actual bytes needed to represent hash
換句話說,時間戳哈希可以合理地在4 URL安全字符,在最具代表性的
將如何你已經回答了這個問題?!我覺得我是一個相當不錯的開發者,但是我已經經歷了很多年,因爲我不得不擔心兩個計算能力!
它說他們在尋找*最小長度* URL安全字符串?有沒有這個任務呢? – BrokenGlass 2012-03-17 03:53:06
嗯,而不是代表時間作爲一個字符串然後哈希,爲什麼不表示今晚午夜的秒數?您可以使用Date和Timespan類快速實現它。 – psr 2012-03-17 03:54:53
認爲比特,而不是字節。和base72編碼。 – 2012-03-17 04:00:50