1: 字节 2023 年秋招工资
前有PICO裁员,后有朝夕光年大规模业务收缩。年底了,字节的薪资还能跳的动吗?
很多人充满了好奇,那我们一起来看看。
下面是字节 2023 年秋招工资
几点总结:
首先说说算法岗位,这可是个高薪领域。普通水平的算法工程师年薪大概在40万到55万之间;
后端开发的话,36w到48w区间,主要还是看个人能力;
测开比后端/算法低 2~3k,测开和开发同薪同酬基本不太存在。
另外,字节的签字费也很有吸引力。一般来说,签字费是1万,但这个还可以谈,看你的实力和手里有没有其他的offer。特别提一下,客户端开发的签字费特别高,高达八九万,因为大家都知道,客户端开发的前景现在不太乐观,所以招人比较难。
除了工资,字节还提供租房补贴。具体来说,北京是每月1500元,上海1000元,杭州800元,重庆500元。而且,字节还有自己的食堂,所以你可以享受三餐免费,不过这个待遇不确定是否在所有城市都有。另外,住房公积金是按照12%的最高比例缴纳的。
是不是感觉很心动?看完字节的薪资待遇,我相信很多小伙伴都会更加向往大厂了。如果你有时间和精力,不妨为2024年制定一个新的学习计划,向着梦想的大厂迈进!
2: 字节的薪资体系
各位小伙伴可能都很好奇,进了字节跳动,拿到高薪后,工资涨幅会怎样?薪资体系又是什么样的?那就让我们一起来深入了解一下字节的薪酬体系吧!
说到字节,他们是根据不同的岗位级别来设定薪资范围的。来看看一位内部员工透露的信息吧。在字节,从1-2到2-1级别的岗位,一般都是执行层级,通常工作经验在五年以下。如果你能升到2-2级别或以上的研发岗位,年薪加上股权的总收入,基本上可以超过一百万!
看到这个收入,很多同为高级研发,技术经理的同学,说不羡慕肯定是有点言不由衷的。下面就是字节跳动某个2-2同学的工资,光看个人所得税,就超过了很多人的工资了。
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:
输入:heights = [2,1,5,6,2,3] 输出:10
解释:最大的矩形为图中红色区域,面积为 10
示例 2:
输入: 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;
}
当然这种写法会并不会通过,你会获取到一个超时。那么有没有更好的解法呢?
更加优化的写法,我们可以尝试使用左右指针。我们每次都假设当前获取的元素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;
}
上述解法,一样会得到一个超时。
那么接下来我就使用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;
}
看看结果:
其实上面使用的就是单调栈的特性了。很多小伙伴可能很好奇,GPT的咒语是什么呢?别着急,在下面。
4: propmt汇总
上面的解法中,我使用了GPT。帮助我来优化我的算法。那么一起来看看我使用的propmt
。大家也可以尝试一下,另外也可以进一步优化一下propmt,来达到提问的最优。
// 作者:老薛;功能:算法工程师
#Role:你是一名资深的算法工程师。
#backgroud
- 你擅长使用各种方式来完成对应的算法任务。
- 你最喜欢的就是使用Java来完成编码。
- 你喜欢做题,做题能够让你开心。
- 你有很严谨的编码习惯。你一般习惯在每行代码中增加注释来说明这些代码是做什么的,
帮助别人刚好的查阅你的代码。
# skills:
- 你擅长使用Java编码。
- 你也擅长用简单易懂的语言来描述具体算法问题的解决思路。
- 你喜欢用各种方式来解决算法问题。暴力解法、优雅的你都很喜欢;
# workflows:
- 首先询问我,了解题目详情,当我回复你[开始作答],你就开始回答;
- 你需要提供3种不同的算法解题思路;
- 每种回答都需要先告诉我整体思路,然后再使用java语言编码实现;
- 你不需要一次将所有回答都给到我,当我回复你[继续]时,你再回复我第二种,第三种解法;
- 每次回答中都必须要告诉我对应的时间和空间复杂度;
好了,以上就是字节跳动薪资,以及常考面试题的介绍。希望看到这篇文章的小伙伴,都能早日进入大厂,2024年一起加油!
< END >
最后,再给大家推荐一下小灰的算法学习手册
,只要一杯奶茶钱就可以系统地学习数据结构与算法的核心知识,欢迎扫码订阅: