面试问题,他们想完成什么?

我今天正在接受技术工作面试,是时候给我一些编程练习。 我终于来到最后一个问题:

鉴于数字:

116 104 105 115 32 105 115 32 99 111 114 114 101 99 ? 

下一个号码是什么?

为了真正理解我的思维方式,我鼓励你停止阅读,并试着弄清下一个数字是什么。 花几分钟,如果你仍然不知道,然后阅读

我第一次花了5分钟寻找一个模式,我没有find任何。 我开始感到愚蠢。 请注意,那个家伙正盯着我,等着回答。 我觉得有点愚蠢。
所以我被给了一个线索。 This is not a mathematical question

我花了5分钟,他说The sequence is important

又过了5分钟,他说He believed only programmers would understand this

还有5分钟,我还没有明白最后一个数字是什么。 他给出了一个最终的线索,让我解决了这个问题,而且Think of the numbers as replacment for some sort of Alphabet

现在我鼓励你拿出答案,但是我也想从人们那里知道,他为什么要问这样的问题呢? 这与编程有什么关系,他在看到我用了20分钟的绝望痛苦之后,完成了什么?

首先是答案:116 – 这是ASCII字母的十进制forms“this is correc”,所以接下来是字母“t”。

但是,当我想出了(给出你的线索)的模式,我会提出一些意见:

  • 想必他是想看看你是如何攻击一个困难的,甚至模糊的问题。
  • 如果他每次真正静坐5分钟,那么他只要鼓励你说话 ,就需要采用面试的方式。

那就是说:

  • 你是否大声思考,并通过你使用的各种方法进行交stream?
  • 你有问题关于问题领域的问题吗?

顺便提一下,我错误地记得“96”而不是97,所以我会错过这个问题。 但是我会一直在说话。

你必须传达你的思维过程,而不是只提出一个答案。 我有两次面试官给我提出的问题,他们并不指望我解决,都是为了看到我解决问题的方法。

顺便说一下,我从两次采访都得到了报价,因为我解决了这些问题 – 即使我不能解决问题。

任何用十进制表示ascii值的人都是疯狂的。 如果它是hex的,那么序列看起来会更加熟悉。

你的问题让我想起几年前的EA广告系列:

替代文字

我有自闭症 奇怪的是,第一眼看到这个数字并不是数字,接下来我注意到的是32s – 我碰巧知道的是空格。 从那里我得到了这个/很快(不到一分钟)。 由于IH和ST代码是连续的,所以检查起来相当快,我不知道任何这些代码的ascii代码,但只要我确认了IS缺口,我知道我是在正确的轨道上。

那么RR是快速的 – 在S之下一个字符。

所以 – 是的,我很快就知道了。 但是,正如我所说,我是自闭症。 有一个正常的东西,我不能做桶的负载,但模式匹配是我强制性的东西。 我怀疑这实际上在采访中是无益的。

我知道这看起来像一个可怕的问题,因为它是testing你的代码打破/模式匹配技能,而不是你的解决问题的能力,但我怀疑这不是意图。

当我雇人的时候,我用了一个类似的练习,用一堆有颜色的卡片,要求人们把卡片分成几堆,而根据我的“合适的”不符合“答案”游戏规则'。

这个练习的目的不是为了testing他们的模式发现技能,而是为了感受他们对试图解决一个难题的经验的情绪反应。 在我的卡片演习中,卡片总是按照一定的顺序呈现,以便让受访者认为他们已经解决了这个问题,却发现他们没有三次。

对于具有挑战性的研发angular色,您希望聘用那些对问题空间越复杂,对他们感觉越感兴趣和兴奋的人。 对于一个不太具有挑战性的angular色,你希望有人宁愿问题空间是稳定的 – 比如有人为我们根本不想改变系统的大型数据库编写查询。

这实际上是一个非常有用的sorting练习,以匹配候选人的angular色。

所以,我花了一点时间,并不需要提示,但116是正确的答案。 对我来说,赠品并不是那么多的32年代,这是模式中的数字重复的方式。 没有明确的math逻辑,但是对于我点击的模式还有其他的东西,我刚刚得到了它。

曾经,很久以前,我设法开发一个游戏(对于那些关心的人来说是Koronis Rift,而我从来没有把它上传到BBS)。 我破解它不是因为我想要完全复制它。 那是因为它把游戏保存在游戏所耗尽的同一个磁盘上,这让我感到非常困扰。 一旦我破解了它,我为自己感到骄傲,因为复制保护做了一些相当棘手的事情。 所以我想把我的标记放在加载屏幕上。

现在,我不知道加载屏幕在哪里。 我使用反汇编程序来运行加载的东西,但从来没有达到屏幕加载的地方。 但是我已经查过了很多磁盘,并且有一串字节看起来像一张图片的原始数据。 如果是原始数据,我就知道图像有多大,所以我find了序列的开始和结束,把它放到一个文件中,然后把这个文件加载到一个图像编辑器中。 我是对的。

有人问我:“你怎么知道这是一张照片?”。 我不知道该怎么解释。 它看起来像一个。

这不是我期望在一个好的程序员中所具备的才能/技能。 我发现几乎明确devise的面试问题不会让他们真的很气愤。

是的,有一些关于如何解决候选人问题。 但是如果我要testing一下,至less我会想出一个与我希望候选人做的工作有关的玩具问题。

我会问这个问题的唯一方法是如果我正在寻找一个逆向工程师或密码学家。 能够注意到这样的模式,并且猜测它们的含义对于这两个angular色来说是非常有价值的技能。 但不是一般的程序员。

我认为在一些采访者中有一定的虐待倾向。 看到候选人感到一阵高兴。 他们可能会谈论看候选人的解决问题的能力,但我认为他们只是希望享受比候选人更聪明的感觉(不一定是现实)。

那么,我想我已经得到了答案,而且我很快得到了答案 – 尽pipe在一个参考资料的帮助下。

这听起来有点浪费时间。 当然不是我要问的。 我同意这可能只是一个程序员会“得到”的东西 – 但是这并没有说明那个程序员的技能有什么重大的意义。

下一个数字是116吗?

不过,“Shir ir correct”也没有任何意义。

编辑:

哎呀!

我看到了32秒,立即点击了我。

有人可能会认为,问题的关键在于看你如何摸索一个看似不可逾越的障碍。 你是否开始有限差异,寻找算术或多项式序列? 或者你只是眯起眼睛,然后耸耸肩,放弃?

依我看,还是一个可怕的问题。

ASCII – > int? 面试官疯了…

应该是116。

翻译: this is correc

吨丢失。 t在ascii表中是116。

http://www.cs.utk.edu/~pham/ascii.html

python:

 >>> ''.join(map(lambda x:chr(int(x)),'116 104 105 115 32 105 115 32 99 111 114 114 101 99'.split())) 'this is correc' 

数字看起来是ASCII码。 但是,这绝对不是我在面试时要问的,因为我不希望任何人在面试中知道十进制ASCII码。 hex是有点不同(你可能期望人们知道%20是一个空间),但仍然。

它的ascii代码。 下一个字母是t 。 他可能需要你了解这个工作的ASCII代码,以及检测模式的固有能力。

我想这是看你如何解决问题。

如果你已经很快完成了这个工作(我怀疑这个32位是给那些已经吸收了一些ASCII代码的人),那么你可能会得到另外一个类似的types – 等等 – 直到你发现自己在你的“舒适区'。

作为一名受访者,这些问题可能是一种检测工作不适合你的方法!

这是ASCII码,解决scheme是“t”(116)。 但是,我们应该关注他的帮助,因为他可能计划了他们。

“这不是一个math问题”当然了,我们必须把数字解释为字符,找出可以用来填补空白字符的数字,所以在任务结束时你可以告诉他这是非常math,因为你必须使用函数来完成一个模式。

“顺序很重要”是的,32帮助你意识到他在谈论人物。

“他相信只有程序员才会明白这一点”一些非程序员也理解这一点,但大多数程序员都明白这一点。 他试图指出,当你使用程序代码/debugging时,你可以达到这些数字。

“把这些数字看作是replace某种字母表。” 我相信你现在知道答案。

他想testing你的创造力和意志力。 我在智商testing中遇到了这样的问题(好吧,在智商testing中,他们对ASCII字符没有吸引力,因为大多数人还没有听说过ASCII)。

编辑:

当然,这个问题是事先计划好的,所有的帮助都有进一步的线索,他们感兴趣的是需要多less时间和多less线索才能破译序列。 但是,这是一个math问题。

下一个数字是116。

这是一组简单的ASCII码,代表string“this is correc?”。 进行了一下查找,提示是在数字的范围和32(空间)出现的事实。

你是否应该知道ASCII表格? 这对我来说是没有意义的一个面试问题 – 也许他想让你把它看成一个ASCII序列。

感谢与字母表的提示 – 它似乎是ASCII码:

 numbers = [116,104,105,115,32,105,115,32,99,111,114,114,101,99] for n in numbers: print "%c"%n, 

得到:

 thisiscorrec 

但是如果没有电脑,我就不会如此快速地计算出文字。 而且我也会花五分钟的时间相当不舒服。

你知道吗,这让我想起了很多math/逻辑考试,我曾经在学校,在那里工作和工作,最后来到我相信的是他们正在寻找的答案…只有感到极大的不满,因为这个问题根本没有一个正确的答案 。 它刚刚有一个显然应该是正确的答案。

我知道这与你所问的是无关的 – 是的,正如其他人所说的,重要的是你试图解决问题时的思考过程(并且说你大声的想法可能是在这种情况下最好的策略) – 但坦率地说,如果我是你,即使/当我弄明白了,我也不能抵制诱惑说:

“看,我明白你可能要我说116,但是为什么?为什么这个string在This is correc逻辑上必须得出结论?

我想说的是,考虑一下。 问题是,“下一个号码是什么?” 对? 不是:“下一个数字是什么,因为这个序列形成了一个完整的陈述”,或者:“下一个数字是什么,假设这些都是英文单词”,或者甚至是“下一个数字是什么,因为它是最后一个号码“; 这只是:“下一步是什么?” 这是如此无止境,以至于无法回避。

我想知道面试官是否会同意这个逻辑,或者只是变得恼火。 可能是后者。

C#:

 foreach(byte b = new byte[]{116,104,105,115,32,105,115,32,99,111,114,114,101,99}) Console.Write((char)b); 

输出:

 this is correc 

所以答案是116,因为't'。

作为编程人员,我们每天都碰到WTF:无知的客户,脑死的API,我们上周的代码…这只是我们行业的一部分。 知道我们对这些情况的反应如何,这是我认为非常有用的就业标准。 这个问题本身并没有你提出答案的重要性,而是certificate了它的合理性。

这是116.我不需要你的线索。 潜意识里,我想我注意到所有的数字都在97-122的范围内(20多年前,当我还是一个小孩的时候,编写了BBC Micro,帮我记住了ASCII代码!)。 不过,我刚才并没有把我脑中的每封信都转换成:

 >>> "".join(map(chr, [116, 104, 105, 115, 32, 105, 115, 32, 99, 111, 114, 114, 101, 99])) 'this is correc' 

我想面试官可能想看看你是如何思考问题的,或者认为作为程序员你可能会知道ASCII码。 但如果这是为了一个Java开发人员的高级职位,我以为会有更重要的事情要问你。 比方说,关于数据结构或algorithm。

如果他们真的让这个问题持续了20分钟,就像你说的那样,他们浪费了很多时间来评估你的开发技能。

如果序列已经在hex中,我可以一眼就读出这些字符,每个字符大概需要1-2秒。 我十分熟悉大写字母的大部分以及所有的控制字符(按照控制-A到控制-Z),并且可以识别出3,6,7,8,9,10,11,12 ,13,14,15,16,17,19,21,26和27。 我希望部分目标是看一个申请人是否本能地识别字符序列。 32是高度暗示的ASCII。

我首先想到更多的代码突破想法,寻找数字对。 这使我相信,这只不过是用字母replace字符。 前段时间我读了一些关于WW2encryption的书,还有一些关于破解密码的理论卡住了我的脑海。

字符序列出来是:这是correc所以1左是t …即它的ascii值是116

所以答案是116

正确的答案显然是8 8 8 8 8 8 83 80 65 85 84 65 33。