理解技术行业薪酬构成:tech-interview-handbook 的 Base Salary、Bonus、Equity 与签约奖金完整拆解
这篇指南基于 tech-interview-handbook 仓库中的 understanding-compensation 文档 展开,系统拆解科技公司 offer 的四大构成——基本薪资(base salary)、绩效奖金(bonus)、股权/股票(equity/stocks)与签约奖金(signing bonus),并补充 vesting(归属)机制、strike price(行权价)、exercise window(行权窗口)等实操概念。读完本文,你能独立看懂一份 offer 中每个数字的含义,判断不同级别之间的薪资结构差异,并为后续的薪资谈判(见 negotiation 指南)打下基础。
薪酬的总体构成
在决定接受哪份 offer 时,薪酬(compensation)是最重要的因素之一。在大多数科技公司,你的薪酬由三部分组成:
- Base salary(基本薪资)——固定、不受公司业绩影响的唯一非浮动部分;
- Performance bonus(绩效奖金)——按半年或年度发放,取决于职级、个人表现与公司业绩;
- Equity / stocks(股权/股票)——让你拥有公司股份,是科技岗位区别于非科技岗位的关键。
此外还有 signing bonus(签约奖金) 这一一次性现金,以及免费餐食、搬迁补贴等 misc perks(杂项福利)。在拆解每一项之前,先建立这个"总薪酬 = 各分项之和"的框架,是看懂任何 offer letter 的前提。
仓库中的印证:数据模型如何体现这一结构
本仓库不仅把这套知识写成文档,还在 apps/portal 子应用中落地了"提交并分析 offer"的产品(Tech Offers Repo)。从 Prisma 数据模型 的结构看,全时 offer 被建模为 OffersFullTime,字段与文档讲解的薪酬构成一一对应:
model OffersFullTime {
title String
level String
totalCompensation OffersCurrency // TC(总薪酬),必填
baseSalary OffersCurrency? // base,可选
bonus OffersCurrency? // bonus,可选
stocks OffersCurrency? // 股票年化价值,可选
OffersOffer OffersOffer?
}
几个值得注意的设计细节:
- TC 是必填、三个分项是可选:
totalCompensation用非空OffersCurrency关联且带@unique,而baseSalary/bonus/stocks均为可空字段。这正对应了文档的核心观点——不同公司的薪酬结构差异很大(有的公司不给 bonus,有的只给 base),但任何 offer 都必须有一个"总包"口径用于横向比较。 OffersCurrency的汇率归一化设计:每个金额字段同时保存value/currency(原始币种)和baseValue/baseCurrency(默认 USD),这样跨币种 offer 都能在同一基准上比较。仓库中的 货币换算工具 负责完成这种转换。
Base salary(基本薪资)
基本薪资是"你出现在工作岗位上就能拿到的固定金额",不随公司经营好坏或行业景气度波动,是你薪酬中唯一完全非浮动的部分。
文档中给出的经验数据(以湾区为背景):
- 应届毕业生在湾区通常能拿到 USD 100,000 以上(税前)的基本薪资;
- Facebook/Google 的应届基本薪资普遍落在 USD 100,000 – 150,000 区间;
- 创业公司(startup)通常给应届生稍高一点(USD 120,000 – 130,000)——因为早期公司股权还没有流动性(尚未变成真实现金),需要用更高的 base 来补偿。
基本薪资不随资历线性增长,最终会趋缓(taper off)。 员工程度越资深,其薪酬中来自"公司依赖型"成分(bonus 与 equity)的比例就越高。原因是资深员工被期望去影响身边的人、推动整个公司前进,其绩效评估更多基于公司整体表现,而非个人产出。这解释了为什么高级别 offer 里"股票年化价值"往往超过 base 本身(见后文数据表)。
例外情况:一些公司打破惯例。例如 Netflix 支付行业顶格甚至更高的薪资,并允许员工把整个薪酬都折算成 base——即把 equity 部分转成基本薪资。对于风险厌恶型(risk-averse)的求职者,这是一个很好的选项。
Bonus(绩效奖金)
奖金通常按半年(semi-annual)发放,由三个乘数因素共同决定:
| 因素 | 含义 | 说明 |
|---|---|---|
| Level of seniority(职级) | 基本薪资的一个乘数,随职级上升而增大 | 例如应届生 seniority 乘数 10%,资深工程经理 20% |
| Individual performance(个人表现) | 该时期内表现好坏的乘数 | 达到预期(meeting expectations)= 100%;超出预期(exceeding)> 100%。Facebook、Apple 等公司对顶尖表现者奖励丰厚,乘数最高可达 300% |
| Company performance(公司业绩) | 公司整体表现 | 对全体员工使用同一个乘数 |
两个完整计算示例
示例 1:应届 SWE Bob
- base salary:$100,000
- 职级乘数(fresh grad):10%
- 个人表现乘数(crushed expectations):200%
- 公司业绩乘数:120%
Bonus = 100,000 × 50%(半年)× 10%(职级)× 200%(个人表现)× 120%(公司业绩)= $12,000
示例 2:工程经理 Alice
- base salary:$220,000,10 年工作经验
- 职级乘数(experienced EM):20%
- 个人表现乘数(exceeded expectations):150%
- 公司业绩乘数:130%
Bonus = 220,000 × 50%(半年)× 20%(职级)× 150%(个人表现)× 130%(公司业绩)= $42,900
由此可以得出两个结论:一是奖金的金额高度可变(三个乘数都在浮动);二是资深员工从 bonus 中获得的薪酬占比更高——这与上文"base 占比随资历下降"的规律相互印证。
Equity / Stocks(股权/股票)
股权是科技岗位与非科技岗位的分水岭。 它意味着你拥有公司的一份所有权(ownership),并激励你以公司利益为最大前提工作。股权可以占薪酬的很大比例——对资深员工来说甚至可能超过 base salary。
Vesting(归属)与 Cliff(悬崖期)
- 股权通常在一个时间段内归属(vest),即"变成真正属于你的资产"。典型周期是 4 年,可以按每 1/3/12 个月均等归属。
- Vesting cliff(归属悬崖) 指开始归属前必须满足的最短时长。
文档中的经典例子:假设你在 4 年期计划、带 1 年 cliff 的条件下获得 4,800 股、按月归属,则——
- 第 1 年末一次性获得 1,200 股;
- 之后 3 年每月获得 100 股(1,200 + 36 × 100 = 4,800)。
在 IPO 或被收购之前,股权通常一文不值。 虽然公司未上市时也存在内部转卖(internal transfer)的渠道,但参与这类交易前务必想清楚自己签的是什么。
两种股权形式:Options vs Grants
并非所有股权都一样。根据你加入的公司及其所处阶段,你可能拿到以下两种之一:
Stock options(股票期权)
- 通常由中期阶段(mid-stage)公司发放。
- 期权与股票不同:股票代表对公司的即时所有权;而期权是以约定的 strike price(行权价)购买股票的权利/选项,因此它不是免费的。
- 每股成本通常很低,且锁定在**授予时股票的公允价值(fair market value)**上。无论未来股价涨到多高,你都有权按这个价格买入。
- 离职时存在 exercise window(行权窗口)——在期权作废前你必须行权的截止时间。因此规划离职时,手里要有足够的流动资金把它们买下来。
Stock grants(股票授予,即 RSU)
- 通常被称为 Restricted Stock Unit(RSU,限制性股票单元),意味着你立即拥有这些股票。
- 如果公司已经上市,你可以在公司规定的交易窗口(trading window)内卖出。
Signing bonus(签约奖金)
这是一笔入职时支付的一次性总额(one-time lump sum),典型范围在 USD 10,000 – 20,000,最高可到 USD 50,000(Google) 乃至 USD 100,000(Facebook)。
注意附带的条件:签约奖金常附带"若在满 1 年前离职需按比例退还"(clawback / pro-rated return)之类的条款。在签署 offer 前务必确认你清楚这些条款。
Misc bonuses / perks(杂项福利)
这些福利虽然不是直接的现金,但能帮你省钱,效果接近于额外薪酬。如果有机会,向你的 recruiter 多问这些细节:
- 免费餐食:湾区食物并不便宜,工作日提供餐饮每年可省下几千美元,还省去了外出觅食的时间;
- 搬迁奖金(relocation bonus):对跨国/跨城搬迁者有用,可部分抵消搬迁成本;
- 医疗与牙科保险/计划:公司通常与保险公司合作为员工提供健康与牙科计划,每年价值可达数千美元,在医疗昂贵的地区尤其重要;
- 班车服务(shuttle service):湾区公共交通一般,最常见的通勤方式是开车。能坐班车可以省下油费、交通费,并腾出通勤时段的精力。
各级别薪酬参考:Google 与 Facebook 数据
文档引用了来自社群贡献的数据(截至 2021 年 8 月,来源为 Levels.fyi 的公开众包薪酬统计),展示 Google 与 Facebook 各级别的总薪酬拆分:
| Level | Total (USD) | Base | Bonus | Stock (/yr) |
|---|---|---|---|---|
| L3 (Entry Level) | $191,000 | $131,000 | $21,000 | $39,000 |
| L4 (SWE) | $267,000 | $158,000 | $28,000 | $81,000 |
| L5 (Senior SWE) | $355,000 | $188,000 | $37,000 | $130,000 |
| L6 (Staff SWE) | $489,000 | $223,000 | $50,000 | $214,000 |
| L7 (Senior Staff SWE) | $672,000 | $263,000 | $79,000 | $330,000 |
| L8 (Principal Engineer) | $1,020,000 | $331,000 | $119,000 | $572,000 |
| Level | Total (USD) | Base | Bonus | Stock (/yr) |
|---|---|---|---|---|
| E3 (Entry Level) | $180,000 | $122,000 | $14,000 | $43,000 |
| E4 (SWE) | $267,000 | $162,000 | $18,000 | $85,000 |
| E5 (Senior SWE) | $390,000 | $197,000 | $35,000 | $157,000 |
| E6 (Staff SWE) | $598,000 | $234,000 | $54,000 | $309,000 |
| E7 (Senior Staff SWE) | $921,000 | $272,000 | $81,000 | $567,000 |
这两张表直观验证了前文的理论:越往高级,base 增长放缓,而股票年化价值的占比持续上升(Google L8 的股票年化价值 $572,000 约为 base $331,000 的 1.7 倍)。需要注意,这是 2021 年 8 月的时点数据,只适合用来理解"结构比例",具体金额会随市场波动,应以最新公开的众包薪酬数据为准。
仓库源码中的实践佐证:从文档到产品的闭环
tech-interview-handbook 仓库把"理解薪酬"这一知识模块直接转化为产品功能,可作为上文理论的工程化印证(以下均来自 apps/portal 子应用):
- 薪酬分项的数据落地。如前所述,schema.prisma 中的
OffersFullTime用 baseSalary/bonus/stocks/totalCompensation 四字段建模一份 offer,与文档的构成框架完全一致;实习生 offer 则单独建模为OffersIntern(monthlySalary+internshipCycle),对应文档中"internship 用月薪口径"的现实差异。 - 真实数据的导入管道。seed-salaries.ts 展示了 offer 数据的完整入口:它读取 salaries.xlsx 中的
Income / Stocks / SignOn / Bonus / TC列,将 SGD 金额通过 currencyExchange 归一化为 base 币种后写入数据库,并按角色归类职位(getJobTitle)、按 FRESH GRAD / MID / SENIOR 推断工作年限与职级(getYoe/getLevel)。可以看到,数据源里的SignOn列正是本文"签约奖金"一节在真实数据中的对应物。 - offer 分析功能。analysisGeneration.ts 实现了对比与百分位计算:
getSimilarOffers选取同一地点、同一职位(title)、收到时间在过去一年内、工作年限相差 ±1 年的相似 offer,按 TC(baseValue排序)降序排列;calculatePercentile则在去重后算出你的 offer 所处的百分位(代码注释标明OFFERS MUST BE ORDERED)。这与本文"看懂分项、比较总包"的阅读方法一致:先归一到同一口径(baseValue),再横向对比。
从源码结构看,这套实现强化了文档的一个隐含建议:比较 offer 时必须把 base/bonus/stocks 拆开后统一口径,再看 TC——这正是"理解薪酬"从理论走向实操的方式。
小结
- 一份 offer = base salary(固定)+ bonus(三乘数浮动)+ equity(4 年 vesting,注意 cliff 与行权窗口)+ signing bonus(一次性,注意退还条款)+ perks(省钱型福利);
- 判断结构时要关注比例变化:职级越高,bonus 与股票占比越大,base 占比越小;期权(options)≠ 股票(grants/RSU),前者需要行权资金,后者立即拥有;
- 理解了构成之后,下一步就是学会谈。仓库中的 negotiation 指南 与 ten rules of negotiation 提供了谈判策略与谈判服务方面的延伸阅读。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0627
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
