提的 Bug被同事说“不是问题”,结果线上崩了,怎么办?
刚看到个贴子:网友提了个 Bug,被同事一句“不是问题”怼回去,结果真线上崩了,现在不知道该怎么办
我觉得这事吧,根本问题是职场里“甩锅文化”太普遍了。有问题的时候不是先想怎么解决,而是本能地找借口、推责任,先堵住你的嘴再说。网友的困境,其实很典型:你说了没人信,最后真出事了,又轮到你来背锅,简直是双重打击。
网友的回帖我也看了,有说“让领导出面”的,有劝“以后邮件留痕”的,都没错。但我觉得关键不是怕出问题,而是你得想清楚:你在这个职场,是来找情绪价值的,还是来刷存在感的?说到底,能留下记录,能把该说的说清楚,才是真正保护自己。
从我的角度看,别怕被说“多事”,怕的是明知道有坑还得自己跳。总的来说还是:保持专业,多一分底线,少一分内耗 【备注:文末可领最新资料】
面试题:直线镜像
直线镜像这个题,虽然名字听起来像是某种图形处理问题,但本质上是几何题和字符串题的混合版本。如果你是个搞Java的兄弟,那这个题你八成不是在刷题的时候碰到的,就是在面试现场被突然怼了一下,然后一脸懵:“啥?镜像是指啥?”
我们先搞清楚问题意思:给你一个二维平面上一堆点,然后给你一条竖直的线,比如 ,问你这堆点是不是关于这条直线成镜像对称。通俗点说,就是你拿一面镜子放在 上,这堆点能不能刚好在镜子那边也出现一模一样的位置。
这玩意儿怎么解?说实话我第一反应是数学公式一顿推,然后想想好像不是很靠谱,面试官要的是能跑起来的代码。
这题其实用 HashSet 来做特别香 😋。我们搞个 Map,把所有点按 y 值分组,然后对于每组 y 值下的所有 x 值,我们验证它们是不是关于某个中线对称。为啥这么搞?因为 x 对称的时候,y 不动啊。
直接上代码感受一下:
publicbooleanisReflected(int[][] points){
Map<Integer, Set<Integer>> map = new HashMap<>();
int minX = Integer.MAX_VALUE, maxX = Integer.MIN_VALUE;
for (int[] point : points) {
int x = point[0], y = point[1];
map.computeIfAbsent(y, k -> new HashSet<>()).add(x);
minX = Math.min(minX, x);
maxX = Math.max(maxX, x);
}
int sum = minX + maxX;
for (Map.Entry<Integer, Set<Integer>> entry : map.entrySet()) {
for (int x : entry.getValue()) {
if (!entry.getValue().contains(sum - x)) {
returnfalse;
}
}
}
returntrue;
}
看明白没?sum = minX + maxX 是关键,相当于我们找到了一个理论对称轴 ,然后只要每个点在 y 相同的前提下都有它的镜像兄弟,那就完事了。
我当时在项目里处理类似图形操作的时候也遇到过这种“镜像验证”的场景,那时还是前端页面处理 SVG 图形,要验证用户对称绘图,原理其实差不多,只不过那时候坑更多,因为浏览器解析还得加上浮点误差 🤯。
顺带提一句,如果这题非得你自己计算对称轴,千万别上来就用除法,整数除法吃你没商量,比如 (minX + maxX) / 2 是 4,但你想验证的时候再去算 sum - x 就不精确了。这里直接用 sum = minX + maxX 避免精度问题,谁用谁知道。
还有兄弟们千万别傻傻地搞个新数组去构造镜像点然后一一比对,那是图形学不是算法题,时间空间开销爆炸,面试官要是看到你这么干,估计心里已经默默扣分了。
这题就跟你用镜子照脸一样,要对称还得姿势正确 🤪。
最后用个表情结束这题:🪞+🤖 = ✔️
你问我这题难不难?说实话吧,不难,但特别容易写错,尤其是那些刚学完哈希表的小伙伴,容易被绕进去。真正的考点,其实就是你能不能冷静地分析出“先按照 y 分组,再按 x 找对称”,然后套一个巧妙的数学验证逻辑。整场面试里,它不一定最难,但绝对是最“掉坑”的那类。
你看懂了没?没看懂的话,也别急,多敲几遍,跟我当年在公司加班时写 API 一样,写着写着就通了……
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领