当前位置: 首页 > news >正文

后端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 怎么做的呢?
http://www.lryc.cn/news/225237.html

相关文章:

  • 使用iperf3在macOS上进行网络性能测试
  • 09-MySQL主从复制
  • virtualBox虚拟机局域网访问配置
  • IDEA高效编程快捷键
  • nginx实现vue和后端的双机负载
  • ARMday03(寄存器读写、栈、程序状态寄存器、软中断和异常、混合编程)
  • Excel中功能区的存放位置很灵活,可以根据需要隐藏或显示
  • HelloGitHub 社区动态,开启新的篇章!
  • 【学术综述】-如何写出一篇好综述-写好综述要注意的问题
  • ClickHouse介绍和使用
  • 数码管动态扫描
  • Webpack 中 loader 的作用是什么?常用 loader 有哪些?
  • c#,字段和属性的区别
  • ideal一键部署SpringBoot项目jar包到服务器
  • 宝塔部署QQ机器人,提示OpenSSL 1.0.2k-fips 26 Jan 2017
  • K8S篇之简述K8S底层原理
  • 打开ps提示,计算机中丢失d3dcompiler_47.dll怎么解决?
  • torch.mm
  • github遇到想要强制拉取远程仓库内容
  • django+drf+vue 简单系统搭建 (2) - drf 应用
  • 【FastCAE源码阅读7】视图方向切换按钮实现原理
  • 小程序如何设置自取模式下的服务方式
  • 使用数据分析,识别设备异常
  • redis数据倾斜如何解决
  • ATFX汇市:美联储鲍威尔再发鹰派言论,美元指数逼近106关口
  • 【异常----finally和自定义异常】
  • C# OpenCvSharp 环形文字处理 直角坐标与极坐标转换
  • 计算机视觉与深度学习 | 视频/图像转换及保存播放(Matlab源码)
  • 网格变形算法
  • 2. Spark报错,Task is Failed,errorMsg: FileNotFoundException xxxx