00后员工给我发“CNM”,是不是在骂人?
刚刷到个贴子,有网友发问说:自己是领导,收到00后员工发的“CNM”,结果员工解释说是“纯牛马”...让大家帮忙看看这是不是在骂人
我觉得这事吧,从一个程序员角度看,其实蛮像我们在代码 review 里的“黑话文化”。有些话,看着像中性,背地里其实早就吐槽完一轮了。00后这代人,玩梗能力是一绝,嘴上说“纯牛马”,心里估计早把你。。。
网友们的回帖我也看了,大多都在讨论是不是故意骂人,但我觉得重点不在这。问题的核心是代际之间的沟通彻底断了。管理者不懂年轻人的表达方式,年轻人也懒得对你“兼容旧系统”,最终的 bug 就是误会越来越多。
从我的角度看,既然想带团队,就要了解团队。不是你要跟他们做朋友,但起码得明白他们说的话什么意思⚙️否则,沟通就是404。【备注:文末可领最新资料】
面试题:最多连胜的次数
那天在地铁上,我旁边那哥们打王者,输了一局就骂队友不配玩游戏,然后我突然想到一个事儿——如果让你写个函数去算他连续赢几把,最多连胜几局,你知道该怎么写吗?就那种,赢了算+1,输了就断了的那种。
其实这个需求蛮常见的,像做那种连续签到啊,连胜活动啊,逻辑都是一样的。输入一串“胜败记录”,输出最大连续“胜”的数量。我们用 Python 写个最通俗易懂的实现。
一段公交车上写的代码
我那天手机没电,在公交车上拿小本子写的伪代码,后来回到公司敲出来就变成下面这样:
defmax_consecutive_wins(results):
max_win = 0
current_win = 0
for r in results:
if r == "W":
current_win += 1
max_win = max(max_win, current_win)
else:
current_win = 0
return max_win
这玩意儿干啥用的呢?就比如你传进去一个字符串 "WWLWWWLW",它就能告诉你里面最多连续几个 W,也就是赢的场次。我测了下,这个例子返回是 3,没错吧?前三场赢、然后输了、然后三连胜、再输一把——最大连胜就是后面那三连。
为什么我不用列表?因为...懒得折腾
其实也可以搞个 list 存每段 win 的长度,比如:
wins = []
cur = 0
for r in results:
if r == 'W':
cur += 1
else:
if cur > 0:
wins.append(cur)
cur = 0
if cur > 0:
wins.append(cur)
return max(wins) if wins else0
这个版本也行,但你有没有觉得有点罗嗦?后来我想想,其实根本不需要记住所有段,只要记录“当前段有多长”“历史最大有多长”就够了。
那时候搞个“连续签到领红包”的活动,逻辑是用户登录历史拉出来一串布尔值(True 表示签到成功,False 表示漏签),然后要算最多连续签到多少天。他一开始用什么 itertools.groupby,我看了脑壳疼,直接叫他换成计数器方式,代码瞬间简洁一半不说,还不容易出 bug。
assert max_consecutive_wins("LWLWLWL") == 1
assert max_consecutive_wins("WWWLWWW") == 3
assert max_consecutive_wins("LLLL") == 0
assert max_consecutive_wins("") == 0
assert max_consecutive_wins("WWWWWW") == 6
这些 case 要是你都没考虑过,那上线之后一踩雷你别怪谁。特别是空串和全输,全赢的场景,测试得过。
本来还想扯点动态规划的,但这题真不需要,思路清晰的逻辑判断就够了。回头小王问我这个怎么优化成 O(1) 空间,我就让他别卷了,赶紧下班。
行了我得走了,等下外卖到了,还得去前台拿披萨。你要是这题写明白了,记得教教你那个总爱写一堆 if-else 的同事。
-END-
我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领