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

1233 篇文章 11 订阅
978 篇文章 11 订阅

背景

本人是普通本科,无科研经历,但是有一些项目经历,在国内监控行业某头部企业做过一段时间的实习。想着投一下字节跳动,可以积累一下面试经验和为秋招做准备。投了简历之后过了一段时间,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名企算法与数据结构题目最优解

1000道互联网工程师面试题

Java核心面试知识点整理

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

前辈大厂面经

总结

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

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

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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值