刚看到个贴子:有位网友月薪15k,跳槽时张口要25k,本来只是试探,结果HR直接回:35k可以,他反而心虚打退堂鼓了。

我觉得这事吧,关键有两点:第一,你敢开口要25k,就得想清楚自己有哪些业绩、能力、资源能撑住这个价,别只是“嘴上勇敢”;第二,也别被突然的高薪吓到,钱多往往意味着更狠的绩效和责任,完全可以多打听岗位要求、加班强度、试用期考核,再做判断。
从我的角度看,职场最怕的是既想多拿钱,又不敢扛压力,还不愿提升自己。想要高薪没错,但要么匹配,要么就练到匹配。
说到底,高薪不是吓退自己的理由,而是逼自己成长的一面镜子。
算法题:整数反转
昨天晚上快十二点,我在电脑前刷题,准备关机睡觉了,结果点开一道特别眼熟的小题目——“整数反转”。 一看题目,我整个人精神又来了,这玩意面试老爱考,写得好不好,其实能看出一个人对“细节”和“边界”的态度。
题目大概就意思是:给你一个 32 位有符号整数 x,把它的数字顺序倒过来,返回新的整数。 比如:
123 变成 321-120 变成 -21(前导 0 要去掉)[-2^31, 2^31-1],就得老老实实返回 0很多人第一次写的时候,就随手一转,跑样例没问题,但一到“溢出”和“负数”就开始翻车。
人类第一反应一般都是:数字转字符串,反转,再变回整数,就完了嘛。 这思路其实在 Ruby 里很顺手:
defreverse(x) sign = x < 0 ? -1 : 1# 记录符号 s = x.abs.to_s.reverse # 去符号,变字符串,反转 res = sign * s.to_i # 变回整数,再把符号补回去# 32 位边界检查return0if res < -2**31|| res > 2**31 - 1 resend这版优点特别明显:好理解、好写、也好改。 要注意的点就两个:
abs 再 reverse,最后加符号to_i 的时候,前导 0 会自然被去掉,比如 "021".to_i => 21,省心如果只是日常业务里偶尔用一下,这写法已经够用了。
但面试的时候,很多面试官会继续追问一句:如果不能转字符串呢? 这时候就得上“纯数学”的写法了,一位一位从尾巴拆数字。
思路其实也不难,就是小学那套:
x % 10 拿到最后一位x / 10 去掉最后一位res = res * 10 + digit 把这一位加到结果后面x 变成 0关键是:在更新 res 之前,要先判断一下再乘 10 会不会“炸出 32 位范围”。
Ruby 写一版完整一点的,就像这样:
defreverse(x) sign = x < 0 ? -1 : 1 x = x.abs res = 0 max = 2**31 - 1# 2147483647while x != 0 digit = x % 10 x /= 10# 如果再 *10 + digit 就会超过 32 位上限,直接返回 0if res > max / 10|| (res == max / 10 && digit > max % 10)return0end res = res * 10 + digitend sign * resend这里溢出判断那两行,很多人一开始看着有点懵,其实意思就是: “我下一步要干的事是 res * 10 + digit,那我先看看现在的 res 会不会一乘十就超上限,或者刚好在边界上,再加一位也会越界。”
因为我们全程是按正数的范围在盯着(max = 2**31 - 1),最后再补符号,所以负数也能被正确处理。
如果你是在:
但不管哪种,几个坑一定要自己在脑子里过一遍:
0 / 10 / 100 这种,反转是不是还是 0、1 ?-120 这种,反转要变 -21,不是 -0210,别装没看见写到这我才发现,这道看起来“很水”的整数反转,其实把好几个小细节都串在一起了:符号处理、前导 0、溢出判断、循环拆位…… 面试官让你写它,其实不是看你会不会写,而是看你——到底有多在意这些“不起眼的小东西”。
🔥编程资料合集🔥