大家好,我是苍何。
最近,字节发了全员邮件,对全年激励方案做了一轮调整,这次调整将使得绩效越高的同学获得更多的期权奖励,年终奖也会有大幅提升。
做了下提炼,主要有以下几个要点:
1、结构变化
现金与期权/RSU 共同构成
现金奖金最高可达 3 个月薪资
高绩效同学可获得“绩效期权/RSU
2、绩效期权/RSU 总额更大
计算基数变大:由日薪变为月总包计算
额外发放比例:增加一定比例股份(通常为 10%)
3、归属时间加速
最快立即归属,最慢不超过 2 年
归属后可全额申购
4、细节优化
方案基础上加大激励,激励周期限制提升
绩效期权/RSU 低于 10 股时,将以现金形式一次性发放
不愧是宇宙厂,调整幅度还挺大的,不过总体而言,更加有利于高绩效的同学,而对于绩效普通的人来说,貌似不会有太大变化。
这次调整的目的也很明显,互联网不鼓励大锅饭,而是有严格的绩效考评,高绩效的会得到更多,而对于低绩效,就有可能会被淘汰出局。
这感觉之后的竞争会更加激烈,说的好听些,你叫竞争,说的不好听些,这就是内卷。
果然,字节和心脏只有一个能跳动不是开玩笑的,不过能在宇宙厂当牛马,福利薪资那是相当到位的,你看今年给的这情况,26-30 k 都属于白菜价段位了,不少的 SSP 开的简直让人心动。
其中算法岗就直接开到了 100 w 总包 + 股票,就问你恐怖不恐怖。
无论从最近的豆包更新动作,还是招聘的大模型相关人才都是往狠了给来看,AI 都将是未来的大趋势了。
就像马爸爸说的:
我们要让 AI 赋能我们的情怀,我们也要让情怀去赋能我们的 AI。
AI+科技+情怀,是马总给的答案。
刚好苍何今天看了吴军老师的《见识》一书,里面讲到新的科技从出现到成为潮流必经的过程如何「发现第三眼美女」。
大概意思是说新技术的迭代会有一个过程,一开始是在内部专业的技术圈子里火了,也只是专业人员使用,后面慢慢开始大众也使用了解,但是因为价格昂贵,并无法普及,最后价格下来了也创造了更多的应用价值。
我觉得当下的 AI,可能处于第一和第二阶段,慢慢大众普及,但无论是大模型的训练成本、算力等一系列问题上都无法跨越一道坎。
但随着时间的推移,我们一定到达第三阶段,就像当年的 PC、移动互联网一样。AGI 的时刻一定会加速到来。
好啦,对于字节年终奖大涨这事,你有什么补充的呢?欢迎评论区讨论。
...
回归主题。
今天来一道字节开发考过的一道面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:322
题目描述:零钱兑换
给你一个整数数组 coins
,表示不同面额的硬币;以及一个整数 amount
,表示总金额。
计算并返回你可以凑成总金额所需的最少硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1
。
你可以认为每种硬币的数量是无限的。
示例 1:
输入:
coins = [1, 2, 5], amount = 11
输出:
3
解释:11 = 5 + 5 + 1
示例 2:
输入:
coins = [2], amount = 3
输出:
-1
示例 3:
输入:
coins = [1], amount = 0
输出:
0
提示:
1 <= coins.length <= 12
1 <= coins[i] <= 2^31 - 1
0 <= amount <= 10^4
解题思路
这是一个完全背包问题,求组成指定金额所需的最少硬币数量。我们可以使用动态规划来解决该问题。
状态定义:
定义dp[i]
表示凑成金额i
所需的最少硬币个数。状态转移方程:
对于每一个金额j
和每一个硬币面额coin
:其中,
dp[j - coin]
表示去掉当前硬币面额后剩余金额所需的最少硬币个数。
如果当前硬币可以用于组成金额
j
,则:dp[j]=min(dp[j],dp[j−coin]+1)dp[j] = \min(dp[j], dp[j - coin] + 1)
初始化:
dp[0] = 0
,表示金额为 0 时所需的硬币个数为 0。其他
dp[i]
初始化为一个较大的值(例如amount + 1
),表示尚未求解。
最终结果:
如果 dp[amount]
仍然是初始的较大值,则说明无法凑出 amount
,返回 -1
;否则返回 dp[amount]
。
代码实现
Java 代码
import java.util.Arrays;
public class CoinChange {
public int coinChange(int[] coins, int amount) {
// 初始化 dp 数组,dp[i] 表示凑成金额 i 所需的最少硬币个数
int[] dp = new int[amount + 1];
Arrays.fill(dp, amount + 1); // 初始化为一个较大的值
dp[0] = 0; // 金额为 0 时,不需要硬币
// 遍历每个硬币面额
for (int coin : coins) {
for (int j = coin; j <= amount; j++) {
dp[j] = Math.min(dp[j], dp[j - coin] + 1);
}
}
return dp[amount] == amount + 1 ? -1 : dp[amount];
}
}
C++ 代码
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
// 初始化 dp 数组,dp[i] 表示凑成金额 i 所需的最少硬币个数
vector<int> dp(amount + 1, amount + 1);
dp[0] = 0; // 金额为 0 时,不需要硬币
// 遍历每个硬币面额
for (int coin : coins) {
for (int j = coin; j <= amount; ++j) {
dp[j] = min(dp[j], dp[j - coin] + 1);
}
}
return dp[amount] == amount + 1 ? -1 : dp[amount];
}
};
Python 代码
def coinChange(coins, amount):
# 初始化 dp 数组,dp[i] 表示凑成金额 i 所需的最少硬币个数
dp = [amount + 1] * (amount + 1)
dp[0] = 0 # 金额为 0 时,不需要硬币
# 遍历每个硬币面额
for coin in coins:
for j in range(coin, amount + 1):
dp[j] = min(dp[j], dp[j - coin] + 1)
# 如果 dp[amount] 仍然是初始值,说明无法凑出 amount
return dp[amount] if dp[amount] != amount + 1 else -1
# 测试示例
print(coinChange([1, 2, 5], 11)) # 输出:3
print(coinChange([2], 3)) # 输出:-1
print(coinChange([1], 0)) # 输出:0
复杂度分析
时间复杂度:O(n * amount),其中
n
是硬币的种类数,amount
是目标金额。
遍历每个硬币面额,内层循环遍历目标金额范围。
空间复杂度:O(amount),用于存储 dp
数组。
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【大涨】,在后台回复【大涨】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。
注意,后台(不是评论区,是后台)回复【大涨】即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
就像大家之前回复【八股】一样。