普通本科毕业,海投简历三面字节跳动,侥幸拿到offer

107次阅读
没有评论

背景

本人是普通本科 , 无科研经历 , 但是有一些项目经历 , 在国内监控行业某头部企业做过一段时间的实习。想着投一下字节跳动 , 可以积累一下面试经验和为秋招做准备。投了简历之后过了一段时间 ,HR 就打电话跟我约时间 , 在月初进行远程面。

一面

面试官很和蔼 , 由于疫情的原因 , 大家都在家里面进行远程面试。

开头没有自我介绍, 直接开始问项目了 , 问了比如

  • 常用的 Web 组件有哪些(回答了自己经常用到的 SpringBoot,Redis,Mysql 等等 , 字节这边基本没有用 Java 的后台 , 所以感觉面试官不大会问 Spring,Java 这些东西 , 反倒是对数据库和中间件比较感兴趣)
  • Kafka 相关 , 如何保证不会重复消费 ,Kafka 消费组结构等等(这个只是凭着感觉和面试官说了 , 因为 Kafka 自己确实准备得不充分, 但是心态稳住了)
  • Mysql 索引,B+ 树(必考的同学们)

还有一些项目中的细节 , 这些因人而异 , 就不放上来 , 提示一点就是要在项目中介绍一些亮眼的地方, 比如用了什么牛逼的数据结构 , 架构上有什么特点 , 并发量大小还有怎么去 hold 住并发量

后面就是算法题了, 一共做了两道

  1. 判断平衡二叉树(这道题总体来说并不难 , 但是面试官在中间穿插了垃圾回收的知识 , 这就很难受了 , 具体的就是大家要判断一下对象在什么时候会回收 , 可达性分析什么时候对这个对象来说是不可达的 , 还有在递归函数中内存如何变化 , 这个是让我们来对这个函数进行执行过程的建模 , 只看栈帧大小变化的话 , 应该有是两个峰值 , 中间会有抖动的情况)
  2. 二分查找法的变种题 , 给定 target 和一个升序的数组 , 寻找下一个比数组大的数。这道题也不难, 靠大家对二分查找法的熟悉程度 , 当然 , 这边还有一个优化的点 , 可以看看我的博客找找灵感

完成了之后 , 面试官让我等一会有二面 , 大概 10 分钟左右吧 , 休息了一会就继续了

二面

二面一上来就是先让我自我介绍 , 当然还是同样的套路 , 同样的香脆

然后问了我一些关于 Redis 的问题 , 比如 zset 的实现(跳表, 这个高频) , 键的过期策略 , 持久化等等 , 这些在大多数 Redis 的介绍中都可以找到 , 就不细说了

还有一些数据结构的问题 , 比如说问了哈希表是什么 , 给面试官详细说了一下 java.util.HashMap 是怎么实现 (当然里面就穿插着红黑树了 , 多看看红黑树是有什么特点之类的) 的 , 包括说为什么要用链地址法来避免冲突 , 探测法有哪些 , 链地址法和探测法的优劣对比

后面还跟我讨论了很久的项目 , 所以说大家的项目一定要做好 , 要有亮点的地方 , 在这里跟面试官讨论了很多项目优化的地方 , 还有什么不足 , 还有什么地方可以新增功能等等 , 同样不细说了

一边讨论的时候噼里啪啦敲了很多 , 应该是对个人的面试评价一类的

后面就是字节的传统艺能手撕算法了 , 一共做了三道

  • 一二道是连在一起的 , 给定一个规则 S_0 = {1} S_1={1,2,1} S_2 = {1,2,1,3,1,2,1} S_n = {S_n-1 , n + 1, S_n-1}. 第一个问题是他们的个数有什么关系 (1 3 7 15… 2 的 n 次方 -1, 用位运算解决)。第二个问题是给定数组个数下标 n 和索引 k, 让我们求出 S_n(k) 所指的数, 假如 S_2(2) = 1, 我在做的时候没有什么好的思路, 如果有的话大家可以分享一下
  • 第三道是下一个排列 :https://leetcode-cn.com/problems/next-permutation 的题型 , 不过做了一些修改, 数组大小 10000<n<100000, 不能用暴力法 , 还有数字是在 1-9 之间会有重复

幸好我常再刷左程云大神写出的《程序员面试指南 :IT 名企算法与数据结构题目最优解》算法书籍 , 面试基本都用上了

hr 面

一些偏职业规划的话题了 , 项目经验 , 工作经历这些。

我在这次面试前所做的准备 ( 个人学习方式 + 一些相关的资料 ), 在这里分享出来

1、简历如何写

对于面试者来说 , 简历是他们给用人单位的第一印象。因此为了让简历更吸引人 , 我们在准备简历时应当注意“直接”两字 : 能让筛选人直接地看出本人的教育背景、工作经历、项目经历、突出项目、突出技能、突出你能为公司提供什么 , 并让他们“直接”感到这份简历能纳入考虑范围。

2、面试前如何准备

想要提高面试通过率 , 自然要对面试企业有所了解。Java 程序员在面试前可以首先通过公司的网站及其他渠道了解公司 , 其次要掌握算法、数据结构、框架等方面的技能 , 最后可以自己给自己提问题 , 自己回答问题。那么如何提升自己的技术深度 , 扩宽自己的技术广度呢 ?

程序员面试指南 :IT 名企算法与数据结构题目最优解

普通本科毕业,海投简历三面字节跳动,侥幸拿到offer插图

普通本科毕业,海投简历三面字节跳动,侥幸拿到offer插图1

1000 道互联网工程师面试题

普通本科毕业,海投简历三面字节跳动,侥幸拿到offer插图2

Java 核心面试知识点整理

普通本科毕业,海投简历三面字节跳动,侥幸拿到offer插图3

70+ 算法题、30 种大厂笔试高频知识点

普通本科毕业,海投简历三面字节跳动,侥幸拿到offer插图4

前辈大厂面经

普通本科毕业,海投简历三面字节跳动,侥幸拿到offer插图5

总结

基础很重要 ! 这次准备到的 Redis,Mysql,JVM 原理等等都有问到了 ,(网络这一块没问, 但是也是要好好准备的 , 对于后台来说 , 网络知识不仅仅是面试 , 还是以后工作的知识基础)。当然自己也有准备不足的地方 , 比如 Kafka 等中间件 , 只会用不会原理是万万不行的。并且这些基础知识不能只靠背 , 面试官还会融合在项目里面进行串问

问到了不会的不要慌 , 因为面试官是在试探你的技术深度 , 有可能会针对某一个问题 , 问到你不会为止 , 所以你出现不会的问题是很正常的 , 心态把控住就行。

无论是做题, 还是回答问题的时候 , 牢记你不是在考试 , 而是在交流 , 和面试官有互动和沟通是很重要的 , 你说的一些疏漏的地方 , 如果你及时跟面试官反馈 , 还是可以补救一下的

最重要的一点字节的面试就是算法一定要牢固 , 每一轮都会有手撕算法的 , 这个不用想 ,LeetCode+ 剑指 Offer 走起来就对了 , 心态很重要 , 算法题不一定都是你会的 , 要有一定的心理准备 , 遇到难题可以先冷静分析一波 , 而且写出 Bug free 的代码也是很重要的。

原文链接:https://blog.csdn.net/javaAnPou/article/details/128613503

正文完
 0