跟hr谈的月薪4w,但offer上工资构成是基本工资1w+绩效工资3w,有坑吗?
最近在网上看到一个帖子,一个老哥发了个灵魂拷问:“跟HR谈好4w月薪,结果 offer 上写的是基本工资 1w + 绩效工资 3w,这有坑吗?”
兄弟,这哪是坑啊,这是地道的“陷阱+机关+暗雷”三合一套餐啊!
作为一个资深程序员,咱们来拆解下这波操作。
1. 绩效占比 75%?稳不稳?要是绩效能拿满,那你是赚的。但问题是,公司真会每个月乖乖给你发 3w 吗?大概率不会,绩效考核随便搞点 KPI,一不小心就扣个 20%、30%,到头来工资直接缩水。
2. 五险一金按基本工资缴?如果公司按 1w 交社保,那你的公积金、养老保险统统变少,房贷少贷几十万不说,以后退休金也得少领。
3. 裁员补偿怎么算?如果哪天公司跟你“缘分已尽”,裁员赔偿很可能只按 1w 算,而不是 4w,那直接亏麻了。
所以,碰到这种情况,记得让 HR 写清楚 “绩效工资发放标准、比例、最低保障”,别到时候变成白嫖打工人。【备注:文末可领最新资料】。
算法题:奇怪的打印机
好的,这道“奇怪的打印机”题目(Strange Printer)其实是一个典型的动态规划(Dynamic Programming,DP)问题。大致意思是:
你有一个特殊的打印机,每次可以打印一个连续的相同字符子串,并且你可以多次打印,问最少需要多少次操作才能把目标字符串打印出来。
这道题有点像是“最优分割”问题,关键是找出字符串的重复性和最优打印顺序。
首先,暴力解法是遍历所有可能的打印方式,复杂度高得离谱,不可取。优化的方法是使用动态规划。我们定义 dp[i][j] 表示从 i 到 j 这段子串的最少打印次数。那么如何转移呢?
如果 s[i] == s[j],可以让 j跟着i一起打印,不增加打印次数。否则,我们需要找一个最优的分割点 k,让 dp[i][j] = min(dp[i][k] + dp[k+1][j]),其中i ≤ k < j。
来点代码示例👇:
def strangePrinter(s: str) -> int:
n = len(s)
if n == 0:
return 0 dp = [[0] * n for _ in range(n)]
for i in range(n):
dp[i][i] = 1 # 只打印一个字符,显然只需要一次
for length in range(2, n + 1): # 子串长度
for i in range(n - length + 1):
j = i + length - 1
dp[i][j] = dp[i+1][j] + 1 # 先假设独立打印 s[i],然后处理 s[i+1:j]
for k in range(i, j): # 尝试找一个 k,把 s[k] 当成分界线
if s[k] == s[j]: # 关键优化:让 s[k] 和 s[j] 一起打印
dp[i][j] = min(dp[i][j], dp[i][k] + (dp[k+1][j-1] if k + 1 <= j - 1 else 0))
return dp[0][n-1]
# 测试
print(strangePrinter("aba")) # 输出:2
print(strangePrinter("aaabbb")) # 输出:2
解释下这个代码:
dp[i][i] = 1:一个字符的情况下,最少打印次数就是 1。dp[i][j] = dp[i+1][j] + 1:假设单独打印s[i],然后处理剩下的s[i+1:j]。如果 s[k] == s[j],就能让s[k]和s[j]一起打印,减少一次打印次数,这样dp[i][j]取最小值。
这题的时间复杂度是 O(n^3),主要是因为我们有三重循环(i, j, k),但因为 n 最多 100,所以还算能接受。
这题让我想起当年做 PPT 的经历:
s[i] == s[j]的时候,就像 PPT 的某几页可以用 母版 统一格式,节省修改次数。dp[i][j] = dp[i+1][j] + 1这种策略,则像是每一页手动编辑,没啥优化的地方,结果累死自己。而聪明的 s[k] == s[j]让s[k]跟s[j]一起打印,跟 批量替换 一个道理,节省重复劳动。
所以,程序员写代码跟做 PPT 是一样的,关键是要学会找 最优的批量操作,不然天天加班。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。