被打了低绩效还pua了一顿,结果有次无意发现我工作量在部门数一数二,一边多干活一边绩效还低,感觉自己像个二百五被耍的团团转
有网友吐槽:明明每天忙到飞起,却被打了低绩效,还被“谈话”一通,话里话外都是让你反思态度、提升格局。
更扎心的是,他后来无意看到数据,自己的工作量在部门里排得很靠前,甚至比不少同事多一大截。
哎!活越干越多,评价越做越低,人还被情绪管理一顿,像被当成免费劳动力转着用。
要我说呀,努力就应该被看见,绩效也该有清晰标准:目标、产出、质量、协作,讲证据不讲感觉。
遇到这种情况,先把成果量化留痕,主动对齐指标;如果仍然被压着,那就别只靠忍,及时沟通、争取,甚至考虑换个更尊重价值的地方。
工作是合作,不是消耗。
面试题:以图判树
我跟你们说个特别像线上事故那种感觉的题啊,就是“以图判树”这玩意,看着像算法题,其实跟排查链路一样……你拿到一堆点一堆边,问你:这坨东西到底是不是一棵树。你要是写服务端的,看到“偶发卡死”“重试风暴”,脑子里第一反应不也是:是不是有环?是不是没连上?反正味儿差不多。
树在无向图里,通常就两句话能掐死: 1)边数必须是 n-1,不是就别聊了(少了不连通,多了必有环) 2)还得保证从任意点能走遍所有点(连通),并且走的时候别绕回去(无环)
我一般写法就用并查集,像你们写“去重”“合并集合”那套,一边读边一边 union,union 的时候如果发现俩点本来就在一个集合里,那就等于你新加这条边把自己绕回来了,环出来了,直接 false。最后再看是不是所有点都在一个集合里(或者更省事:边数已经是 n-1 且过程中没环,那它天然就是连通的,这个结论对无向图成立)。
Java 代码我给你们写个干净点的,面试直接贴也行,别整花里胡哨的:
import java.util.*;
publicclassGraphIsTree{
staticclassDSU{
int[] p, r;
DSU(int n) {
p = newint[n];
r = newint[n];
for (int i = 0; i < n; i++) p[i] = i;
}
intfind(int x){
while (p[x] != x) {
p[x] = p[p[x]];
x = p[x];
}
return x;
}
booleanunion(int a, int b){
int pa = find(a), pb = find(b);
if (pa == pb) returnfalse; // 出环了
if (r[pa] < r[pb]) p[pa] = pb;
elseif (r[pa] > r[pb]) p[pb] = pa;
else { p[pb] = pa; r[pa]++; }
returntrue;
}
}
// n: 节点数,编号 0..n-1
// edges: 每条边 [u, v],无向图
publicstaticbooleanisTree(int n, int[][] edges){
if (n <= 0) returnfalse;
if (n == 1) return edges == null || edges.length == 0;
if (edges == null || edges.length != n - 1) returnfalse;
DSU dsu = new DSU(n);
for (int[] e : edges) {
if (e == null || e.length != 2) returnfalse;
int u = e[0], v = e[1];
if (u < 0 || u >= n || v < 0 || v >= n) returnfalse;
if (u == v) returnfalse; // 自环也不是树
if (!dsu.union(u, v)) returnfalse; // union 失败说明有环
}
// 这里其实可以不额外校验连通:无环 + 边=n-1 => 必连通
returntrue;
}
// 随手跑跑
publicstaticvoidmain(String[] args){
System.out.println(isTree(5, newint[][]{{0,1},{0,2},{0,3},{3,4}})); // true
System.out.println(isTree(5, newint[][]{{0,1},{1,2},{2,3},{1,3},{1,4}})); // false 有环且边数不对
System.out.println(isTree(4, newint[][]{{0,1},{2,3},{1,2}})); // true
System.out.println(isTree(4, newint[][]{{0,1},{2,3}})); // false 不连通(边数也不够)
}
}
你看这个思路,跟你排查“为啥卡住”一样:先用一个硬条件把大部分垃圾输入筛掉(边数),然后边走边看有没有“走回老路”的情况(环),别等全跑完才发现。面试官要是追问复杂度,你就说 DSU 基本就是 O(n) 级别(严格说是反阿克曼,反正跟常数差不多)。
行了我先说到这儿……我突然想起来我咖啡好像忘桌上了,等下同事又要说我工位像仓库一样,离谱。