华为今年的校招薪资。。。

22,628 阅读3分钟

华为薪资情况更新与分析

这是一篇临时加更的文章,主要对小伙伴的纠结进行一些答疑。

至于原定今天要谈的,阿里和京东那小小的十个亿,也只能稍稍往后了。

节前我们分享了最新的 华为校招开奖情况,当时时间是 2023/12/23,冬至前后。

当时给出的薪资岗位统计数据,来源于牛客网在小红书上的分享。

我这里调选一些和咱们小伙伴相关性高的岗位,再简单提一下,

  • AI 工程师 - 32k * (14-16) - 年包约 48W(不算加班费)- 211硕士 - 上海
  • 软件开发 - 25k * (14-16) - 年包约 36W(不算加班费)- 985硕士 - 上海
  • 大模型研究员 - 年包 30W(不算加班费)- 211硕士 - 武汉
  • OD - 12k - 年包 14.4W(不算加班费)- 985本 - 深圳

在此基础上,增加 1-2k 的城市浮动:

如果参考资料 base 是上海,那么折算到非一线城市要往下减 2k;

如果参考资料 base 是东莞,那么折算到一线城市可以往上加 2k。

另外,这里特殊强调了一下,这是不算加班费统计出来的年包收入。

因为上次将开奖情况发出之后,不少华为的小伙伴现身说法:加班有加班费(OD 也有),但加班是长期的,且强制的

因此拉长到一年来看,这部分收入对总收入影响是较大的。

在这种节奏氛围下,offer 的抉择是需要结合自身的承受能力来判定的

对于「毕业不久」或是「经济环境想要通过就业来提升一个阶级」的小伙伴,有付出就有回报,且时薪不算低的华为,确实可以作为排名前几的候选方案。

但需要清晰认识到:这种愿意给时间就给你换钱的企业,既然有这种规则,那么交换的权利自然并不在员工手上,进入了这样的环境,意味着你需要长期用 5×85 \times 8 以外的时间去换钱。这可不是一次两次的事情,是一个长期关系。

这里可能会有涉世未深的同学发问:为啥华为要这么搞,反正都要给加班费,为什么要把人的工作量拉满,用加班的钱多请一个人不行吗?

这是一个很有意思的问题。

具体的数据没有,但用简单的「劳动市场规则」和「经济原则」认知就可以分析出答案。

公司的用人成本除了可划分的工资以外,还有另外一部分成本是无法划分,跟人头绑定的,以及人数增加带来的其他隐形成本。

我们可以先忽略其他隐形成本,既然华为决定决定给加班费而不是多请一个人,必然是"基本满足"如下不等式:

A人头成本+A工资B人头成本+B工资+C人头成本+C工资A人头成本 + A工资 \leq B人头成本 + B工资 + C人头成本 + C工资

因此华为才不会把 A 的活拆成两份,去请成 B 和 C 两个人。

更残忍的现实是,哪怕有一天上述公式的关系发生翻转,华为也大概率不会转向节奏

因为,在质量保证的情况下,一个活由两个人共同完成相比于由一个人独自完成,沟通成本和维护依赖链,都会成倍增加。

更何况,控制人数接近于"刚好"的范围,可以最大化提高岗位薪资,这对于「降低老员工流失率」以及「提高对新员工的吸引力」都有正面作用

在进一步的对外企业形象上,也会因为这样的节奏氛围被贴上,至少在资本看来是正面的"狼性"标签。

因此,上述其实只是一个伪等式,上面只是给大家一个大概印象,我写的也只是"基本满足"。

如果华为现在转型为养老厂,将会有大量好处被变为成本负债,出现在等式右边,最终成为否决转型为养老厂的经济理由。

综上,其实华为作为一家成熟企业,而且可能是全中国对外承受压力最大的企业,选择把弦拉满绷紧,其实并不难理解。

对我们普通人而言来说,在钟意华为薪资待遇的同时而又埋怨节奏氛围,是没有意义的。

因为是有了会扎人的蜜蜂,才有的蜜糖。

我们只要理解清楚这种劳务关系,搞清楚自己能否接受这样的长期关系,就可以了。

......

一转眼,又到了我们的主线任务,看到一道和「华为」相关的题目。

除了华为,近期还在「字节算法岗」一面要求手撕。

题目描述

平台:LeetCode

题号:739

给定一个整数数组 temperatures,表示每天的温度,返回一个数组 answer,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:

输入: temperatures = [73,74,75,71,69,72,76,73]

输出: [1,1,4,2,1,1,0,0]

示例 2:

输入: temperatures = [30,40,50,60]

输出: [1,1,1,0]

提示:

  • 1<= temperatures.length<=1051 <= temperatures.length <= 10^5
  • 30<= temperatures[i] <=10030 <= temperatures[i] <= 100

单调栈

抽象题意为 : 求解给定序列中每个位置(右边)最近一个比其大的位置,可使用「单调栈」来进行求解。

具体的,我们可以从前往后处理所有的 temperatures[i]temperatures[i],使用某类容器装载我们所有的「待更新」的位置(下标),假设当前处理到的是 temperatures[i]temperatures[i]

  • 若其比容器内的任意位置(下标)对应温度要低,其必然不能更新任何位置(下标),将其也加入容器尾部(此时我们发现,若有一个新的位置(下标)加入容器,其必然是当前所有待更新位置(下标)中的温度最低的,即容器内的温度单调递减);

  • 若其价格高于容器内的任一位置(下标)对应温度,其能够更新容器位置(下标)的答案,并且由于我们容器满足单调递减特性,我们必然能够从尾部开始取出待更新位置来进行更新答案,直到处理完成或遇到第一个无法更新位置。

由于我们需要往尾部添加和取出元素,因此容器可使用「栈」。

Java 代码:

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int n = temperatures.length;
        int[] ans = new int[n];
        Deque<Integer> d = new ArrayDeque<>();
        for (int i = 0; i < n; i++) {
            while (!d.isEmpty() && temperatures[d.peekLast()] < temperatures[i]) {
                int idx = d.pollLast();
                ans[idx] = i - idx;
            }
            d.addLast(i);
        }
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& temperatures) {
        int n = temperatures.size();
        vector<int> ans(n);
        deque<int> d;
        for (int i = 0; i < n; i++) {
            while (!d.empty() && temperatures[d.back()] < temperatures[i]) {
                int idx = d.back();
                ans[idx] = i - idx;
                d.pop_back();
            }
            d.push_back(i);
        }
        return ans;
    }
};

Python3 代码:

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        n, he, ta = len(temperatures), 0, 0
        ans, stk = [0] * n, [-1] * n
        for i in range(n):
            while he < ta and temperatures[stk[ta - 1]] < temperatures[i]:
                ta -= 1
                idx = stk[ta]
                ans[idx] = i - idx
            stk[ta] = i
            ta += 1
        return ans

TypeScript 代码:

function dailyTemperatures(temperatures: number[]): number[] {
    const n = temperatures.length
    const ans = new Array<number>(n).fill(0)
    const stk = new Array<number>(n).fill(-1)
    let he = 0, ta = 0
    for (let i = 0; i < n; i++) {
        while (he < ta && temperatures[stk[ta - 1]] < temperatures[i]) {
            const idx = stk[--ta]
            ans[idx] = i - idx
        }
        stk[ta++] = i
    }
    return ans
};
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n)

我是宫水三叶,每天都会分享算法题解,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉