【发布时间】:2014-06-29 05:29:27
【问题描述】:
上周有人问我一个面试问题:
我需要一个函数来打印出一个数字是正数还是负数,而不使用if elsewhileforswitcha? b:c等条件语句。我该怎么做。
我告诉面试官这是不可能的,因为这个问题本质上是“有条件的”。他告诉我这是可能的,但没有告诉我怎么做。我做了很多搜索,但没有好的答案。
【问题讨论】:
-
正确答案-“没关系,因为这个问题很愚蠢。任何在生产代码中使用技巧而不是使用 if 语句的人都应该被解雇。”
-
面试中问这些问题有什么意义?我怀疑雇主会找到最好的人选。诚然,思维很牵强,但解决方案的可读性较差。
-
我希望这是一个接近比特或硬件的工作。
-
@GabeSechan 如果这是一个好主意,取决于代码的性质。这样的技巧在高性能代码中很有用。在密码学代码中,它们对于避免侧信道攻击至关重要。许多现代加密库要求不得有任何依赖于秘密数据的分支。所以我强烈不同意你以这种笼统的形式发表的言论。
-
a ? b : c不是条件语句,而是条件表达式。事实上,作为一个表达式,而不是一个语句,首先是条件运算符存在的全部理由!因此,问题是错误的 ;-) (嘿,如果你想和你的受访者开玩笑,那就把你的问题弄对吧!)
标签: java