在没有操作员的情况下实施操作
Implementing an operation without operators
像
这样的面试题很多
implement addition without using +,-,*,/
我的问题不是关于如何做其中一个问题,而是:这些问题的实际用途是什么?
有没有不支持加法的系统?还是我应该注意其他特殊情况?
我能看到的唯一实际用途是公司是否为加法器设计电路或微代码。虽然从理论上了解如何对二进制数执行加法很有用,但软件开发人员更关心运算符优先级(在括号后乘法后加法等)
也许看看程序员是否知道位运算符是如何工作的是有用的,但如果语言支持加法,那么就没有必要重新发明轮子。
对于那里的大多数软件开发工作,我会说这个问题没有实际用处。找到与工具集和文化的契合点更为重要。
理论与实践相结合。
如果它专门关于实现加法,它可能至少主要是理论上的——基本上每个处理器都已经很好地实现了加法。
但是,如果它是关于实现乘法或除法的,那么至少有一些实际应用的可能性——一些较小的嵌入式处理器没有有乘法或除法指令.同样的运算,如平方根,超越函数,如正弦和余弦等。
公平地说,我可能应该补充一点,即使在那些在如此小的系统上编写代码的人中,也可能只有相当小的一部分人写过这种 类型的代码。在大多数情况下,如果处理器不直接实现乘法和除法,大多数人仍然会用类似 C 的代码编写可以假设它们存在的代码,这些操作将由编译器实现 and/or 标准库.
其中一些对于实现库以支持任意精度整数之类的事情也很有趣。同样,需要定期执行此操作的人数非常少——大多数语言已经有相当数量的此类库,因此很少有人需要从头开始重新实现一个库向上。
另一个可能出现的地方是,如果您在一家实际设计和制造微处理器的公司工作。这些公司通常需要其微处理器的高度精确的行为模型,包括所有处理器指令的位精确模拟,而不仅仅是 "well, what we produce looks pretty similar to what Intel produces" 或类似顺序的东西。
即使将所有这些放在一起,我认为您最终还是会得到一个相当小的利基市场。
没有必要让问题的本质有用。
问题的目的是在有限的时间内了解受访者的一些情况。他要做的真正工作将需要数小时和数天,我们要求他做一些我们认为包含他可能工作的本质的事情,我们可以在短时间内对其进行评估。例如:他能解决一个他以前没见过的问题吗?他能解释清楚吗?他有解决问题的态度吗?
像
这样的面试题很多implement addition without using +,-,*,/
我的问题不是关于如何做其中一个问题,而是:这些问题的实际用途是什么?
有没有不支持加法的系统?还是我应该注意其他特殊情况?
我能看到的唯一实际用途是公司是否为加法器设计电路或微代码。虽然从理论上了解如何对二进制数执行加法很有用,但软件开发人员更关心运算符优先级(在括号后乘法后加法等)
也许看看程序员是否知道位运算符是如何工作的是有用的,但如果语言支持加法,那么就没有必要重新发明轮子。
对于那里的大多数软件开发工作,我会说这个问题没有实际用处。找到与工具集和文化的契合点更为重要。
理论与实践相结合。
如果它专门关于实现加法,它可能至少主要是理论上的——基本上每个处理器都已经很好地实现了加法。
但是,如果它是关于实现乘法或除法的,那么至少有一些实际应用的可能性——一些较小的嵌入式处理器没有有乘法或除法指令.同样的运算,如平方根,超越函数,如正弦和余弦等。
公平地说,我可能应该补充一点,即使在那些在如此小的系统上编写代码的人中,也可能只有相当小的一部分人写过这种 类型的代码。在大多数情况下,如果处理器不直接实现乘法和除法,大多数人仍然会用类似 C 的代码编写可以假设它们存在的代码,这些操作将由编译器实现 and/or 标准库.
其中一些对于实现库以支持任意精度整数之类的事情也很有趣。同样,需要定期执行此操作的人数非常少——大多数语言已经有相当数量的此类库,因此很少有人需要从头开始重新实现一个库向上。
另一个可能出现的地方是,如果您在一家实际设计和制造微处理器的公司工作。这些公司通常需要其微处理器的高度精确的行为模型,包括所有处理器指令的位精确模拟,而不仅仅是 "well, what we produce looks pretty similar to what Intel produces" 或类似顺序的东西。
即使将所有这些放在一起,我认为您最终还是会得到一个相当小的利基市场。
没有必要让问题的本质有用。
问题的目的是在有限的时间内了解受访者的一些情况。他要做的真正工作将需要数小时和数天,我们要求他做一些我们认为包含他可能工作的本质的事情,我们可以在短时间内对其进行评估。例如:他能解决一个他以前没见过的问题吗?他能解释清楚吗?他有解决问题的态度吗?