好的,我一直在接受一些艰难的采访,但这太荒谬了。给了我一个问题,给出了一个笔,纸,计算器,“URL安全”字符的定义,以及20分钟完成问题。问题是(我记得最清楚):
编写一个函数来生成一个表示给定的唯一URL安全字符串 我们正在部署的IIS Web服务器上的文件修改时间点 明天。 “时间点”的解决方案是一秒钟。
“URL安全”字符的.NET RegEx模式=
[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安全字符表示。
你怎么回答这个问题?!我觉得我是一个非常优秀的开发者,但是我已经很多年了,因为我不得不担心计算两个人的权力!
答案 0 :(得分:5)
这似乎就像FizzBuzz问题......基于要求
DateTime.UtcNow.ToString("yyyyMMddhhmmss");
或者与它非常相似的东西是一个很好的答案,作为一名访谈员,我会对没有编写任何代码的人表示高度怀疑,因为他们选择使问题变得不必要地复杂化。
答案 1 :(得分:3)
也许我误解了问题的意图,但
var timestamp = DateTime.Now.ToString("yyyyMMddhhmmss"); // or whatever DateTime source
应该是唯一的并且“URL安全”,不是吗?