刚入职就被大领导点名去带三十人的团队,薪资还要涨70%,靠谱不?
刚看到个程序员吐槽,刚入职没多久就被大领导点名去带三十人的团队,薪资还要涨70%。看着挺美是不是?但大家第一反应都是:这是不是个大坑?
我觉得这事吧,程序员圈子里见怪不怪了。能给你这么大提升,绝对不是白捡的馅饼,大概率是前面已经“炸”过一拨人,或者团队乱成一锅粥急需背锅侠。网友的回帖也挺有意思,有的说“先问清楚团队为啥缺人”,有的直接建议“钱到位,别怕事”。
从程序员视角讲,带人和写代码完全是两套能力,你会写bug不代表你能带好人。70%涨薪,可能意味着300%的麻烦。建议别光盯着钱,得问清楚责任和资源,别成了背锅侠还没地方申诉。毕竟,打工人最怕的不是累,是累了没人理解。【备注:文末可领最新资料】
面试题:编辑距离
其实这个编辑距离,咱们写代码这么多年,不说都忘了怎么念出来,英文叫Levenshtein Distance。它是啥意思呢?简单点说就是,给你两个字符串,比如"kitten"和"sitting",你最少通过多少步操作(插入、删除、替换)能把一个变成另一个,这步数就是编辑距离。
你要问为啥公司喜欢考这个,可能是太能考察基础了。真不是开玩笑,有一次我们组面试新同学,问这题,后面一群人光写递归,写着写着直接死循环了……
说正事,说实话一开始我也懒得写,后来想想,这玩意其实核心思想就一句话:动态规划。就是用一个二维数组dp,dp[i][j]表示第一个字符串的前i个字符变成第二个字符串的前j个字符,最少要多少步。然后就开始推呗。
比如你有两个字符串word1和word2。 你要做的三种操作:
插入,比如word1插个字符让它变得更像word2 删除,直接砍掉一个字符 替换,这个就不用说了,改一个字符变成目标
场景随便举一个,上次我们系统要做模糊搜索,老板说只要查出来差不多的都行,结果发现用编辑距离搞一搞比起乱七八糟自己拼正则靠谱多了。
代码这块,用Python真是舒服,随手写下:
defminDistance(word1, word2):
m, n = len(word1), len(word2)
dp = [[0]*(n+1) for _ in range(m+1)]
# 初始化边界
for i in range(m+1):
dp[i][0] = i
for j in range(n+1):
dp[0][j] = j
# 开始填表
for i in range(1, m+1):
for j in range(1, n+1):
if word1[i-1] == word2[j-1]:
dp[i][j] = dp[i-1][j-1]
else:
dp[i][j] = min(
dp[i-1][j], # 删除
dp[i][j-1], # 插入
dp[i-1][j-1] # 替换
) + 1
return dp[m][n]
我印象很深啊,那会我在公司楼下抽烟,突然群里有人喊说"兄弟,这玩意怎么降维写?"其实就是把二维数组优化成一维,其实大部分面试不用,你就把原始写法背熟就行了,实战够用了。
有朋友说面试官会让你追问一下,能不能只用一维空间。也行,倒着滚一遍,别把自己绕晕了。代码懒得贴了,真想优化自己写着玩就懂。
哦对了,还有人爱问能不能看转移方程啊,递推公式啥的。其实根本不用记,理解就是:
两个字符一样?不用操作,继承之前状态 不一样?看插入、删除、替换,取最小值再加一
就这样,编辑距离这玩意看着挺唬人,真写起来也就那几步,实在没啥好玄乎的。你要是用在自然语言处理、拼写纠错啥的,感觉用的机会还是挺多的。闲了没事可以刷LeetCode第72题,连测试用例都给你备好了。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领