程序员老鬼

阿里员工140万年薪,嫌女友收入差低,准备。。

昨天晚上加班回家的路上刷到这条新闻,阿里一哥们儿,年薪140万,嫌弃女朋友一年15万,说啥担心差距越来越大,想换人…我第一反应是:哥们儿你这是在做性能优化还是负载均衡啊?😂 两年感情,直接用“薪资对比”SQL筛选女朋友,这判断条件也太硬编码了吧。

Image

作为程序员我就想说,代码里的魔法值我们都知道得抽出来配置,感情里更不能用数字写死啊。人和人之间的价值,不是你工资单的数字类型能完全存储的(哪怕是double类型)。

再说了,项目合作看重的是配合默契,女朋友就是你人生的长期合作伙伴,不是临时外包。你现在嫌收入差距大,等你哪天发量减少、KPI掉了,她是不是也能直接下线你?

所以啊,感情这事别用“if (income < x)”来判断,换个思路,多想想“共同成长”这种可持续架构才靠谱 【备注:文末可领最新资料】

算法题:可怜的小猪

昨晚十一点多,我在公司楼下拿着还没喝完的美式,小李追上来问我:“东哥,那个…可怜的小猪咋做啊?”我一愣,这题不是面试老熟人嘛,脑子里立刻过了下片段儿——一堆桶,一只毒的,猪喝了会在 minutesToDie 分钟后挂,整场测试总时长 minutesToTest。要问最少几只猪能把毒桶找出来。嗯,别急,我们慢慢来。

就是那个…关键点在“你能试几轮”。能试的轮数 r = minutesToTest / minutesToDie(向下取整)。为啥?一轮喂一次,等一轮观察结果,再喂下一轮。比如 60 分钟总时长、15 分钟毒发,那就能试 4 轮。

但为啥是“r+1”种状态

你们想啊,每只猪最终会呈现 1 种“死亡时刻”或者“活到最后”。死亡时刻可能发生在第 1、2、…、r 轮末尾,加上“始终没死”这一档,一共 r+1 种结果。单只猪能区分 r+1 种状态,多只猪就能“组合编码”。这就像把“桶号”写成 (r+1) 进制数,每只猪就是一位,最后看谁在第几轮阵亡就把那一位定出来。是不是有点意思。

公式就一句话

需要的猪数 p 满足: (r+1)^p ≥ buckets。 所以 p = ceil( log_{r+1}(buckets) )。就这个,别背场面话,背这个就够用了。

顺手举个面试常见数:buckets=1000, minutesToDie=15, minutesToTest=60。 r=4,r+1=5。5^4=625 不够,5^5=3125 够,所以要 5 只。面试官一般点点头就过了。等等我接个电话……好了继续。

现场有人问:“那具体怎么给猪喂?”思路是把桶编号写成 5 进制(上例),每只猪管其中一位;第 k 轮就喂所有该位为 k 的桶。等结果出来,看第 i 只猪死在第几轮,就还原该位数字;都没死就是 0。最后拼回十进制,就锁定那只毒桶。实现里其实不用真的模拟喂食,只要算最小 p 就行。

publicclassPoorPigs{
publicintpoorPigs(int buckets, int minutesToDie, int minutesToTest){
if (buckets <= 1) return0;
int rounds = minutesToTest / minutesToDie;     // 能试几轮
int states = rounds + 1;                       // 每只猪的状态数
int pigs = 0;
long cap = 1;                                  // (states)^pigs
while (cap < buckets) {
            pigs++;
            cap *= states;
        }
return pigs;
    }

// 小测一下
publicstaticvoidmain(String[] args){
        PoorPigs s = new PoorPigs();
        System.out.println(s.poorPigs(1000, 15, 60)); // 5
        System.out.println(s.poorPigs(4, 15, 15));    // 2
    }
}

别把 r 写成向上取整;别忘了 buckets=1 时返回 0;还有整数乘法可能溢出,我上面用 long 兜着。哦对了,现场白板演算时,别死记硬背,先说“状态数=轮数+1”,面试官就知道你是会的…行了我得回去加班了,改天把“多毒桶扩展”再跟你们唠。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404