题目
(出题时,请先抹掉考察点部分的内容。)
问题 1:
难度系数:容易。
题目描述:
给你两个一模一样的玻璃球。这两个球如果从一定高度掉到地上就会摔碎,当然,如果在这个高度以下往下扔,怎么都不会碎,超过这个高度肯定就一次摔碎了。
现在已知这个恰巧摔碎的高度范围在1层楼到100层楼之间。如何用最少的试验次数,用这两个玻璃球测试出玻璃球恰好摔碎的楼高。
考察点:
考察工程师的工程思维方式。只有正确的工程思维,才能称得上是真正的工程师。
有的方法是使用笨办法,能得到正确的答案,但是效率不高。这种思维在工程实践中会经常遇到。例如本题目,可以从最底层(1层)一层一层地尝试。
有的方法是凭感觉做试验。比如,预测一下,试一试。比如,跑到 30 层一试,没有碎,再跑到 80 层楼一试,碎了。
问题 2:
难度系数:容易。
题目描述:
如果你有了上面「问题1」的解答思路,请编程的方式完成。同时,编写相应的单元测试代码。(注:1. 可使用一种你熟悉的语言。 2. 请注明你的程序的编译工具链,以及此程序所需的运行环境,并做简要地原理性说明。3. 你写下的代码会成为最后的生产代码,请仔细一些。)
考察点:
软件工程师,除了工程的思维,还要用动手的能力,来实现自己的想法。
在实现的过程中,要遵循软件编程的各种规范。包括,注释,函数命名,变量命名测试单元。从书写规范可以看出,功底是否扎实。
问题 3:
难度系数:一般。
题目描述:
如果对于「问题1」而言,你有了最佳的策略。那么,如果这时你有三个玻璃球,而不是两个,那么你如何调整原有的策略,使其重新达到最佳?请写下你的理由。
考察点:
如果工程师再能从理论角度来思维这个问题,那么就更好了。如果是真正理解了这道题,会知道第一个球会先在 22 层试验,第二个球要以 4 或 5 为步长,然后第三个球,再做调整。
其次,我们会察看,这道题的答案与「问题1」的答案的异同,来分析面试者的思维变化是否符合我们对工程师的要求。
网友评论