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

技术宅小伙:看看面试官都问了些什么(Java系列)

喂你好啊。首先让我来做一个简单的自我介绍吧,面试官你好啊,我是...好的。那么在你6年的这个工作经历中啊,你积累了不少的技术经验,其中最熟悉的技术是Redis和Spring。让我们从你擅长的技术开始交流吧。

Radis的哨兵机制实现了集群监控和分布式高可用解决方案,主要用于监控Leader和Follower的状态。如果Leader出现故障,它会从Follower中选一个Leader出来,然后将变化交给Radis。如果哨兵也挂掉了,它会触发哨兵的自动选举,实现了Radis组成复制的高可用。在Spring Cloud中使用的Nacos注册中心也有类似的选举,而在消息队列中,比较典型的就是Kafka里面的组成选举。ZooKeeper也有一个Leader选举的过程,它们都是为了解决一些分布式系统的解决方案。

在电商场景中,秒杀场景是一个人人都非常熟悉的场景。如果让你来开发这个秒杀场景,你可能会遇到许多挑战。首先,在流量入口处,可能会有大量的用户请求同时到达服务器。而在服务器端,有限的资源用于处理请求,并且需要并发快速响应这些用户的请求。因此,在流量进入到入口之后,我们可能需要进行限流、防权、日志、监控等操作。在流量进入到入口之后,我们还需要解决一些流量交叉、资源隔离、服务区优化等问题,还需要使用一些经典的负载均衡和动态入口等。当流量进入入口并收到之后,我们可能还需要进行一些服务降级、服务限流和拒绝请求等操作。到后来,当请求穿透到这个部分之后,我们可能还需要使用缓存进行处理,并可能触发一些并发模型的场景,例如分布式锁同步不锁,库存扣减等。

在Java开发中,大多数开发人员使用框架进行开发。实际上,与其说是用Java开发,不如说是用Spring开发。根据你的介绍,Redis也是你比较熟悉的技术。使用Redis时,最常见的入口是耐磨VC。那么请你用自己的语言简述一下,Redis是如何通过哈希算法来管理数据的?

在了解这一点之前,我们首先要明白一个概念,哈希是什么。哈希实际上就是将任意长度的输入通过一个哈希算法转换为一个固定长度的输出。这也是它的优势之一,因为它使用的是纯数据,所以它的实现复杂度是O(1)。然后,它是Map的底层数据结构,即通过数组加列表的形式来存储数据。数据加列表的形式,实际上是为了解决哈希冲突的问题。对于相同的值,它会使用列表进行连接,然后用数据填充每一个列表。在任意长度的情况下,我们可以通过哈希这个key,使用哈希算法得到一个固定输出值。然后,我们可以使用它进行取模。取模之后,因为我们的数据结构是数组加列表,我们就会得到一个数组的下标,然后将其存入列表中。列表实际上是继承了一个安全节点的一个No节点的Key-Value结构。它里面存储了一个No节点的哈希、一个Key-Value,还有一个指向下一个单列表的指针。当你进行查询时,我们通过它的算法得到数的加和,然后如果数组为空,直接插入。如果不为空,我们就要去循环遍历这个列表,找到这个Key是否相等,如果相等修改它的值,如果不相等就在列表的末尾添加这个Key-Value等等的一些问题。

喂你好啊。首先让我来做一个简单的自我介绍吧,面试官你好啊,我是...好的。那么在你6年的这个工作经历中啊,你积累了不少的技术经验,其中最熟悉的技术是Redis和Spring。让我们从你擅长的技术开始交流吧。

Radis的哨兵机制实现了集群监控和分布式高可用解决方案,主要用于监控Leader和Follower的状态。如果Leader出现故障,它会从Follower中选一个Leader出来,然后将变化交给Radis。如果哨兵也挂掉了,它会触发哨兵的自动选举,实现了Radis组成复制的高可用。在Spring Cloud中使用的Nacos注册中心也有类似的选举,而在消息队列中,比较典型的就是Kafka里面的组成选举。ZooKeeper也有一个Leader选举的过程,它们都是为了解决一些分布式系统的解决方案。

在电商场景中,秒杀场景是一个人人都非常熟悉的场景。如果让你来开发这个秒杀场景,你可能会遇到许多挑战。首先,在流量入口处,可能会有大量的用户请求同时到达服务器。而在服务器端,有限的资源用于处理请求,并且需要并发快速响应这些用户的请求。因此,在流量进入到入口之后,我们可能需要进行限流、防权、日志、监控等操作。在流量进入到入口之后,我们还需要解决一些流量交叉、资源隔离、服务区优化等问题,还需要使用一些经典的负载均衡和动态入口等。当流量进入入口并收到之后,我们可能还需要进行一些服务降级、服务限流和拒绝请求等操作。到后来,当请求穿透到这个部分之后,我们可能还需要使用缓存进行处理,并可能触发一些并发模型的场景,例如分布式锁同步不锁,库存扣减等。

在Java开发中,大多数开发人员使用框架进行开发。实际上,与其说是用Java开发,不如说是用Spring开发。根据你的介绍,Redis也是你比较熟悉的技术。使用Redis时,最常见的入口是耐磨VC。那么请你用自己的语言简述一下,Redis是如何通过哈希算法来管理数据的?

在了解这一点之前,我们首先要明白一个概念,哈希是什么。哈希实际上就是将任意长度的输入通过一个哈希算法转换为一个固定长度的输出。这也是它的优势之一,因为它使用的是纯数据,所以它的实现复杂度是O(1)。然后,它是Map的底层数据结构,即通过数组加列表的形式来存储数据。数据加列表的形式,实际上是为了解决哈希冲突的问题。对于相同的值,它会使用列表进行连接,然后用数据填充每一个列表。在任意长度的情况下,我们可以通过哈希这个key,使用哈希算法得到一个固定输出值。然后,我们可以使用它进行取模。取模之后,因为我们的数据结构是数组加列表,我们就会得到一个数组的下标,然后将其存入列表中。列表实际上是继承了一个安全节点的一个No节点的Key-Value结构。它里面存储了一个No节点的哈希、一个Key-Value,还有一个指向下一个单列表的指针。当你进行查询时,我们通过它的算法得到数的加和,然后如果数组为空,直接插入。如果不为空,我们就要去循环遍历这个列表,找到这个Key是否相等,如果相等修改它的值,如果不相等就在列表的末尾添加这个Key-Value等等的一些问题。

除了Redis,你还熟悉哪些分布式技术?在分布式系统中,最常用的技术之一是分布式锁,你能为我们介绍一下分布式锁的实现原理吗?


http://www.kler.cn/a/7305.html

相关文章:

  • 调用门提权
  • 【Mysql】Mysql的多表查询---多表联合查询(上)
  • 24-Ingest Pipeline Painless Script
  • 外网访问 WebDav 服务
  • 【人工智能】迁移学习在深度学习中的应用:用Python实现自定义数据集图像分类
  • Python爬虫项目 | 一、网易云音乐热歌榜歌曲
  • SpringCloud服务注册中心——Eureka
  • 华为阿里版ChatGPT横空出世,谁的成效更好呢?
  • 【云原生进阶之容器】第五章容器运行时5.2节--容器运行时接口规范CRI
  • [论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4
  • esxi的安装配置以及新建虚拟机
  • Java核心技术知识点笔记—视图与包装器
  • 【视频分割】【深度学习】MiVOS官方Pytorch代码--Propagation模块解析
  • No.026<软考>《(高项)备考大全》【第10章】项目沟通和干系人管理(第2部分-干系人管理)
  • 【C语言进阶:自定义类型详解】枚举
  • 8个全球性编程比赛,天才程序员的梦想舞台
  • 零中频接收机中的杂散信号
  • 信息收集与运用
  • 蓝桥杯基础9:BASIC-6试题 杨辉三角形
  • 算法竞赛进阶指南0x61 最短路
  • 第一批被AI淘汰的人已经出现,你距离失业还有多远?
  • 【ansible】实施任务控制
  • 分享一个免梯子的GPT,刷题和学习的好帮手
  • 论文笔记 | 标准误聚类问题
  • 【剪枝】个人练习-Leetcode-167. Two Sum II - Input Array Is Sorted
  • Rsync远程同步