曲线救国拿下字节提前批后端offer!

稍微有些标题党,但我这个路线确实跟别人不太一样。女朋友春招去了字节实习,然后一直催我投字节,我三四月份的时候刚弄完小论文,什么都没看自我感觉特别差,所以先复习了几个月,之后自我感觉稍微有点谱了,就在女朋友的内推下投了日常实习。
我是6.16投的Data这边的日常实习后台岗,其实这个时候提前批也刚刚开始,由于我不是特别自信,所以只是投的实习想通过面试看看自己准备的怎么样,是个什么水平。
我几次面试时间跨度有些久,前前后后差不多一个月,横跨了整个提前批。实验室这边是明确不让去实习的,我面了两次后感觉还可以,所以萌生出了转提前批的想法。

hr面的时候我给hr说了想转提前批,hr说需要和之前的面试官商量一下,7.15hr面,这5天比较煎熬,在牛客上找了很多跟我类似情况的帖子,但大部分都是春招拿到字节实习offer然后没去的,他们基本都是直通终面。有两个小伙伴和我情况一摸一样,有一个加面了,还有一个没有加面,最终也都拿到了offer。我比较幸运,也没有加面,7.20收到意向书。附上内推码:9KZ1P3F 😋

6.24 一面 70min

自我介绍

问rpc造轮子项目

rpc用的什么协议?

介绍自己的协议

自己定义的协议为什么要有魔数?

netty如何解决拆包粘包问题

rpc是多路复用的吗?

对netty的了解?

netty并发处理模型?

netty为什么性能高?

netty做了什么优化

java范型 怎么体现?原理? 不会,只能扯点Java是假范型,讲了讲范型擦除,面试官追问原理,只能说不会原理。

volatile 作用?可见性是什么

GC 如何回收垃圾?引用计数法 可达性分析

可达性分析如何解决循环引用 问懵了

引用计数有什么优点?

为什么简单就性能好?

数据库explain

explain 字段?

mysql预编译

算法

1.char[] i am in Shanghai -> char[] shanghai in am i

不让用String split函数,只能用reverese实现。后来说了思路 就是先反转整个句子,再单独反转单词。但是我空格边界处理的不好,这里一直磕磕巴巴没搞完。

2.判断回文链表

这一面是第一次面试,netty几连给我问懵了,这问的和我看的面经一点都不一样,当时内心很挣扎。。也很紧张,面完有些难受,没想到过了。后来一面面试官还来加我,说我一面太紧张,然后让我在学校群里宣传一下字节帮忙打广告🤣

7.2 二面 45min

到点了面试官没来,打电话让hr催了一下,面试官迟到了15min。

自我介绍

HTTP请求响应的数据结构

HTTP传输的什么数据 怎么编码的

可以传什么数据 什么格式(讲了json xml,图片用二进制之类的)

怎么判断发来的是json还是xml (我说的提前约定好发什么格式,或者头部里的k-v里写明是什么格式的数据

你接触过哪些http头部

post和get区别

状态码304啥意思

接口和抽象类区别

什么情况你用接口什么情况用抽象类(举了个例子

volatile

A a = new A(); 对象存在哪里,引用存在哪里(对象在堆上,引用在栈上

mysql主键索引数据结构(B+树

为什么用B+树(分析了一波B/B+/红黑树

二级索引用什么数据结构(讲了一波二级索引需要回表之类的

一个表,第一列是id,第二列是金额,A给B转钱,怎么做?(说了开启事务做操作

并发的情况下怎么保证不会多转钱(说了mysql会加锁,说了说3个行锁

怎么加行锁(我以为是原理层面,说不会,面试官说是使用层面,大概想让我说一下语句,不会。。

场景题:定时任务模块,注册定时任务,注册需要用到两个参数,一个参数是函数,一个参数是时间戳,注册之后需要触发函数。怎么实现?

绕了一圈面试官目的是想让我说用什么数据结构存这个注册任务,被场景题绕晕了,刚开始说的数组轮询,后来面试官说用单链表怎么做,刚开始有点懵,后来醒悟过来说从小到大排序,每次都头节点取,这里分析了一下时间复杂度,插入和删除之类的。有序链表插入时间复杂度是O(n),问我能不能优化,然后说了下用跳表,单链表插入主要是查找的过程是O(n),用跳表可以降到O(logN)。中途面试官还问了数组和链表的区别。

最后反问环节面试官给我说这个最优解是最小堆。唉,其实很简单,套了个壳子就不会做了,第一次做场景题,有点紧张有点懵。

手撕代码:二叉树层序遍历LC102

这一面面的比较舒服,比较常规,都是一些面经上比较常见的,感觉还行。希望后续能进三面,然后可以再转提前批把。


7.12 三面 70min

自我介绍(提到了发论文

简单介绍一下你发的论文(介绍完了面试官说看来你算法功底很好,吓我一跳...赶紧说没有没有,可不想给自己挖坑

开始问基础知识

先从OS问起

虚拟内存是什么

缺页中断具体过程(不会

页面置换算法

让你实现LRU,思路是什么?我说了LinkedHashMap

面试官说不让用api,自己想思路(说了双向链表+map

用单向链表可以实现LRU吗?(触及到知识盲区了,没思路

文件inode(这块没复习到,随便说了两句就投降了

linux文件权限(说了执行ls命令后显示的dxrwxrwxrw分别是自己,所在组和其他人对应的权限

开始问网络

面试官说TCP三次握手四次挥手肯定问烂了,就不问了(其实我前两面这个都没被问。。

拥塞控制了解吗(详细讲了讲慢开始、拥塞避免、快恢复、快重传

一般情况下TCP可靠性更好、速度比UDP慢,如何设计一个既有UDP的效率,又要有TCP的可靠性的协议?(刚开始没什么思路,面试官提醒可以从拥塞控制入手。我就说不用慢开始这一套,用一个比较恒定的速度去传输数据,至于发送速度恒定在多少,这里提到了jdk的synchronized优化后里有个自适应cas来确定自旋多少次,可以参考这个思路来确定以什么速度发送会获得比较好的效果。面试官后面表示我这个借鉴思路还不错,夸了我一波

开始问项目

介绍一下rpc轮子项目,这里简单讲了一下原理

讲一下非阻塞和异步

netty是怎么实现的(基于NIO,IO多路复用,讲了讲netty的3个线程模型

IO多路复用具体原理(讲了讲select、poll、epoll

管理100w个连接也很困难,epoll是怎么做到的?(不会

epoll的边缘触发和水平触发

什么时候用水平触发 什么时候用边缘触发(这个不太会答,说根据业务来选择,精细化控制,不想错过任何数据就用水平触发,只要有数据就触发的话就使用边缘触发

netty用的哪个(两种触发都支持

数据库

redis的zset底层用的什么结构(跳表

为什么mysql用b+树,redis用跳表(这个说实话没想过,现想的,感觉答得不是很好,扯了扯mysql需要磁盘io,redis基于内存不需要磁盘io,跳表实现简单,能扯上点关系都说了说

mysql用了b+树都哪些优点(叶子节点有序,磁盘预读,树的深度小

redis用跳表的原因(实现简单,复杂度不高,支持范围查询

跳表在什么情况下加层(不知道

数据库的隔离级别

脏读是什么

怎么解决脏读

幻读是什么

怎么解决幻读(讲了next-key lock锁和mvcc

mvcc原理

为什么mysql不用可串行化解决幻读(并发度小

手撕代码

手撕之前面试官说我之前做的都挺简单的,对我来说肯定很容易,你又是做算法的,给你整个稍微难一点的(我??

第一题 n*n的棋盘,从(i,j)开始只能上下左右走,走k步后棋子还在棋盘上的概率? 类似Leetcode688

不太会做,想了个思路用BFS/DFS先算出走k步的所有可能数,再同样方法算出走k步还在棋盘的可能数,再相除。面试官说这个会爆栈。估计用dp做,但我没什么思路面试官就换题了。

第二题 手撕LRU。leetcode146

前两天还看了,具体不记得了,只写了个大概的逻辑,有点问题,不过基本的get、put思想是对的。面试官没深究

反问

问了对于应届毕业生,找后台开发的话应该该怎么准备。觉得面试官的回答挺有意义的,特意摘出来给大家分享一下。

总结来说就是不在乎你学了多少上层的工具,你把OS、网络、数据结构、数据库这些学好,把基础夯实了,再去学上层会比较快。如果你能和linux代码贡献者一样对linux很熟悉,并且其他几门课的基础很扎实,那么以后解决问题的时候可以从很多其他地方借鉴思路,这里提到了我上面借鉴自适应cas的思路,算是对我的一种肯定吧。


总结

三面面试官好像是个比较厉害的leader了吧,开始视频的时候看到发际线我就懂了(手动滑稽),不过面试官人挺好的,而且很注重基础,从上面问的就感觉出来了,又要广度又要深度,面试体验很不错。面完3个小时hr就联系我约hr面了。本来我投实习是想练练手的,没想到一路下来还挺顺利,老师应该是不放实习,所以准备后续hr面的时候问问怎么转转提前批,转到提前批的话应该要加面,祈祷一下。

7.15 hr面 15min

自我介绍直接跳过了
什么时候可以来实习?
面试体验如何?
知道我们这边具体做什么业务吗?
介绍一个成就感最大的项目
中途碰到什么困难?
来到字节可能会遇到什么困难?
职业规划
平时怎么学习的
希望字节这边给到你什么资源

总结

现在想想我跟提前批面的其实没什么区别,只是套了一个实习的外衣,给了自己些许安慰,减轻了一下自己的心理负担。但是有一说一,实习和提前批虽然问的东西是一样的,但是hr说对应的标准是不一样的,所以我在面试过程中可能面试官想着我是实习岗,所以可能不会让我很难堪🤣我承认我运气比较好,但是打铁还需自身硬,自己也得有一些水平才可以。我的dream offer就是字节和阿里,没想到第一次大厂面试就顺利地拿到字节offer,感觉突然就没了努力的动力了😅..后面可能就佛系面试了,还是需要去争取一下。希望各位牛油也继续加油,努力坚持一定可以拿下自己的dream offer!
#Java工程师##面经##实习#
全部评论
顶一下自己
1 回复
分享
发布于 2020-07-20 22:13
楼主你好 请问你这么顺利就能拿到字节的offer是因为女朋友的内推码吗 如果我有女朋友是不是也能顺利入职🤨
1 回复
分享
发布于 2020-08-06 17:41
春招专场
校招火热招聘中
官网直投
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复
分享
发布于 2020-07-02 22:09
rpc轮子是做的注册中心嘛
点赞 回复
分享
发布于 2020-07-03 09:30
萌新想问楼主秒杀demo是什么东西呀?
点赞 回复
分享
发布于 2020-07-03 09:43
是上海的部门吗
点赞 回复
分享
发布于 2020-07-04 21:35
我们是字节跳动广告系统团队,支撑今日头条、抖音、西瓜视频、火山小视频等多款海内外产品的商业化变现,公司的核心收入部门,拥有复杂的算法,精湛的业务,巨量的并发。 【⚡内推码】TBCSK8P  登录校招官网 https://job.bytedance.com/campus,投递后缀为"Data"的岗位,马上安排!
点赞 回复
分享
发布于 2020-07-04 21:48
兄弟,你一面结束面试官有直接告诉你二面的时间吗
点赞 回复
分享
发布于 2020-07-07 17:26
请问楼主“HTTP请求响应的数据结构”这个问题怎么回答?
点赞 回复
分享
发布于 2020-07-08 22:06
听楼主描述,咱俩应该是一个leader面的,星期六面的,没收到hr面,应该是挂掉了😂,代码写太差了
点赞 回复
分享
发布于 2020-07-13 16:08
请问一面的算法题有复杂度要求吗,感觉用substring和栈可以做啊
点赞 回复
分享
发布于 2020-07-24 14:18
还有实习岗位吗 可以参考一下RPC轮子吗
点赞 回复
分享
发布于 2020-07-24 15:02
我是提前批转实习了
点赞 回复
分享
发布于 2020-07-24 15:23
楼主,想问下字节的提前批不用实习的吗,我看帖子很多字节提前批都是先去实习,然后秋招再发offer的,所以比较疑惑
点赞 回复
分享
发布于 2020-07-24 23:12
没人吗
点赞 回复
分享
发布于 2021-07-17 12:04
为什么问了你很多rpc和netty的?
点赞 回复
分享
发布于 2022-03-16 14:54

相关推荐

18 132 评论
分享
牛客网
牛客企业服务