大连网站建设动态,郴州网站建设公司电话,wordpress 链接转换,简洁wordpress主题面试岗位为#xff1a;Java 后端开发实习生
面试时长#xff1a;30分钟
面试时间#xff1a;2023年11月10日
首先介绍一下项目吧
这里介绍时有一个失误#xff0c;没有主动把屏幕共享给打开#xff0c;因为我在面试之前已经在 processon 上画好了项目的流程图#xf…面试岗位为Java 后端开发实习生
面试时长30分钟
面试时间2023年11月10日
首先介绍一下项目吧
这里介绍时有一个失误没有主动把屏幕共享给打开因为我在面试之前已经在 processon 上画好了项目的流程图如果把屏幕共享打开的话给面试官介绍着会让面试官更容易理解这个很重要一定记着用流程图给面试官介绍
我的两个项目分别是手写 rpcGuide哥 和 API 网关项目小傅哥介绍项目时就介绍一下项目的流程还给面试官介绍了一下目前在校跟随实验室做项目有自己校内的也有接的外部的项目
rpc 是什么为什么要使用 rpc 通信框架呢
rpc 是远程过程调用使用 rpc 是因为 rpc 比较快使用 rpc 可以自己定义传输协议tpc协议避免传输无用的数据可以有效减少报文体积并且 rpc 是基于二进制流进行传输的http 是基于文本、json 串
后边查完资料补充rpc 通信框架都自带了负载均衡并且服务上线下线可以做到自动通知不影响上游调用者而 http 需要配置 nginx 来实现负载均衡并且如果新添加/修改 http 请求需要修改 nginx 配置
什么情况下使用 rpc 呢
在多个微服务之间使用 rpc 进行调用
查完资料补充rpc 一般用于分布式系统中常用于内部调用当项目太大需要解耦服务时可以使用 rpc 解决服务之间的调用问题
如果此时新增一个服务需要怎么做可以让其他服务进行调用
新增一个服务的话就将服务给注册到 Zookeeper 中去会根据服务的全限定类名作为一级节点将该服务的 Netty 通信地址作为一个二级节点存储在全限定类名下也就是在 com.zqy.test.HelloServiceImpl 下可以有多个节点提供服务比如192.168.1.1:8000, 192.168.1.2那么在其他服务需要调用时就去 zookeeper 中查询这个节点以及拿到该节点下的通信地址并且进行负载均衡拿到最终需要进行通信的地址。
这里本来是想说负载均衡使用了源地址哈希让客户端多次调用可以访问到同一个 rpc 服务可以建立有状态的会话
鉴权如何做了
使用 jwtshiro 进行实现当请求 API 网关时需要携带 jwt token鉴权时会通过 shiro 进行认证操作通过 subject.login() 之后在 Realm 对 jwt token 进行解码如果报错了说明认证失败拒绝进行后边的操作即可
上边是项目相关的接下来问了解过 Java 的源码吗
我说了解过 HashMap 的源码这一段时间其实一直准备 Redis、MySQL、Netty 相关的面试题Java 基础的一些源码还没有准备所以面试 Java 实习生、校招时一定先把 Java 基础的内容准备好其实在面试时距离上次学习 HashMap 面试题已经过去快半年了基本上忘记完了在 HashMap 上被拷打了快二十分钟正常面试就结束了HashMap 问的有下边几个问题明天会整理一篇 HashMap 面试题详细的文章出来
HashMap 底层结构怎么计算 HashMap 添加元素时的下标呢HashMap 怎么 put 元素什么时候会扩容呢HashMap 线程安全吗举一个不安全的例子如果想保证线程安全的话该如何做呢ConcurrentHashMap 怎么做的呢