字节后端一面凉经

2025.4.2 下午三点开始面试,时长大约55分钟。
2025.4.3 下午四点多一面挂的邮件就已经发来。

本人是个菜鸡,正在为找暑期实习而努力
记录一下自己的第二场面试,也是第一个大厂面试。
前面直接给我问懵了,中间有一会感觉大脑缺氧,晕晕的。
面试官总体来说还行,但是我回答完问题就只是嗯,也不多说。

1.自我介绍#牛客AI配图神器#

2.首先问了项目是练习项目吗?
回答:是学习练手项目;
又问:从头开始做的吗?
回答:从头开始做的。

3.项目为什么选择微服务,是怎么拆分的
回答:(这块没准备)只说了微服务后期好扩展,且不同微服务之间解耦。(这时候脑子已经乱了)具体如何拆分微服务的,我回答的是微服务分为对外接口层api、应用层、领域业务层、基础设施层、调用别的微服务接口的rpc层。这真是给后面埋了大雷。

4.项目开发过程中的难点和亮点
巴拉巴拉乱说一通,但是没忘记说项目的亮点,说了好几个项目的亮点,可能面试官不兴趣,后面就问了我说的在项目中用到了一些设计模式的亮点....

5.如何和其他服务交互
回答了api层封装接口、rpc层调用其他服务

6.RPC基于什么实现
回答:rpc是微服务中的其中一层,如果要调用其他服务的,经过 nacos 注册中心借助 Feign 可以实现调用别的微服务中的接口。。

7.追问了 Feign 如何实现的
回答:把项目中一个微服务调用另一个微服务的实现说了下
追问:底层如何实现的
回答:网络协议和数据序列化(没看过这个,随便说了俩)

8.feign的协议和序列化是用的什么?
直接抱歉,不会

9.项目部署了吗?
回答:在自己实验室电脑上的linux环境接著jenkins自动部署,只能内网访问。把jenkins部署流程简单说了一下

10.你提到项目中用到了设计模式,具体如何实现的?
把项目中用到的的工厂-策略模式、适配器模式都说了

项目阶段回答的太烂了,就开始问八股了。
11.java的哈希结构有哪些?
回答:hashmap、concurrentHashMap、linkedhashmap、hashtable(直说了这些,其他的回答不上来了)

12.hashmap的底层,红黑树查询和插入效率
回答:基于数组、链表/红黑树实现,还说了链表转红黑树的时机;面试完回想当时好像说的是O(n),脑子想的是O(logn),说成了O(n)

13.hashmap和hashtable的区别
回答:hashmap不是线程安全的、hashtable是线程安全的

14.hashtable线程安全怎么实现
回答:使用synchronized实现

15.ConcurrentHashMap实现线程安全?
回答:回答了 jdk1.7和1.8分别怎么实现的

16.乐观锁与悲观锁,分别的应用场景
回答:乐观锁和悲观锁回答出来了,但是应用场景说反了

17.synchronized和lock区别
回答:说了synchronized基于jvm的监视器锁机制,巴拉巴拉;而reentrantlock使用lock显示的获取锁。

18.lock和unlock底层怎么实现
回答:只记得判断state的状态来获取和释放锁,具体如何不知道

19.JVM的GC算法
回答:最开始回答了垃圾回收器,过一会才反应过来,

20.什么情况下触发GC
回答:说主要是因为内存不足,然后System.gc()方法,其他的不记得了

21.讲讲spring的IOC
回答:控制反转,把bean交给spring管理,解耦,方便维护和测试。依赖DI实现

22.依赖注入怎么实现
回答:静态、实力工厂、构造器、setter方法。(注解注入忘记了,没有说)

23.Spring事务注解@Transaction的底层实现
回答:只说了使用AOP和事务拦截器,替代传统的编程式事务(其他的不知道了,直接抱歉)

24.mysql的默认隔离级别
回答:read-committed,读已提交

25.read-committed是什么意思
回答:回答成了一个线程只能读取其他线程已提交的数据(哎,事务说成线程了)

26.其他的隔离级别以及解决了什么问题
回答:回答了其他的几个隔离级别对应解决的问题

27.如何实现可重复读
回答:这个忘记了,随便说了一个MVCC

28.MVCC如何实现
回答:版本号,读取数据快照

29.算法(没成功运行):
单链表奇数节点递增偶数节点递减,重排后使之升序,回答一下思路。
在纸上画了一下,过一会有了思路:把原链表拆分成两条链表,奇数节点链表和偶数节点链表,然后反转偶数节点链表,这时候就是合并两条有序链表。
面试官让我实现一下
代码写完之后,在合并代码那报空指针异常,检查了一下这个合并方法,问题不出在这,估计是前面的拆分链表的时候写错了。但是没检查出来哪里写错了。面试官说时间快到了,让我下去再看看。

反问:
通过这场面试,您觉得我应该往哪方面改进?
面试官反问,你觉得你前面的问题哪些没答好
我说了一些前面没回答好的问题
面试官说要了解框架、和一些技术的底层原理,不能只会用

#面经java#
全部评论
老哥我来点评一下:24mysql默认的隔离级别是可重复读,不是读已提交奥,项目这一块我感觉不要说练手的项目,给一个实际的应用背景,这样面试官才能拿聊下去。 Spring的事务是基于AOP的,还要会问事务传播机制、失效场景、分布式事务这些。MVCC是重点的。本质都是基于反射去实现的,加油
2 回复 分享
发布于 04-05 00:45 江苏
为啥我的字节面试官说不能把面试情况反馈给我呢
1 回复 分享
发布于 04-14 17:42 广东
感觉前面还好 算法没写出来这个应该才是致命的 字节太看重算法了
1 回复 分享
发布于 04-06 14:20 北京
码住了你的面经,感谢,顺便问问佬你关于微服务的八股都是在哪看的呢
点赞 回复 分享
发布于 07-01 22:50 北京
别灰心,广告部门感觉刷了巨多人
点赞 回复 分享
发布于 04-05 17:12 浙江
jichi的项目吗
点赞 回复 分享
发布于 04-04 22:25 重庆
感觉答的可以了呀为什么会挂
点赞 回复 分享
发布于 04-04 15:37 重庆
请问什么部门哇
点赞 回复 分享
发布于 04-04 15:14 辽宁
加油加油
点赞 回复 分享
发布于 04-03 20:50 北京

相关推荐

先说明一下bg吧本2硕9我个人感觉学历是对招聘有加成的在简历初筛和横向对比上确实会有加成。其实我个人是没有参加秋招的,具体原因后面再谈,算是春招比较极限拿到offer吧。先从简历来说吧。1. 如何写好一份简历?- 一定要突出自己的优势点,扬长避短例如:如果你是92的学历,在简历上学校后面打上一个985/211的tag例如:如果你是普通本硕,拿就多拿项目来说事我看过比较多的简历,发现很多人的简历写不到要点上,单从技术岗来说,什么对面试官或hr说是有吸引力的呢?如果没有学历优势那当然是是否和我的招聘要求是否匹配。所以我们第一件事就是仔细阅读要投递的招聘岗位的JD。然后根据JD进行优化,就拿我投递的golang岗位来说吧,要求会docker,有分布式经验,微服务开发经验。即便我们的项目是用的单体架构实现的,那么我们就可以根据JD来优化我们的项目(即使你真的没有优化自己的项目代码)怎么优化呢?就是在脑子想怎么把自己的单体架构拆分成微服务,里面涉及到的架构图我们要能画出来,是怎么进行通信的,最后部署用的docker或者k8s。当然你写进简历去了当然要去深入了解,而深入了解的过程就是背八股的过程。八股怎么背后面再聊。还有一点就是我看很多人写的项目并没有突出项目的重点,很多人写项目就是写我用了什么东西做出了个什么。然后没有写具体的应用场景,我个人认为有无应用场景是很重要的,有实际上线和引用说明你的项目有价值,比之其他人的“练手”项目要高级很多。以我自己为例,我本科的时候在护网期间做了一个蜜罐和反向代理的防火墙。然后在学校护网期间,日志记录蜜罐捕获了多少次攻击并且有完整的溯源路径,利用这个系统成功反制攻击方得分。这就是应用场景和产出,再比如我在学校给党建部开发过一个erp,实际上线遇到了什么业务问题,怎么进行解耦以及设计的最后上线应用成功迁移纸质文档到电子文档,这就是产出和应用场景。最后再项目经历后面添上自己用到的技术栈等等。- 再谈实习其实实习很多时候就是进去作dirty work的,mt和ld也不会指望你有多大产出。这个时候就需要包装实习,比如你是测试岗,你想找后端就包装后端岗位就行了。怎么包装呢?你做测试了你测出bug,然后定位具体bug原因是什么,这就是可以进行包装的地方,比如某个接口很慢然后你测出来了,然后和写这个代码的同学沟通为什么很慢,怎么排查的,他的排查经历就是可以包装成自己的,再就是熟悉业务流程。是否能把前端到后端请求返回数据的整个流程画出来,如果能画出来就知道这个业务的解决方案和场景(就算不懂也可以问后端同学具体的流程是什么样的)。而且语言也是相同的,比如你实习的go想找java,其实都是差不多的,goroutine的地方换成java多线程模型。以此类推,根据你的JD来包装自己的项目和实习。- 无关信息一些和岗位不相干的信息就别写了,比如什么学生会经历,班长经历什么的(争对于技术岗),获奖信息可以写但也限于技术获奖,无关获奖写进去也不加分,反而写一些大创,互联网+什么的真的了解的人觉得真的会很水很水反而扣分。2. 聊完简历再说说面试- 八股文可以说绝大多数校招考察的内容就是八股文,八股文涵盖的内容之宽泛会让人看了比较抓狂。数据结构,计算机网络,语言和框架的底层实现原理。可以说无所不包,甚至有些内容还是比较偏的。但我们也可以从JD,和面试经验总结一二。再说go,go后端喜欢问mysql,redis,mq以及基础数据底层实现以及gc,内存模型,内存泄露。计算机网络 http,https,tcp、udp。客户端喜欢问线程模型,线程和协程对比。计网和操作系统内核等内容。大家可以根据对应公司和岗位查询过往的面经。然后就是一定要录像或者录音备份,以供自己后来复盘,复盘自己哪里没答出没答对,然后不对做笔记,就算后面挂了也可以把内容放在网上请教大家的经验。我用的八股是面试鸭刷题当时开通应该是99块钱,现在不知道多少钱了(无广)。大概背了300多题,但其实很多题目内容是互通的就比如redis的哨兵和mq的备份,实现的思想其实就是一致的,通过备份来实现高可用。再就是通过开多个副本来实现高并发。其实只要明白了底层的思想,在面试的时候就算一时没想起来,也能这么跟面试官说,我们可以来一起捋一捋具体怎么实现的,从底层逻辑慢慢捋到具体的实现(我面试的时候就经常和面试官说我们可以一起来捋一遍设计的思想到具体的实现)- 手撕代码这部分没啥好说的,会就是会不会就是不会。只能靠刷题积累,一般来说面试映像好的话不至于出很难的题目,出很难的题目就是为难你,到时候直接说不会就行了。推荐leetcode hot100刷够3遍。- 再说被挂这应该是所有人都会经历的事情,除非你真的一出场就是满级号,那当我没说。我因为只经历了春招所以心理压力上还是比较大的,一开始投递tplink,直接简历挂(大概2月下旬投递的,然后快4月了挂了,这家真的垃圾公司),当时就是海投战术,各种线下招聘会,适合的岗位就一股脑全投了。经历过简历挂,面试挂(京东,美团,字节都挂过),笔试挂,尤其点名bilibili代码题全A一个月之后挂(真的很想笑,你不招人别放招聘信息嘚唔嘚啊)一度怀疑是自己的问题。但后来发现原来机会并不止这些头部大厂,后面放宽心态,早上中午晚上反复刷八股文,练习口语表述以及刷代码题。后面就算自己挂了也没有很失落,获得的京东反馈是横向被挂因为我是写go的哈哈哈京东要javaer,美团要的也是。字节因为确实运气不行问的东西比较偏没有掌握,后面慢慢积累从3月中旬开始面试经历了一个多月的拷打。获得了2家国企的offer,宁德时代的offer,好未来的offer,得物的offer。大概都是在4月底到5月初出的结果,其实这个时段已经快接近毕业答辩了。所以当时也有些急吧,不过在拿到第一个offer的时候就基本踏实了,所以有一个保底还是很重要的,这个保底怎么找呢?可以投递一些小公司,先放低期待。起码最后毕业了不会说待业状态,有了之后信心其实会大增,为后续面试打下基础。------------------------------------好了聊完招聘可以说说我是为什么没参加秋招的,因为被导师画饼了,研二下被导师外派到一家合作的初创公司。算是实习身份吧就是没有五险一金,但其实因为初创所以我是后端的leader(够神奇吧)我负责了该公司的后端架构设计以及一开始没有前端同学自己用reat-antd写前端。在一个月时间成功写出第一版单体架构,后面我面了前端的一位同学进来之后逐渐减轻了自己的开发压力。后面慢慢迭代版本和功能,拆分单体业务成了后面的微服务和分布式架构。当时给的工资是税前17k,我觉得这比待在学校好多了,后面也是被画饼了说留下来委以重任月薪给30+。奈何公司隐瞒了经营情况,导致去年11月份已经发不出工资了(就这个时候还在画饼说后面一定拿到融资,我还真信了)结果到了2月份依旧无果,果断参加春招最后比较极限找到了心仪的工作吧。------------------------------------写在最后我们总是会被当下的所谓的“失败”打击,过去认为被老师找家长天塌了,大学认为分手,记处分天塌了。到现在认为没有个好工作好对象天塌了,但经历过时间洗礼之后,不过是些许风霜罢了,只要还在这世上活着,那就有千千万万条道路可以走,共勉,我在此就祝愿大家都能找到自己的路~共勉之。
如何准备秋招
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
21
70
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务