不愧是字节,这薪资。。。

1: 字节 2023 年秋招工资

前有PICO裁员,后有朝夕光年大规模业务收缩。年底了,字节的薪资还能跳的动吗?

很多人充满了好奇,那我们一起来看看。

下面是字节 2023 年秋招工资

07ffe2692a84a5de1dbb68a13baef757.jpeg

6ff5809b3eecbb6ab88f829de4ca69b6.jpeg

ce1a452395f7a9629b6120aa04eebac5.jpeg

几点总结:

  • 首先说说算法岗位,这可是个高薪领域。普通水平的算法工程师年薪大概在40万到55万之间;

  • 后端开发的话,36w到48w区间,主要还是看个人能力;

  • 测开比后端/算法低 2~3k,测开和开发同薪同酬基本不太存在。

另外,字节的签字费也很有吸引力。一般来说,签字费是1万,但这个还可以谈,看你的实力和手里有没有其他的offer。特别提一下,客户端开发的签字费特别高,高达八九万,因为大家都知道,客户端开发的前景现在不太乐观,所以招人比较难。

除了工资,字节还提供租房补贴。具体来说,北京是每月1500元,上海1000元,杭州800元,重庆500元。而且,字节还有自己的食堂,所以你可以享受三餐免费,不过这个待遇不确定是否在所有城市都有。另外,住房公积金是按照12%的最高比例缴纳的。

是不是感觉很心动?看完字节的薪资待遇,我相信很多小伙伴都会更加向往大厂了。如果你有时间和精力,不妨为2024年制定一个新的学习计划,向着梦想的大厂迈进!

2: 字节的薪资体系

各位小伙伴可能都很好奇,进了字节跳动,拿到高薪后,工资涨幅会怎样?薪资体系又是什么样的?那就让我们一起来深入了解一下字节的薪酬体系吧!

说到字节,他们是根据不同的岗位级别来设定薪资范围的。来看看一位内部员工透露的信息吧。在字节,从1-2到2-1级别的岗位,一般都是执行层级,通常工作经验在五年以下。如果你能升到2-2级别或以上的研发岗位,年薪加上股权的总收入,基本上可以超过一百万!

a22219fcb6c5e9b2763c3dbb0ccbc08c.jpeg

看到这个收入,很多同为高级研发,技术经理的同学,说不羡慕肯定是有点言不由衷的。下面就是字节跳动某个2-2同学的工资,光看个人所得税,就超过了很多人的工资了。

bce3ed152167814c1c76933826cfeb5f.jpeg

3: 字节面试真题

其实无论是上文我们提到的秋招工资,还是关于个人的薪酬体系。自己能力才是最核心的。按照上面我们介绍的,目前字节一如既往的喜欢或者是钟爱算法工程师。不管面试岗位是那个方向,算法都是面试字节跳不过去的坎。

那么接下来我们一起来看看LeetCode上面字节最常考的题目吧,另外我也会使用GPT来一起帮助我解决这些难题。一边刷题,一边学习AI的Propmt技巧,这就是学习刷题两不误。后面我也会把我使用propmt贴出来方便大家使用。

我们先找找字节最常考的题目吧:

高频算法题系列:链表

【🔥】【有真题】高频算法题系列:字符串

【🔥】【有真题】高频算法题系列:数组问题

高频算法题系列:二叉树

【🔥】高频算法题系列:排序算法

【🔥】高频算法题系列:二分查找

【🔥】高频算法题系列:动态规划

高频算法题系列:BFS

【🔥】高频算法题系列:栈

【🔥】高频算法题系列:DFS

【🔥】高频算法题系列:回溯算法

这里我们就选择BFS的栈来试试手吧!说到栈大家刷的稍微有点难度的应该就是单调栈了。那么我们一起来试试。先尝试自己写一个版本,然后使用GPT再给我生成一个版本吧!

关于栈的题目这里推荐三道,分别是LeetCode中的第155、20以及84题目。

155 Min Stack

20 Valid Parentheses

84 Largest Rectangle in Histogram

这里我们就用第84题目来练手,一起来看看具体的题目:

题目要求

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:

6d067f4811bf4e2a77ca42f95547e0d2.jpeg

输入:heights = [2,1,5,6,2,3] 输出:10 

解释:最大的矩形为图中红色区域,面积为 10

示例 2:  

7f4e5de8bfd845e68ebae5e5dab5ee0c.jpeg

输入: heights = [2,4] 输出: 4

提示:

  • 1 <= heights.length <=10(5)

  • 0 <= heights[i] <= 10(4)


题目解析

最简单的方式就是直接暴力枚举,我们尝试使用不断迭代两两之间的柱子,然后找到最小高度,求的面积即可。最后完成整个迭代之后,找到最大的面积。

然后我们来编码实现一下:

public int largestRectangleArea01(int[] heights) {
        // 数据校验
        if (heights==null||heights.length==0)
            return 0;
        // 假设最大面积
        int area = 0;
        for (int i = 0;i<heights.length;i++){
            for (int j = 0;j<heights.length;j++){
                // 假设最小柱子高度
                int minHeight = heights[i];
                // 迭代后续的柱子 获取到最低的柱子
                for (int k = i+1;k<=j;k++)
                    minHeight = Math.min(minHeight,heights[k]);
                // 求两个柱子间的面积
                area = Math.max(area,(j-i+1)*minHeight);
            }
        }
        return area;

    }

当然这种写法会并不会通过,你会获取到一个超时。那么有没有更好的解法呢?

2beaca0be89aef785df32fb305ac97cf.jpeg

更加优化的写法,我们可以尝试使用左右指针。我们每次都假设当前获取的元素current是整个矩形的最大面积的最高值,然后分别使用left和right指针去查看是否存在比当前current更高的元素。如果存在left继续往左走,right继续往右走。那么代码设计如下:

public int largestRectangleArea02(int[] heights) {
        // 校验
        if (heights==null||heights.length==0)
            return 0;
        // 假设最大面积
        int area = 0;
        for (int i =0;i<heights.length;i++){
            // 当前最大高度
            int curHeight = heights[i];
            // left 索引就是i
            int leftIndex = i;
            // 判定left是否需要左移
            while(leftIndex-1>=0&&heights[leftIndex-1]>=curHeight)
                leftIndex--;
            // right 索引就是i
            int rightIndex = i;
            // 判定right是否需要右移
            while(rightIndex+1<heights.length&&heights[rightIndex+1]>=curHeight)
                rightIndex++;
            // 计算面积 就是右侧-左侧 乘以 假设的最大高度
            area = Math.max(area,(rightIndex-leftIndex+1)*curHeight);
        }

        return area;

    }

上述解法,一样会得到一个超时。

6dbb306cf8abb79968f8da186c87e2e0.jpeg

那么接下来我就使用GPT,帮助我来求解一下,看看它会如何解答?我们先看看给我们提供的代码:

public int largestRectangleArea02(int[] heights) {
    Stack<Integer> stack = new Stack<>();
    int maxArea = 0;
    for (int i = 0; i <= heights.length; i++) {
        // 当前高度(处理到最后一个元素后用0作为哨兵)
        int h = (i == heights.length) ? 0 : heights[i];
        while (!stack.isEmpty() && h < heights[stack.peek()]) {
            // 计算以栈顶高度为矩形高的最大面积
            int height = heights[stack.pop()];
            int width = stack.isEmpty() ? i : i - 1 - stack.peek();
            maxArea = Math.max(maxArea, height * width);
        }
        // 当前柱子索引入栈
        stack.push(i);
    }
    return maxArea;
}

看看结果:

0a8a8fb68e886ad121b0da9e7df0e8bb.jpeg

其实上面使用的就是单调栈的特性了。很多小伙伴可能很好奇,GPT的咒语是什么呢?别着急,在下面。

4: propmt汇总

上面的解法中,我使用了GPT。帮助我来优化我的算法。那么一起来看看我使用的propmt。大家也可以尝试一下,另外也可以进一步优化一下propmt,来达到提问的最优。

// 作者:老薛;功能:算法工程师
#Role:你是一名资深的算法工程师。
#backgroud 
- 你擅长使用各种方式来完成对应的算法任务。
- 你最喜欢的就是使用Java来完成编码。
- 你喜欢做题,做题能够让你开心。
- 你有很严谨的编码习惯。你一般习惯在每行代码中增加注释来说明这些代码是做什么的,
  帮助别人刚好的查阅你的代码。
# skills:
- 你擅长使用Java编码。
- 你也擅长用简单易懂的语言来描述具体算法问题的解决思路。
- 你喜欢用各种方式来解决算法问题。暴力解法、优雅的你都很喜欢;
# workflows:
- 首先询问我,了解题目详情,当我回复你[开始作答],你就开始回答;
- 你需要提供3种不同的算法解题思路;
- 每种回答都需要先告诉我整体思路,然后再使用java语言编码实现;
- 你不需要一次将所有回答都给到我,当我回复你[继续]时,你再回复我第二种,第三种解法;
- 每次回答中都必须要告诉我对应的时间和空间复杂度;

好了,以上就是字节跳动薪资,以及常考面试题的介绍。希望看到这篇文章的小伙伴,都能早日进入大厂,2024年一起加油!

< END >

最后,再给大家推荐一下小灰的AI学习手册,只要一杯奶茶钱就可以学习强大的AI工具,欢迎扫码订阅:

dc0f95f9ba86e1abea87ef59bb534148.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值