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