前景提要
最近面试,按说候选人背景也都不错吧。
我们对算法要求没那么高,业务代码为主。
因此对于各种语言的候选人,我基本都会问一道长整数加法的问题。
俩数相加,都没有符号 /没有小数点 /字符串表示 返回和 /用字符串表示
这题难吗?
考察的知识点点挺广的:
字符串 /数组操作,循环控制,流程逻辑,边界条件等等。
这也基本上是编程的时候经常能遇到的问题。
但是我遇到的面试者写的千奇百怪的都有: 反复强调不能转 Int/number 还要强行转之后加起来的 说了不能转但是按位 map 一下乘以 10 的幂加起来的 乘方还写反的 idx ** 10 字符串 /数组非得 reverse 否则不会写循环的 reverse 拼成 reserve/压根不会写这个函数的 循环次数拎不清的,把短的的长度加一下长的就不管了 好一点的知道再处理梳理一下长的数字的剩余位数 最后多的一个进位忘记了的(很多) 当然也不排除先相加判断是不是大于 10,再加上之前的进位的 啰啰嗦嗦写了一大堆的 极限是一个 go 的候选人干了七十多行还漏掉一些逻辑 有人写 if a 长度>b 长度 then .... 我问他 else 写啥
等等吧
所以如果你遇到这个题,如何优雅的写一个 a+b?
稍后我写一个我自己花了一小点时间写的答案,八行,没有很过分的压缩代码 我的代码大概长这样: function add(a, b) { let ... some magic { cast something cast other } return ... }
正经逻辑三四行写完,晚一些我贴条的方式公布我的答案。
如果要你写,你写啥?