后端Java日常实习生面试(2023年11月10日)

面试岗位为:Java 后端开发实习生

面试时长:30分钟

面试时间:2023年11月10日

  1. 首先介绍一下项目吧

这里介绍时有一个失误,没有主动把屏幕共享给打开,因为我在面试之前已经在 processon 上画好了项目的流程图,如果把屏幕共享打开的话,给面试官介绍着,会让面试官更容易理解,这个很重要!一定记着用流程图给面试官介绍!

我的两个项目分别是:手写 rpc(Guide哥) 和 API 网关项目(小傅哥),介绍项目时,就介绍一下项目的流程,还给面试官介绍了一下目前在校跟随实验室做项目,有自己校内的也有接的外部的项目

  1. rpc 是什么?为什么要使用 rpc 通信框架呢?

rpc 是远程过程调用,使用 rpc 是因为 rpc 比较快,使用 rpc 可以自己定义传输协议(tpc协议),避免传输无用的数据,可以有效减少报文体积并且 rpc 是基于二进制流进行传输的,http 是基于文本、json 串

(后边查完资料补充:rpc 通信框架都自带了负载均衡,并且服务上线下线可以做到自动通知,不影响上游调用者,而 http 需要配置 nginx 来实现负载均衡,并且如果新添加/修改 http 请求,需要修改 nginx 配置)

  1. 什么情况下使用 rpc 呢?

在多个微服务之间使用 rpc 进行调用

(查完资料补充:rpc 一般用于分布式系统中,常用于内部调用,当项目太大,需要解耦服务时,可以使用 rpc 解决服务之间的调用问题)

  1. 如果此时新增一个服务,需要怎么做可以让其他服务进行调用?

新增一个服务的话,就将服务给注册到 Zookeeper 中去,会根据服务的全限定类名作为一级节点,将该服务的 Netty 通信地址作为一个二级节点存储在全限定类名下,也就是在 com.zqy.test.HelloServiceImpl 下可以有多个节点提供服务,比如192.168.1.1:8000, 192.168.1.2,那么在其他服务需要调用时,就去 zookeeper 中查询这个节点,以及拿到该节点下的通信地址,并且进行负载均衡拿到最终需要进行通信的地址。

(这里本来是想说负载均衡使用了源地址哈希,让客户端多次调用可以访问到同一个 rpc 服务,可以建立有状态的会话)

  1. 鉴权如何做了?

使用 jwt+shiro 进行实现,当请求 API 网关时需要携带 jwt token,鉴权时会通过 shiro 进行认证操作,通过 subject.login() 之后在 Realm 对 jwt token 进行解码,如果报错了,说明认证失败,拒绝进行后边的操作即可

上边是项目相关的,接下来问了解过 Java 的源码吗?

我说了解过 HashMap 的源码,这一段时间其实一直准备 Redis、MySQL、Netty 相关的面试题,Java 基础的一些源码还没有准备,所以面试 Java 实习生、校招时,一定先把 Java 基础的内容准备好,其实在面试时,距离上次学习 HashMap 面试题已经过去快半年了,基本上忘记完了,在 HashMap 上被拷打了快二十分钟,正常面试就结束了,HashMap 问的有下边几个问题,明天会整理一篇 HashMap 面试题详细的文章出来:

  1. HashMap 底层结构
  2. 怎么计算 HashMap 添加元素时的下标呢?
  3. HashMap 怎么 put 元素?
  4. 什么时候会扩容呢?
  5. HashMap 线程安全吗?举一个不安全的例子?
  6. 如果想保证线程安全的话,该如何做呢?
  7. ConcurrentHashMap 怎么做的呢?
相关推荐
zzzll111110 小时前
Claude Code离线安装方案揭秘
开发语言·php
mifengxing11 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
wling030111 小时前
vasp虚频计算-python脚本
开发语言·windows·python·vasp计算
郝学胜-神的一滴11 小时前
Qt 高级编程 040:按钮悬浮弹出滑块弹窗的完整攻略
开发语言·c++·qt·软件工程·用户界面
xrandzj12 小时前
Python面向对象编程入门:类、实例、初始化与封装实践
开发语言·python
DLYSB_13 小时前
API 网关流量洪峰与突发 CC 攻击:我用 Go 写了个“现场物理防御哨兵”,把故障响应压缩到秒级
开发语言·后端·golang·报警灯
markinmarkin13 小时前
Spring 中Bean 的作用域有哪些?
java·后端·spring
城管不管14 小时前
第六次面试2026.8.5北京一面已OC
面试·职场和发展
山荷枝14 小时前
Java学习第十天
java·学习
kyriewen15 小时前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试