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

news/2024/11/9 2:59: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.ppmy.cn/news/1209130.html

相关文章

【Git企业开发】第六节.配置 Git和标签管理

文章目录 前言一、配置 Git 1.1 忽略特殊文件 1.2 给命令配置别名二、标签管理 2.1 理解标签 2.2 创建标签 2.3 操作标签 总结 前言 一、配置 Git 1.1 忽略特殊文件 在日常开发中,我们有些文件不想或者不应该提交到远端,…

网格变形算法

网格变形 需求分析技术分析 需求分析 根据几何模型上的几个特征点,对几何模型进行变形。比如 技术分析 把几何模型使用三角面片表示,然后通过网格映射变形进行实现。关于网格这块有本经典的书可以参考,《ploygon mesh processing》。上面…

TLSR8258应用笔记

TLSR8258应用笔记 调试UART的注意事项 调试UART的注意事项 调试串口UART,除了基本的波特率,起始位,数据位,校验位,结束位等设置,还要注意UART控制寄存器中TTL位的设置。置位TTL位可以使UART匹配RS232电平&…

19、Flink 的Table API 和 SQL 中的自定义函数及示例(4)

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

遇到问题[已解决]TypeError: ‘odict_keys‘ object is not subscriptable

背景 运行CPD代码时,由于源代码踊跃python2.7,但是我的是3.8出现报错 【Python3】【报错】- TypeError: ‘dict_keys‘ object is not subscriptable-CSDN博客 原因: 在Python3中,keys()方法不允许切片 VGG代码如下 解决办法: 就…

​怎么测试websocket接口

在部分业务中,我们需要使用长连接,我们可以使用http长连接或者websocket,开发结束后难免会遇到测试问题,这里推荐2个,一个是postman,一个是网站 postman 测试网站 测这边推荐测试网站,支持ws/w…

C++智能指针的使用:shared_ptr、weak_ptr、unique_ptr的使用,使用案例说明。

系列文章目录 本章内容: (1)shared_ptr、weak_ptr、unique_ptr的介绍 (2)单独使用share_ptr造成的内存泄漏 (3)shared_ptr和weak_ptr的配合使用 文章目录 系列文章目录前言一、shared_ptr、wea…

【STM32】HAL库UART含校验位的串口通信配置BUG避坑

【STM32】HAL库UART含校验位的串口通信配置BUG避坑 文章目录 UART协议校验位HAL库配置含校验位的串口配置BUG避坑附录:Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏定义总线函…