一、开场 & 背景

  1. 先做一下自我介绍。
  2. 上一段实习有 3 个月?是线下还是线上?为什么考虑换实习?
  3. 来字节的话,能什么时候到岗?计划实习多久?半年以上能接受吗?
  4. 期末和线下课怎么处理?

二、方向匹配

  1. 你对方向有什么看法?我们是大数据开发平台,你了解吗?感不感兴趣?
  2. 我们这边整体偏后端业务,但要求一些大数据基础——你能接受这样的岗位定位吗?

三、Java 并发基础

  1. 创建线程的方式有哪些?
  2. 你说到"避免单继承冲突"那个点,能再解释清楚一点吗?
  3. sleepwait 的区别是什么?

四、RPC 项目深挖(Netty)

  1. 你简历里写了基于 Netty 的 RPC 框架——先从Java 语言层面的底层设计讲讲,整体是怎么做的?
  2. 你在框架里怎么用动态代理?能具体说一下吗?
  3. 你这个框架支持多语言?客户端有 Java/Python/Go?和 gRPC 是什么关系?
  4. 讲讲你框架里的 NIO 多路复用 是怎么做的?
  5. 讲讲 零拷贝 在你框架里是怎么用的?这是 Netty 提供的能力对吧?
  6. 你项目里还用了 SPI?怎么用的?举个例子。
  7. 为什么不用 JDK 自带的 ServiceLoader,而要自己写一个?

五、线程池

  1. 线程池用过吗?关键参数都了解吗?
  2. 拒绝策略有哪些?
  3. 你 RPC / Netty 里线程池怎么配置的?
  4. 四个关键参数(核心线程数、最大线程数、存活时间、阻塞队列)分别怎么设置?为什么这么设?

六、volatile

  1. 讲讲 volatile 关键字的作用。(为什么需要它?解决了什么问题?)

七、Spring

  1. 解释一下什么是 Bean,什么是 IOC 容器
  2. 常用的 Bean 作用域有哪些?除了 singleton 还用过别的吗?
  3. Bean 的生命周期了解吗?

八、算法题(限时 20 分钟)

  1. 代码相似度判断:输入两行代码,判断它们是否"相似"。相似的定义是:除了变量名和数值不同,其他部分(关键字、运算符等)完全一致。
    • 例:int a = 5int b = 3 → 相似
    • 例:int a = 5int a += 5 → 不相似
  2. (编码过程中)符号要覆盖 =+=-= 等,先按题目里给的 case 做。
  3. (Review)你的测试样例可能漏了几种情况,某些 case 没覆盖到——再检查一下。

九、项目挑战回顾

  1. 你做过的项目里最大的挑战是什么?花了多长时间解决?

十、上段实习追问

  1. 你说在上家公司被安排做边缘工作——你有没有主动沟通过想接核心任务?具体做了什么?

感觉这里是我不怎么会说话,确实不应该提到这个的,这个还是面试面少了没有经验,现在我倒是知道不能说这些负面评价的哈哈哈


面试官最后的反馈

优点:RPC 项目确实花了不少功夫,看得出来是自己独立完成的。

改进建议:

  • 总结能力:项目是自己写的,但三个月前的内容遗忘较快,需要更系统地做技术总结。
  • 表达能力:技术细节要讲得更有条理、更专业,把项目讲成一条主线,而不是零散的点。
  • 代码调试效率:可能你平时更习惯 IntelliJ IDEA,这次用 VS Code 定位 bug 速度偏慢,20 分钟的题写了约 30 分钟。出 bug 很正常,但定位速度是可以练的。

coding的题目很简单,但是我确实很久没有写代码了导致确实有点菜了,equals比较这些基本的错误都有,但是这个还是我自己的问题。然后就是vscode确实是我头一次尝试使用,他让我打开IDE,我随便开了一个,这也是唯一一个没有用平台测试的字节的面试官,可能日常实习没那么严格吧

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐