字节终于开奖了!

科技   2024-11-15 09:54   湖北  

这段时间,不少公司的校招薪资都开讲了,例如深信服贝壳vivo

字节也在这两天开奖了,分享一下北京后端和测开岗位的薪资(薪资数据来源于 offershow+社区讨论贴+读者分享):

  • 后端开发(白菜):26*15,1w 签字费
  • 后端开发(SP):(28~30)*15,1w~3w 签字费(可 a)
  • 后端开发(小 SSP):32*15,1w~13w 签字费(可 a)
  • 后端开发(SSP):(33~35)*15,1w~3w 签字费(可 a)
  • 测开(白菜):23*15 + 1w 签字费
  • 测开(SP):25*15,1w~3w 签字费(可 a)

这个签字费需要待满一年才能拿到,考虑到字节的流动性比较大,会有一部分同学拿不到。另外,二线城市对应的薪资会降低 3k 左右。

由于京东今年开的太多(不一定能拿满),导致很多人觉得字节开的不多。其实,综合来看,字节今年给的也还行,也算是头一档了。不过,我发现身边有一些拿到字节的读者,由于有其他薪资更高的 offer 或者担心工作压力太大,直接就给拒了。

下面,给大家分享一位球友面试字节后端岗位的 OC 面经,大家感受一下难度。

下面是正文!

xdm,拿到字节跳动的 offer 了!虽然又要转 Go 了,从 Go 跳到 Java,又从 Java 跳回 Go,反复横跳,感觉都没学深入。

以下是我的面试经历,分享给大家,希望能有所帮助!

一、算法题:

  1. 给定一个字符串,例如 "abcdabgh",以及一个字符 'a',要求随机返回 'a' 的下标(例如这里是 0 和 4),要求返回的概率必须相同。空间复杂度要求 O(1),即不能开辟任何空间存储下标,并且只能遍历一次字符串。
  2. 给定 n 个骰子,求和为 k 的概率,不能使用回溯算法。
  3. 给定一个数字,例如 234,以及一个有序数组,例如 {2, 3, 7},找出第一个不大于 234 的数,例如这里是 233。(题目描述似乎缺少一些限定条件,例如能否使用数组中的数字组成新的数字)

二、基础八股(可能不全,部分问题已经忘了,可能比较简单)

数据结构:

  1. 堆和树的区别?应用场景?
  2. 二叉搜索树是什么?

操作系统:

  1. 进程间的通信方式?如何写一个死锁的例子?如何解决死锁?
  2. 操作系统内存满了怎么办?如何回收内存?内存回收机制有什么影响?
  3. 什么是僵尸进程?应该如何处理僵尸进程?
  4. 为什么会有线程安全问题?如何解决线程安全问题?
  5. 解释一下乐观锁和悲观锁。什么是 CAS?什么是 ABA 问题?如何解决 ABA 问题?

MySQL:

  1. 索引的构成?(B+ 树)索引优化?给定一个 SQL 语句,判断其是否会走索引。
  2. 什么是慢 SQL?如何查找慢 SQL?如何优化慢 SQL?
  3. MySQL 的三大日志(redo log、binlog、undo log)。redo log 写进去了,但 binlog 没写进去该怎么办?(细节记不清了,当时没答好)write 和 flush 的区别?redo log 的刷盘时机?三大日志的执行顺序?
  4. MySQL 的事务隔离级别?各个隔离级别分别解决了什么问题?MVCC 的流程。

Redis:

  1. zset 的底层数据结构?为什么不用红黑树?(这是我自己引申的,当时说了一句没用红黑树,用的是跳表)
  2. Redis 中的命令,例如 setnxsetex 以及 zset 相关命令。
  3. Redis 的 key 有大小限制吗?key 过大会有什么影响?如何解决?
  4. Redis 的内存淘汰策略?(面试时一直想不起来,背了半天旁路缓存,以为要凉了)
  5. 根据 score 查询 member 的时间复杂度?反过来,根据 member 查询 score 的时间复杂度?

计算机网络:

  1. 一次完整的 HTTP 请求所经的步骤
  2. HTTP 常见的请求方法和状态码有哪些?502 错误是什么?如何排查 502 错误?解释一下反向代理。
  3. HTTPS 的安全性体现在什么方面?(本质还是在问 HTTPS 原理)

场景设计题:

设计一个敏感词库,要求支持对敏感词的增删改查。敏感词文本匹配,敏感词数量约 1 万个,文本长度 20-10000。

(我提到了 Trie 树等方案,以及多线程处理。持久化存储方案被面试官否定了,说是我的方案一天宕机几分钟是不可接受的。)

三、项目和实习:

  1. 微信扫码登录的流程?背后的原理?(准备了很久的 OAuth 2.0 总算用上了)什么是 CSRF 攻击?如何解决 CSRF 攻击?
  2. 项目难点:(之前登录日志是同步写入数据库的,后来为了提升效率加入了消息队列,先写入队列再异步消费入库,实现解耦。但是队列使用了同步操作,有一次消息队列挂了,导致登录服务不可用,这是不可接受的。记日志不能影响登录,所以将队列操作改为了异步方式。)
  3. 订单 30 分钟自动取消的实现,延时消息机制。(这部分是我自己引申的,包装了一下,讲了 MQ 的 18 个队列,以及 Kafka 的时间轮。)
  4. 实习中使用的语言?Go 协程中出现 panic 怎么办?解释一下 defer。了解 GMP 模型吗?

参考答案

上面的面试问题几乎都可以在《Java 面试指北》JavaGuide 这两份资料中找到

希望对大家有一些帮助,冲!

📌Java 后端技术面试准备强烈推荐《Java 面试指北》 和 JavaGuide ,400 多人参与维护完善,质量非常高。另外,目前的面试趋势是场景题变多,可以参考《后端面试高频系统设计&场景题》(20+高频系统设计&场景面试题)进行准备!

⭐面经合集《Java 后端面经精选》


专属面试小册/一对一交流/简历修改/专属求职指南,欢迎加入我的知识星球 ,和 3w+球友一起准备面试!

JavaGuide
JavaGuide(javaguide.cn)官方公众号,专注分享原创Java技术干货。
 最新文章