字节跳动今年的校招薪资。。。

字节跳动校招情况分析

在写完了绝对顶流 华为 和近两年炙手可热的 比亚迪 的校招薪资之后,不少同学点名要看「字节跳动」。

确实,玩归玩,闹归闹,别拿字节开玩笑。

先来看看和公众号读者相关性较高的岗位校待遇:

研发算法签字费
白菜20k~23k22k~25k1w
SP24k~27k26k~29k1w
SSP28k~33k30k~36k1w

字节合同薪资是 12-18 薪,但大多数人通常都是直接 15 薪。

因此直接用月薪*15,计算年包,是一个比较合理的做法。

  • 研发:白菜年包 30w~34.5w;SP 年包 36w~40.5w;SSP 年包 42w~49.5w
  • 算法:白菜年包 33w~37.5w;SP 年包 39w~43.5w;SSP 年包 45w~54w

字节跳动今年校招的薪资,无论是横向(与其他互联网大厂对比),还是纵向(与往年自身的校招薪资对比)都是比较高的。

薪资是一方面,进入字节,对部门需要尤其看重。

这两年,字节对各个赛道的围剿,开始进入「止损」或「合并」阶段。

一些连普罗大众都知道的事,是对教培的彻底放弃,以及对游戏和 Pico 业务的逐步关停。

而可能只有企业内部才了解的,还包括懂车帝、住小帮、小荷健康合并到抖音集团。

业务彻底放弃,意味着原地解散。

这对那些已经在字节做了多年,大礼包动辄几十万的老员工来说,至少是有缓冲空间的。

但如果是应届生转正不久就经历的话,这变化确实不好拥抱。

对于员工而言,解散或合并总归不是一个好的安排。但对公司来说,真就未必。

有些业务的开拓,从一开始就注定只会走这两条路:要么解散,要么合并,不会是做大做强。

这引导我们不能用「对行业的基本认识」来衡量大公司的拓展业务分支。

创建分支的「强目的性」往往会带来业务的「强不确定性」。

这听起来,很矛盾。

可以用「字节宣布逐步解散游戏业务」来进行分析。

2023年11月27日,字节宣布逐步关闭游戏业务。

现在外界对字节这一决策的主流解读是什么?

普遍对该决策的解释,都绕不开2023年12月22号由国家新闻出版署颁布《网络游戏管理办法(草案征求意见稿)》。

仿佛字节是穿越者,又或者提前收到了"通知"一样。

先不说,字节还没有上市,这个所谓的"先行操作"不会产生什么避免财富蒸发或推波助澜的作用。

再说,字节作为游戏赛道中一位特殊的后来者,恰好是少数可以把消息当作利好解读的一方。

意见稿中的「高额氪金限制」、「概率性规则设定」,对于网易和腾讯等老牌游戏厂,影响较大;「首次充值」对于大多仅靠首充活着的小游戏厂,属于致命影响。

至于字节?

大多游戏都还没走过烧钱阶段,意见稿限制,和我有啥关系?

总的来说,字节基本上处于,一纸意见稿打下来,同行们人均伤害 80,我方受伤害不足 10 的水平。

所以,任何一个具备独立思考能力的人,都能发现所谓「字节提前得知"意见稿",解散游戏业务」只是最有流量的写法,不会是事实本身。

那为啥突然关停游戏业务?

这就讲回刚刚说的「有些业务的开拓,从一开始就注定关停解散」的。

理解关停,就要先搞清楚,为什么字节刚开始会想做游戏。

当时还是"头腾大战"打得火热的 2019 年,抖音已经是现象级的 App,腾讯的「王者荣耀」、「绝地求生」和「刺激战场」也用户数纷纷破亿。

双方就「游戏画面是否被用于商业化」发生纠纷,很长一段时间内,抖音和火山系 App 都搜索不到腾讯游戏相关视频。

当时新闻的网图
当时新闻的网图

当时,抖音方面表示:腾讯主张,用户在自己手机上玩王者荣耀录屏视频权利属于腾讯。

腾讯则表示:没提出过这样的主张。

表示归表示,腾讯还是就「西瓜视频以平台名义开设《王者荣耀》直播专区,招募主播是否合法」一事诉至法院。

最终,广州知识产权法院做出裁定,明确西瓜视频停止直播《王者荣耀》游戏内容,原因是侵害腾讯对《王者荣耀》享有的著作权。

同年,字节正式布局游戏。

看到这里,你应该明白了。

字节从成立游戏部门开始,就并非为了做好游戏,而仅仅是为了铺路抖音内容生态

这一定程度也解释了,为什么这些年来,字节游戏总是不温不火,甚至可以说摇摆不定。

现如今,字节和腾讯关系缓和,不仅仅是腾讯游戏官号入驻,各种录屏和二创在抖音上能播,甚至越来越多腾讯系的游戏主播都选择签约抖音。

对字节而言,既然在游戏行业大力出不了奇迹,整个字节游戏加起来也抵不过一个王者荣耀为抖音提供的内容生态。

关了就关了,一个好理解且简单的商业决定。

到这里,可能有同学会问,那字节之前投游戏这么多钱,白砸了?

怎么说呢。

做游戏,关游戏,看似矛盾的两步操作,不能说是绝对好棋,但都为字节带来了想要的结果。

看着结果,去嘲笑过程,从逻辑上就不成立。

如果没有当时字节进击游戏的决心和力度,是不是一定有如今的头腾关系缓和,抖音直接坐拥腾讯完整游戏内容生态呢?

大概率不会。

...

说到字节校招,在牛客网上,看到一个很有意思的帖子:

alt

这位同学,在一面的时候,被面试官问了个问题,当场没忍住,笑了出来。

这个问题是:平时写代码吗?

怎么说呢,刚开始我还能理解他说的笑点。

但看完他最后一段的自述,我基本确定他不是一个适度自信的小孩。

我不知道,当时这位字节的面试官,是否有理解到他笑容里的意思。

我相信如果面试官 Get 到这位同学的意思,一定会在他自信回答完「当然写代码啊」后,自然过渡到「那就做道算法题吧」。

最后,在对面汗流浃背的时候,不忘了 Call Back 一下原问题,平时真的写代码吗?🤣🤣

总的来说,我认为能问出这样的问题,很有可能是一位面试经验丰富的面试官,年轻的,只是这位同学。

通过该帖子,可以指出两个问题,一个是「在面试中应该如何保持专业和尊重」,另外一个更内核的问题是「适度自信和过度自信的边界在哪」。

今天篇幅差不多了,留到下次。

...

好了,现在到我问了:大家平时写代码吗?

不管你写不写,我都要向你介绍一道「字节跳动」相关的算法题。

题目描述

平台:LeetCode

题号:76

给你一个字符串 s、一个字符串 t。返回 s 中涵盖 t 所有字符的最小子串。

如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"

输出:"BANC"

解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A''B' 和 'C'

示例 2:

输入:s = "a", t = "a"

输出:"a"

解释:整个字符串 s 是最小覆盖子串。

示例 3:

输入: s = "a", t = "aa"

输出: ""

解释: t 中两个字符 'a' 均应包含在 s 的子串中,
因此没有符合条件的子字符串,返回空字符串。

提示:

  • m == s.length
  • n == t.length
  • st 由英文字母组成

进阶:你能设计一个在 时间内解决此问题的算法吗?

滑动窗口

定义两个长度为 (足够存下所有字母种类)的数组 c1c2,用于存储字符频率。其中 c1 用于记录字符串 t 中字符的频率,c2 用于记录当前滑动窗口内字符的频率。

设定好字母与频率数组下标的映射关系:小写字母 a-z 对应下标 0-25,大写字母 A-Z 对应下标 26-51

使用变量 tot 来记录还需要匹配的字符种类数,当 tot = 0 代表当前滑动窗口对应的子串能够实现对 t 的覆盖,即任意字符满足

使用双指针 ji 表示滑动窗口的左右边界。从前往后遍历字符串 s,在每个位置上更新字符频率数组 c2。若 c2 中字符的频率达到了 c1 中的字符频率,则将 tot 减 1,表示一个字符已经匹配完成。

每当右边界往后移动一步之后,滑动窗口会增加一个字符。此时我们检查左边界能否右移,同时不会使得 tot 变大。即每次右边界右移后,我们检查左边界 是否满足:

  • 若满足:说明当前左边界指向字符并非必须,当前子串 必然不是最短子串。我们让左边界 j 进行右移,并重复进行左边界 的检查,直到窗口不能再收缩
  • 若不满足:说明当前窗口没有任何一个后缀字符串能够实现对 t 的覆盖,我们并不能对窗口实现收缩

每次对窗口移动完成后,我们检查当前 tot 是否为 (对字符串 t 的覆盖是否完成),若为 则尝试用当前窗口对应的字符串 更新 ans

Java 代码:

class Solution {
    public String minWindow(String s, String t) {
        int n = s.length(), tot = 0;
        int[] c1 = new int[60], c2 = new int[60];
        for (char x : t.toCharArray()) {
            if (++c1[getIdx(x)] == 1) tot++;
        }
        String ans = "";
        for (int i = 0, j = 0; i < n; i++) {
            int idx1 = getIdx(s.charAt(i));
            if (++c2[idx1] == c1[idx1]) tot--;
            while (j < i) {
                int idx2 = getIdx(s.charAt(j));
                if (c2[idx2] > c1[idx2] && --c2[idx2] >= 0) j++;
                else break;
            }
            if (tot == 0 && (ans.length() == 0 || ans.length() > i - j + 1)) ans = s.substring(j, i + 1);
        }
        return ans;
    }
    int getIdx(char x) {
        return x >= 'A' && x <= 'Z' ? x - 'A' + 26 : x - 'a';
    }
}

C++ 代码:

class Solution {
public:
    string minWindow(string s, string t) {
        int n = s.length(), tot = 0;
        vector<intc1(60)c2(60);
        for (char x : t) {
            if (++c1[getIdx(x)] == 1) tot++;
        }
        string ans = "";
        for (int i = 0, j = 0; i < n; i++) {
            int idx1 = getIdx(s[i]);
            if (++c2[idx1] == c1[idx1]) tot--;
            while (j < i) {
                int idx2 = getIdx(s[j]);
                if (c2[idx2] > c1[idx2] && --c2[idx2] >= 0) j++;
                else break;
            }
            if (tot == 0 && (ans.empty() || ans.length() > i - j + 1)) ans = s.substr(j, i - j + 1);
        }
        return ans;
    }
    int getIdx(char x) {
        return x >= 'A' && x <= 'Z' ? x - 'A' + 26 : x - 'a';
    }
};

Python 代码:

class Solution:
    def minWindow(self, s: str, t: str) -> str:
        def getIdx(x):
            return ord(x) - ord('A') + 26 if 'A' <= x <= 'Z' else ord(x) - ord('a')

        n, tot = len(s), 0
        c1, c2 = [0] * 60, [0] * 60
        for x in t:
            idx = getIdx(x)
            c1[idx] += 1
            if c1[idx] == 1:
                tot += 1
        ans = ""
        j = 0
        for i in range(n):
            idx1 = getIdx(s[i])
            c2[idx1] += 1
            if c2[idx1] == c1[idx1]:
                tot -= 1
            while j < i:
                idx2 = getIdx(s[j])
                if c2[idx2] > c1[idx2]:
                    j += 1
                    c2[idx2] -= 1
                else:
                    break
            if tot == 0 and (not ans or len(ans) > i - j + 1):
                ans = s[j:i + 1]
        return ans

TypeScript 代码:

function minWindow(s: string, t: string): string {
    let n = s.length, tot = 0;
    const c1 = Array(60).fill(0), c2 = Array(60).fill(0);
    for (const x of t) {
        if (++c1[getIdx(x)] === 1) tot++;
    }
    let ans = "";
    for (let i = 0, j = 0; i < n; i++) {
        const idx1 = getIdx(s[i]);
        if (++c2[idx1] == c1[idx1]) tot--;
        while (j < i) {
            const idx2 = getIdx(s[j]);
            if (c2[idx2] > c1[idx2] && --c2[idx2] >= 0) j++;
            else break;
        }
        if (tot == 0 && (!ans || ans.length > i - j + 1)) ans = s.substring(j, i + 1);
    }
    return ans;
}
function getIdx(x: string): number {
    return x >= 'A' && x <= 'Z' ? x.charCodeAt(0) - 'A'.charCodeAt(0) + 26 : x.charCodeAt(0) - 'a'.charCodeAt(0);
}
  • 时间复杂度:
  • 空间复杂度: ,其中 ,为字符集大小

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

欢迎关注,明天见。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

three.js实现电子围栏效果(纹理贴图)

three.js实现电子围栏效果&#xff08;纹理贴图&#xff09; 实现步骤 围栏的坐标坐标转换为几何体顶点&#xff0c;uv顶点坐标加载贴图&#xff0c;移动 图例 代码 <template><div class"app"><div ref"canvesRef" class"canvas-…

Linux的网络配置命令和网络设置实操

目录 一、网路命令 1.ifconfig 2.hostname 3.route 4.netstat 5.ss&#xff08;socket statistics&#xff09; 6.ping 7.nslookup 8.tcpdump 二、实操 1.单个网卡修改 2.双网卡配置 3.bond网卡绑定 一、网路命令 查看Linux基础的网络设置 网关route -nIP地址ifc…

算法与数据结构--最小生成树算法

一.应用的场景 类似于这种最小成本问题&#xff0c;实际上就是计算加权图把所有点连起来权重之和最小值的时候是怎么连接的。类似的问题还有最短耗时之类的问题。 二.最小生成树的定义 生成树&#xff1a; 图的生成树是它的一颗含有其所有顶点的无环连通子图。 【简单说就是所…

Java中的IO流

在Java中&#xff0c;I/O&#xff08;输入/输出&#xff09;流用于处理与输入和输出相关的操作。Java的I/O流按照数据处理的不同方式分为两大类&#xff1a;字节流和字符流。每个类别又分为输入流和输出流。以下是Java中常用的I/O流及其继承关系&#xff1a; 字节流&#xff0…

BERT Intro

继续NLP的学习&#xff0c;看完理论之后再看看实践&#xff0c;然后就可以上手去kaggle做那个入门的project了orz。 参考&#xff1a; 1810.04805.pdf (arxiv.org) BERT 论文逐段精读【论文精读】_哔哩哔哩_bilibili (强推!)2023李宏毅讲解大模型鼻祖BERT&#xff0c;一小时…

竞赛保研 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

探索芊芊简历:一个革新的简历创建工具

在寻找理想工作的道路上&#xff0c;一份出色的简历是打开机遇之门的关键。今天&#xff0c;我想向大家介绍一款名为“芊芊简历”的免费简历编辑器&#xff0c;它以其独特的功能和先进的技术&#xff0c;为求职者提供了一个简单而高效的简历制作解决方案。 丰富多样的模板&…

虚拟局域网的基本概念与基本原理

虚拟局域网&#xff08;Virtual Local Area Network&#xff0c;VLAN&#xff09;是一种在物理局域网内部划分逻辑上独立的虚拟网络的方法。它通过在网络交换机上配置&#xff0c;将不同的设备分组到不同的虚拟网络中&#xff0c;实现了逻辑上分隔的网络通信。本文将介绍虚拟局…

北京大学漏洞报送证书

获取来源&#xff1a;edusrc&#xff08;教育漏洞报告平台&#xff09; url&#xff1a;教育漏洞报告平台(EDUSRC) 兑换价格&#xff1a;30金币 获取条件&#xff1a;北京大学任意中危或以上级别漏洞

【排序】快速排序

思想 快速排序是一种基于分治策略的排序算法&#xff0c;其核心思想通过选取一个基准元素&#xff0c;将数组分成两个子数组&#xff1a;一个包含小于基准元素的值&#xff0c;另一个包含大于基准元素的值。然后递归地对这两个子数组进行排序&#xff0c;最终将它们合并起来&a…

UltraScale 和 UltraScale+ 生成已加密文件和已经过身份验证的文件

注释 &#xff1a;如需了解更多信息&#xff0c;请参阅《使用加密和身份验证确保 UltraScale/UltraScale FPGA 比特流的安全》 (XAPP1267)。 要生成加密比特流&#xff0c;请在 Vivado IDE 中打开已实现的设计。在主工具栏中&#xff0c;依次选择“Flow” → “Bitstream Setti…

解决在eclipse2021中,用mysql-connector-java-8.0.18.jar不兼容,导致无法访问数据库问题

1.环境场景 组件版本mysql5.7.44mysql-connector-java80.18 2. 问题描述 报mysql-connector-java 驱动连不上mysql数据库。 3. 可能的原因分析 查看数据库连接句柄是否对 如果数据库连接句柄中没有 useSSLfalse 的话可能会导致这样的问题。 就像下面这样&#xff1a; jdb…

FRPS配置服务端(腾讯云)、客户端(PC电脑Windows、树莓派Debian)并设置虚拟域名

1.服务端&#xff08;腾讯云&#xff09;&#xff1a;frps.ini [common] bind_port 7000 vhost_http_port8080 vhost_https_port44344 dashboard_port 7500 privilege_token your_password subdomain_host example.com use_encryption true encryption_method tls dashb…

搭建zuul网关

1. 路由知识 有关网关的很多知识我们都在04.gateway讲解了&#xff0c;有关网关的详细知识可以到上节详细了解。本节我们主要来讲解下另一个网关zuul。本节结合之前的章节网关搭建的项目案例上实现zuul的搭建&#xff0c;侧重于实战。 2. Zuul现状 zuul官方文档 zuul截止clo…

【ZooKeeper高手实战】ZooKeeper 工业级的场景(配置中心、日志系统、数据同步系统)

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

深入理解 Hadoop (五)YARN核心工作机制浅析

概述 YARN 的核心设计理念是 服务化&#xff08;Service&#xff09; 和 事件驱动&#xff08;Event EventHandler&#xff09;。服务化 和 事件驱动 软件设计思想的引入&#xff0c;使得 YARN 具有低耦合、高内聚的特点&#xff0c;各个模块只需完成各自功能&#xff0c;而模…

熟悉HDFS常用操作

1. 利用Hadoop提供的Shell命令完成下列任务 (1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件。 #检查文件是否存在./bin/hdfs dfs -test -e text.txt echo $? #结果是1 代表已存在 #根据结果判断出文件已存…

dubbo与seata集成

1.seata是什么? Seata 是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 2.seata的注解 GlobalTransactional&#xff1a;全局事务注解&#xff0c;添加了以后可实现分布式事务的回滚和提交&#xff0c;用法与spring…

VMware虚拟机安装Ubuntu

准备:Ubuntu的镜像文件,VMware,手. 1.新建虚拟机&#xff0c;选择自定义&#xff0c;下一步。 2.硬件兼容性&#xff0c;选择Workstation 16.x&#xff0c;下一步。 3.选择安装程序光盘映像文件&#xff0c;路径为映像文件所在文件夹&#xff0c;下一步。 4. 创建用户和设置密…

hive 函数使用详解

一、前言 在任何一种编程语言中,函数可以说是必不可少的,像mysql、oracle中,提供了很多内置函数,或者通过自定义函数的方式进行定制化使用,而hive作为一门数据分析软件,随着版本的不断更新迭代,也陆续出现了很多函数,以满足日常数据查询与分析的各种场景。 二、hive 函…