被组长严重 pua,有点抑郁焦虑倾向,明天周一现在已经提前开始害怕,也和自己说其实没什么好怕的,这份工作并不是什么很大不了的事情。。
刚看到个贴子,说网友被组长疯狂PUA,天天被否定,说什么都不对,现在一到周日晚上就开始提前害怕周一,一边跟自己说“这工作没那么重要”,一边还是控制不住焦虑,只盼着熬到过年。
被PUA久了,人会先怀疑自己,再怀疑世界,不是换个工作就立刻能好,也不是咬牙多熬几个月就自动痊愈。问题不在“怕上班”,而在边界被一点点磨没了——明明是工作问题,却全算在自己不行头上。
从我的角度看,第一步是先把“组长说的”和“事实”分开,多跟同事、朋友对一对,不要只听一个人的评价;第二步,有条件就主动找出路,不行就先给自己设个时间点,哪怕是过年后调整也行。
说到底,工作丢了还能再找,自尊和身体垮了可很难补。
面试题:森林中的兔子
昨天晚上十一点多,我在公司楼下抽烟(其实是冻得发抖),我们组小李突然丢了个题给我:森林中的兔子。他说这玩意看着像小学题,结果他写着写着就开始怀疑人生了……我说你别慌,这题就跟线上排障一样,关键不是“兔子”,关键是“口径一致”,不一致你就会像我之前排那个 Broken pipe 一样越看越玄乎
题意你大概知道:每只兔子报一个数 x,意思是“跟我颜色一样的还有 x 只”,那一撮同色兔子总数就是 x+1。坑就坑在:同一个 x 可能出现很多次,但它们不一定都属于同一撮,因为一撮最多容纳 x+1 只,超了就得开新撮。这个感觉像消息队列一批一批刷出去,批大小固定,来了太多就得新开一批,不然你就等着错位解析(我之前抓 TCP 包看到 1024 那个切割就懂了,真能把人看吐)
所以做法其实很“工程”:先把每个 x 出现次数统计出来。假设 x=2 出现了 cnt=5 次,意味着至少有多少只兔子?一撮容量是 3,5 只得分两撮:第一撮 3 只,第二撮 3 只(哪怕只报出来 2 只也得算满,因为还有没报的同色兔子可能躲着)。所以答案是 ceil(cnt / (x+1)) * (x+1)。
这个 ceil 别手算,容易出事故,尤其你写 Java 的时候一激动就写成 cnt/(x+1) 直接向下取整,线上就会像 SpringBoot 默认配置那种“看着没事其实早埋雷” Java 里我一般这么写:groups = (cnt + size - 1) / size,size 就是 x+1,老套路,稳。
代码我给你一份,别去网上抄那种一坨 Stream 看得脑壳疼的,我写得偏“能上生产”的那种(当然这题也不上生产哈,就是说风格):
import java.util.HashMap;
import java.util.Map;
publicclassRabbitsInForest{
publicintnumRabbits(int[] answers){
// key: x, value: count of rabbits saying x
Map<Integer, Integer> freq = new HashMap<>();
for (int x : answers) {
freq.put(x, freq.getOrDefault(x, 0) + 1);
}
int total = 0;
for (Map.Entry<Integer, Integer> e : freq.entrySet()) {
int x = e.getKey();
int cnt = e.getValue();
int size = x + 1; // each color group capacity
int groups = (cnt + size - 1) / size; // ceil(cnt / size)
total += groups * size;
}
return total;
}
// 随手测一下,别在面试写 main 太长,嗯…我就写短点
publicstaticvoidmain(String[] args){
RabbitsInForest s = new RabbitsInForest();
System.out.println(s.numRabbits(newint[]{1, 1, 2})); // 5
System.out.println(s.numRabbits(newint[]{10, 10, 10})); // 11
System.out.println(s.numRabbits(newint[]{0, 0, 1, 1, 1})); // 6
}
}
你看这个逻辑其实特别像“分桶”:同一个 x 的兔子往同一个桶里扔,但桶的容量固定是 x+1,桶满了就开新桶。最后把所有桶容量加起来,就是最少兔子数。这里最反直觉的是:有人没报数也得算上,因为题目只说“回答的兔子”,没说森林里就这些,懂吧,就像你日志里只看到了 ERROR 不代表 WARN 不存在。
行了我去回小李了,不然他又要在群里说我“写个题还讲架构”,我先……哎等等我外卖到了。