最近面试,按说候选人背景也都不错吧。
我们对算法要求没那么高,业务代码为主。
因此对于各种语言的候选人,我基本都会问一道长整数加法的问题。
俩数相加,都没有符号 /没有小数点 /字符串表示 返回和 /用字符串表示
这题难吗?
考察的知识点点挺广的:
字符串 /数组操作,循环控制,流程逻辑,边界条件等等。
这也基本上是编程的时候经常能遇到的问题。
但是我遇到的面试者写的千奇百怪的都有:
idx ** 10
等等吧
所以如果你遇到这个题,如何优雅的写一个 a+b?
稍后我写一个我自己花了一小点时间写的答案,八行,没有很过分的压缩代码 我的代码大概长这样:
function add(a, b) {
let ...
some magic {
cast something
cast other
}
return ...
}
正经逻辑三四行写完,晚一些我贴条的方式公布我的答案。
如果要你写,你写啥?
302
fuckandfuckv2ex 2020-08-21 18:11:03 +08:00
看完问题就知道走向了,果然。
|
303
XisucksYi 2020-08-21 18:31:35 +08:00 3
@phpfpm 一个事实就是, 你引以为傲的技术, 不过就是打工技术而已, 再高也只是个工人罢了, 拿固定工资.
工人不管在什么时代都是最惨的, 不是给资本家打工, 就是给地主打工. 本身程序员职业就是苦役, 你还这样搞面试, 我都有点怀疑你是不是工贼. |
304
dick20cm 2020-08-21 18:40:50 +08:00
https://github.com/bosskwei/uint512_t,汇编 adc 加法,另外有乘除位运算,模板元编程实现无限嵌套
|
305
RedBeanIce 2020-08-21 18:55:48 +08:00 1
杠精刚一点,
字符串 /数组非得 reverse 否则不会写循环的 reverse 拼成 reserve/压根不会写这个函数的 这个我不会拼。 |
307
gratonos 2020-08-21 19:35:01 +08:00
且不说题目本身的意义,只说楼主给的答案实现方式,我觉得太过于依赖语言的“隐式”特性,且过于追求代码简短,可读性并不好。实现效率也先暂不讨论。以下是我参考楼主的答案,实现的我认为可读性更高的版本,即使不熟悉 JS 的程序员也应该能理解(注:本人不是 JS 程序员,见笑):
``` javascript function add(a, b) { const count = Math.max(a.length, b.length); let array = new Array(count); let carry = 0; for (let n = 1; n <= count; n++) { const left = Number(a[a.length - n] || '0'); const right = Number(b[b.length - n] || '0'); const sum = left + right + carry; array[array.length - n] = String(sum % 10); carry = Math.floor(sum / 10); } const res = array.join(''); return carry > 0 ? '1' + res : res; } ``` |
309
ppphp 2020-08-21 20:04:01 +08:00
这题也太容易了吧,根本算不上是算法题,而且这是面试不是机考,有操作空间的,但是这答案也离谱,算是菜鸡互啄吧
|
310
yanqiyu 2020-08-21 20:11:07 +08:00 via Android
啊,你们都一个一个串行加法吗?这得多慢,难道不应该按照 int 大小截断分段加法吗
|
312
IssacTomatoTan 2020-08-21 21:51:24 +08:00 via Android 1
写这种代码的 没人想继续维护你的代码 请好走
|
313
isukkaw 2020-08-21 21:59:27 +08:00
楼主倒是报一报贵司是什么在什么组的啊。
|
314
hefish 2020-08-21 22:46:38 +08:00
支持 312, 307 楼的观点。 对 LZ 的吐槽大部分认同,但对 lz 给出的答案 不敢苟同。
|
315
phpfpm OP |
317
tikazyq 2020-08-21 23:22:24 +08:00
@xiangbohua 楼主这种面试官我也碰到过,以为自己懂点技术就自以为是的很,殊不知同事和合作的人反感得很,显得很自大。我个人是不太愿意跟这种人打交道的。另外或许还在工作的时候喜欢扣细节,揪着一个问题死磕。而真正干活的时候却容易给队友挖坑,然后甩锅说不是自己的问题。这种人通常还带有附加属性,例如跪舔老板,轻视下属。从楼主的面试过程来看,职位应该不算太高,可能眼界确实有待提高。
|
318
2n80HF9IV8d05L9v 2020-08-22 17:28:46 +08:00
楼主没问题。鉴定完毕。 目测在小城市或者小公司吧。
|
319
HankAviator 2020-08-22 23:11:36 +08:00 via Android
这题我高中训练奥林匹克什么赛时老师讲过😂,不过毕竟不是如楼主能炫技的骨骼清奇的奇才,最后也没记住。
不过也幸好不会在面试上问到这种问题。 |