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

快手二面准备【面试准备】

快手二面准备【面试准备】

  • 前言
  • 版权
  • 快手二面准备
    • 秋招一面中的问题
    • 实习一面中的问题
    • 计算机网络和操作系统
    • 论坛项目登录注册
    • ThreadLocal代替session存储用户
    • 秒杀项目登录注册->阿里验证码->rpc
    • session为什么改为token实现,redis存储用户信息
    • 由binlog的用法->缓存和数据库的一致性
    • 3种缓存更新策略是怎样的?
    • ES搜索->Mysql全文索引
    • MySQL8的索引新特性
    • redis的高级数据结构
    • 代理模式->设计模式
    • 为什么使用mq
    • mq
    • es的构成
    • 倒排索引的理解:
    • mq的消息类型
    • 缓存相关的问题
    • kafka的角色
    • rocketmq的角色
  • 最后

前言

2023-8-1 17:33:53

公开发布于
2024-5-21 13:07:32

以下内容源自《【面试准备】》
仅供学习交流使用

版权

禁止其他平台发布时删除以下此话
本文首次发布于CSDN平台
作者是CSDN@日星月云
博客主页是https://blog.csdn.net/qq_51625007
禁止其他平台发布时删除以上此话

快手二面准备

秋招一面中的问题

rpc

远程过程调用

kafka为啥会丢消息

rocketmq怎么保证不丢消息

RocketMQ通过以下几种机制来保证消息不丢失:消息持久化:RocketMQ将消息写入磁盘中进行持久化存储,即使在发生系统故障或重启时,消息也能够被恢复。内存双写:RocketMQ在将消息持久化到磁盘之前,先将消息写入内存中的PageCache中。这种方式可以提高写入速度,并且在发生宕机时,可以通过从磁盘中加载消息来进行快速恢复。同步刷盘:RocketMQ提供了同步刷盘机制,即在消息写入磁盘之前,会等待消息被写入磁盘后才返回发送成功的响应。这样可以确保消息被持久化到磁盘中,避免消息丢失。主从同步:RocketMQ支持主从模式,即一个主节点和多个从节点。主节点负责将消息发送给消费者,从节点负责备份主节点的消息。当主节点宕机时,可以通过从节点快速切换来提供高可用性,并避免消息丢失。高可靠性队列:RocketMQ提供了高可靠性的队列机制,确保消息的可靠传输。通过设置消息的发送模式为同步模式,发送方在消息发送完成之前会等待Broker的确认响应,确保消息可靠传输。消息重试机制:RocketMQ提供了消息重试机制,当消息发送失败时,会自动进行重试。可以通过设置重试次数和重试间隔来控制重试的策略,确保消息最终被正确处理。综上所述,RocketMQ通过持久化、内存双写、同步刷盘、主从同步、高可靠性队列和消息重试机制等多种机制来保证消息不丢失。开发人员也可以根据自己的需求和业务场景,选择适当的配置和策略来保证消息的可靠性。
RocketmqBroker的刷盘策略有哪些?同步刷盘
SYNC_FLUSH(同步刷盘):生产者发送的每一条消息都在保存到磁盘成功后才返回告诉生产者成功。这种方式不会存在消息丢失的问题,但是有很大的磁盘IO开销,性能有一定影响。
异步刷盘
ASYNC_FLUSH(异步刷盘):生产者发送的每一条消息并不是立即保存到磁盘,而是暂时缓存起来,然后就返回生产者成功。随后再异步的将缓存数据保存到磁盘,有两种情况:1是定期将缓存中更新的数据进行刷盘,2是当缓存中更新的数据条数达到某一设定值后进行刷盘。这种异步的方式会存在消息丢失(在还未来得及同步到磁盘的时候宕机),但是性能很好。默认是这种模式。

秒杀为什么选择rocketmq

rocketmq支持发布事务性消息

实习一面中的问题

es与数据库之间的同步

使用的是kafka来实现的redis是在刷新帖子分数时
点赞评论之后,记录需要刷新的帖子id
供Quartz定时计算帖子分数,然后刷新到数据库

动态代理

基于接口的代理:jdk
基于类的代理:cglib

了解过监听binlog吗

计算机网络和操作系统

http

https

tcp和upd

dns

论坛项目登录注册

一个问题,验证邮箱丢失问题

提供重新发送激活邮箱的服务

ThreadLocal代替session存储用户

拦截器

@preHandle
获取登录凭证@postHandle
前端添加loginUser@afterCompletion
清除HostHold

四种对象引用

本地线程存储

内存泄漏问题

秒杀项目登录注册->阿里验证码->rpc

原来验证码输出到控制台里

session为什么改为token实现,redis存储用户信息

由binlog的用法->缓存和数据库的一致性

数据库和缓存如何保证一致性?

它的用法:
主从复制
数据库恢复

还有一个,订阅binlog解决缓存和数据库的一致性

缓存和数据库一致性:
先更新数据库,后删除缓存。

可能还会有问题

延迟双删

但是更新数据库和删除缓存是两个操作

万一删除失败了,怎么办?

  • 重试,消息队列
  • 订阅binlog

3种缓存更新策略是怎样的?

面试官:3种缓存更新策略是怎样的?

Cache Aside(旁路缓存)策略是最常用的,应用程序直接与「数据库、缓存」交互,并负责对缓存的维护,该策略又可以细分为「读策略」和「写策略」。

在这里插入图片描述
Read/Write Through(读穿 / 写穿)策略原则是应用程序只和缓存交互,不再和数据库交互,而是由缓存和数据库交互,相当于更新数据库的操作由缓存自己代理了。

下面是 Read Through/Write Through 策略的示意图:

在这里插入图片描述

Write Back(写回)策略在更新数据的时候,只更新缓存,同时将缓存数据设置为脏的,然后立马返回,并不会更新数据库。对于数据库的更新,会通过批量异步更新的方式进行。

实际上,Write Back(写回)策略也不能应用到我们常用的数据库和缓存的场景中,因为 Redis 并没有异步更新数据库的功能。

在这里插入图片描述

ES搜索->Mysql全文索引

MySQL全文检索临时代替ES实现快速搜索

模糊查询:like '%关键词'

MySQL 中使用全局变量ngram_token_size来配置ngram中n的大小,它的取值范围是1到10,默认值是2。通常ngram_token_size设置为要查询的单词的最小字数。如果需要搜索单字,就要把ngram_token_size设置为1。在默认值是2的情况下,搜索单字是得不到任何结果的。因为中文单词最少是两个汉字,推荐使用默认值2。

CREATE FULLTEXT INDEX idx_名 ON(字段) WITH PARSER ngram;
select - from  -
where MATCH (columnName) AGAINST ('keywords')

MySQL8的索引新特性

降序索引

隐藏索引

redis的高级数据结构

拦截器:记录uv,dau访问过一次判断其为活跃

hyperLogLog
统计uv
key:uv_日期
value:ip
add()
指定日期范围统计union()之后再size返回

bitmap
统计dau
key:dau_日期
value:userId
setBit()
统计指定日期范围内的DAU OR运算 bitCount()

代理模式->设计模式

单例模式

工厂模式

为什么使用mq

解耦 异步 削峰

比如:论坛项目中的,关注,点赞或评论帖子,做系统通知

如果写出一个方法的话,还需要保证事务,设置事务的传播行为

但是别人点赞了,和你收到系统通知,其实是两个业务

别人点赞了,系统通知的业务执行失败,你也不能回滚

这两个操作也是异步的

削峰,秒杀项目的

mq

【消息队列】五个问题详解消息中间件

【RocketMQ】原理分析:消息存储机制

【RocketMQ】消息可靠性保证

【Kafka】原理分析:消息的文件存储机制

【Kafka】消息可靠性保证

同步刷盘

es的构成

Elasticsearch由以下几个主要组件构成:

  • 节点(Nodes):节点是Elasticsearch的基本组成单位,每个节点代表一个运行的实例。一个Elasticsearch集群可以由多个节点组成,每个节点都有自己的名称和唯一的ID。节点之间可以通过集群通信进行相互发现、数据同步和协作。

  • 索引(Indexes):索引是一种用于组织和存储数据的逻辑容器。它类似于数据库中的表,可以包含多个文档(documents)。每个索引都具有唯一的名称,用于标识它所包含的数据类型或内容。

  • 类型(Types):在早期版本的Elasticsearch(5.x及以前的版本),索引可以包含多个类型。类型是索引中的一个逻辑类别,用于区分不同类型的文档。然而,在5.x以后的版本中,Elasticsearch不再推荐使用多个类型,建议将不同类型的数据拆分为独立的索引。

  • 文档(Documents):文档是Elasticsearch中的基本数据单元。它可以是任意结构的JSON对象,类似于数据库中的记录。每个文档都有一个唯一的ID,用于标识它在索引中的位置。文档可以被索引、搜索和修改。

  • 分片和副本(Shards and Replicas):为了实现高可用性和扩展性,Elasticsearch将索引分割成多个分片(shards),每个分片可以在集群中的不同节点上进行分布。分片允许索引数据被并行处理和存储。为了提高数据的冗余性和可靠性,每个分片可以有多个副本(replicas),副本是分片的精确拷贝。

以上是Elasticsearch的基本构成,它们一起工作来提供高效的分布式搜索和分析功能。

倒排索引的理解:

倒排索引(Inverted Index)是一种用于快速定位文档的索引结构。在倒排索引中,每个关键词都维护了一个包含包含该关键词的文档列表。通过倒排索引,可以快速地找到包含特定关键词的文档,而无需遍历所有文档。

倒排索引的构建过程包括以下几个步骤:

文档分词:将每个文档拆分为一个个的词语(或称为术语,terms),这通常是通过分词器(tokenizer)来实现的。分词器可以根据各种规则和算法将文本切分为合适的词语。

构建倒排索引:对于每个词语,将它出现的文档ID记录到倒排索引中。倒排索引的数据结构通常是一个关联数组(Associative Array),其中词语作为键,文档ID的列表作为值。

优化倒排索引:为了提高查询性能和减少索引的大小,通常还会对倒排索引进行优化。例如,可以使用压缩算法对文档ID列表进行压缩,或者使用数据结构如跳表(Skip List)来加速查找过程。

通过倒排索引,可以在搜索时快速定位包含特定关键词的文档。比如,当用户在搜索引擎中输入一个关键词时,搜索引擎可以通过倒排索引找到包含该关键词的文档,并返回给用户相关的搜索结果。倒排索引是大部分搜索引擎(包括Elasticsearch)的核心组成部分,它能够提供快速、灵活和准确的搜索功能。

mq的消息类型

缓存相关的问题

缓存和数据库的一致性

先更新数据库再删除缓存

库存的一致性是mq实现事务消息

缓存穿透

场景:
场景查询根本不存在的数据,使得请求直达存储层
导致其负载过大,甚至宕机。

解决方案:
1.缓存空对象存储层未命中后,仍然将空值存入缓存层。再次访问该数据时,缓存层会直接返回空值。
2.布隆过滤器将所有存在的key提前存入布隆过滤器,在访问缓存层之前,先通过过滤器拦截,若请求的是不存在的key,则直接返回空值。

缓存击穿

场景:
一份热点数据,它的访问量非常大。在其缓存失效瞬间,大量请求直达存储层,导致服务崩溃。

解决方案:
1.加互斥锁对数据的访问加互斥锁,当一个线程访问该数据时,其他线程只能等待。这个线程访问过后,缓存中的数据将被重建,届时其他线程就可以直接从缓存取值。
2.永不过期不设置过期时间,所以不会出现上述问题,这是“物理”上的不过期。为每个value设置逻辑过期时间,当发现该值逻辑过期时,使用单独的线程重建缓存。

缓存雪崩
场景:
由于某些原因,缓存层不能提供服务,导致所有的请求直达存储层,造成存储层宕机。
解决方案:
1.避免同时过期设置过期时间时,附加一个随机数,避免大量的key同时过期。
2.构建高可用的Redis缓存部署多个Redis实例,个别节点宕机,依然可以保持服务的整体可用。
3.构建多级缓存增加本地缓存,在存储层前面多加一级屏障,降低请求直达存储层的几率。
4.启用限流和降级措施对存储层增加限流措施,当请求超出限制时,对其提供降级服务。

kafka的角色

Kafka的角色包括以下几个:

  • 生产者(Producer):负责将消息发送到Kafka集群,并且可以选择将消息发送到特定的主题(Topic)。
  • 消费者(Consumer):从Kafka集群中读取消息,并且可以选择订阅一个或多个主题。
  • 主题(Topic):是消息的逻辑容器,可以理解为消息的分类或者主题。
  • 分区(Partition):每个主题可以被分为一个或多个分区,每个分区对应一个日志文件。
  • 消费者组(Consumer Group):消费者可以组成一个或多个消费者组,每个组可以订阅一个或多个主题。
  • Kafka集群(Kafka Cluster):由多个Kafka实例组成的集群,用于存储和处理消息。
  • Broker:Kafka集群中的每个节点就是一个Broker,负责存储和处理消息。
  • ZooKeeper:Kafka使用ZooKeeper来管理集群的元数据,包括主题、分区等信息。
  • 消息(Message):Kafka中的基本单位,由键(Key)和值(Value)组成。
  • 日志(Log):Kafka使用日志文件来存储消息,每个分区对应一个日志文件。

以上是Kafka的主要角色,每个角色在Kafka中都扮演着不同的角色和功能。

rocketmq的角色

RocketMQ的角色包括以下几个:

  • 生产者(Producer):负责将消息发送到RocketMQ集群,并且可以选择将消息发送到特定的主题(Topic)。
  • 消费者(Consumer):从RocketMQ集群中读取消息,并且可以选择订阅一个或多个主题。
  • 主题(Topic):是消息的逻辑容器,可以理解为消息的分类或者主题。
    消费者组(Consumer Group):消费者可以组成一个或多个消费者组,每个组可以订阅一个或多个主题。
  • Broker:RocketMQ集群中的每个节点就是一个Broker,负责存储和处理消息。
  • 消息(Message):RocketMQ中的基本单位,由键(Key)和值(Value)组成。
  • 消息队列(Message Queue):每个主题可以被分为一个或多个消息队列,每个消息队列对应一个消费者线程。
  • 消息存储(Message Store):RocketMQ使用消息存储来存储消息,包括内存存储和磁盘存储。
  • NameServer:RocketMQ使用NameServer来管理集群的元数据,包括主题、消费者组等信息。
  • 消息消费进度(Offset):RocketMQ可以跟踪每个消费者组在每个主题的消费进度,以确保消息的顺序性和可靠性。

以上是RocketMQ的主要角色,每个角色在RocketMQ中都扮演着不同的角色和功能。

最后

2023-8-1 21:18:19

我们都有光明的未来

祝大家考研上岸
祝大家工作顺利
祝大家得偿所愿
祝大家如愿以偿
点赞收藏关注哦

相关文章:

快手二面准备【面试准备】

快手二面准备【面试准备】 前言版权快手二面准备秋招一面中的问题实习一面中的问题计算机网络和操作系统论坛项目登录注册ThreadLocal代替session存储用户秒杀项目登录注册->阿里验证码->rpcsession为什么改为token实现,redis存储用户信息由binlog的用法->…...

贪心算法2(c++)

最大子矩阵 描述 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1*1)子矩阵。 比如,如下4*4的矩阵 0- 2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0-2 的最大子矩阵是 9 2 -4 1 -18 这个子矩阵的大小是15。 输入…...

Bugku Crypto 部分题目简单题解(四)

目录 python_jail 简单的rsa 托马斯.杰斐逊 这不是md5 进制转换 affine Crack it rsa python_jail 启动场景 使用虚拟机nc进行连接 输入print(flag) 发现报错,经过测试只能传入10个字符多了就会报错 利用python中help()函数,借报错信息带出flag变…...

软考备考三

操作系统 操作系统概述 功能:组织和管理软件,硬件资源以及计算机系统中的工作流程,控制程序的执行,向用户提供接口。 分类: 1.批处理操作系统 单道批 多道批(宏观上并行,微观上串行&#xff09…...

Fortran: select type

Fortran: select type 实现类似C的template函数功能 module M_reduceuse mpi_f08interface reducemodule procedure reduce_scalar,reduce_arrayend interface reducecontains!!https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man3/MPI_Reduce.3.htmlsubroutine reduce_ar…...

QEMU启动Linux内核

在QEMU环境下启动linux内核命令如下: QEMU_AUDIO_DRVnone qemu-system-arm -m 256M -nographic -M versatilepb -kernel /home/yukeyang/myfile/linux-6.6.30/arch/arm/boot/zImage -append "consolettyAMA0 rdinit/bin/sh" -dtb arch/arm/boot/dts/arm/…...

Golang | Leetcode Golang题解之第109题有序链表转换二叉搜索树

题目: 题解: var globalHead *ListNodefunc sortedListToBST(head *ListNode) *TreeNode {globalHead headlength : getLength(head)return buildTree(0, length - 1) }func getLength(head *ListNode) int {ret : 0for ; head ! nil; head head.Next…...

Qt快速入门到熟练(电子相册项目(一))

经过一段时间的学习,相信大家对QT的基本用法都有所了解,从这篇文章开始,我准备记录一下电子相册的项目的一个学习过程。 实现项目创建功能 对于这个电子相册的项目,我并没有在一开始就把所有可能用到的功能模块去事无巨细的考虑周…...

机械臂与Realsense D435 相机的手眼标定ROS包

本教程主要介绍机械臂与 Realsense D435 相机手眼标定的配置及方法。 系统:Ubuntu 20.0.4 ◼ ROS:Noetic ◼ OpenCV 库:OpenCV 4.2.0 ◼ Realsense D435:librealsense sdk(2.50.0)、realsense-ros 功能包&…...

ubuntu使用记录——如何使用wireshark网络抓包工具进行检测速腾激光雷达的ip和端口号

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言wireshark网络抓包工具1.wireshark的安装2.wireshark的使用3.更改雷达ip 总结 前言 Wireshark是一款备受赞誉的开源网络协议分析软件,其功能之强大…...

C#学习指南:重要内容与实用技巧

学习C#编程是一段充满挑战但又非常充实的旅程。以下是我在学习过程中积累的一些经验,希望能对大家有所帮助。 一、掌握基础概念 类及其成员 C#中的类是编程的基础模块。理解类的结构、属性、方法和构造函数是至关重要的。每个类都有其特定的功能,学会如…...

display(a,b)什么意思

在Python中,如果你看到display(a,b)这样的代码,它通常意味着有人正在使用IPython.display模块中的display函数来同时显示两个对象。 IPython.display是Jupyter Notebook和JupyterLab等交互式计算环境的一部分,它提供了一种在笔记本中显示各种…...

SpringBoot3整合阿里云短信服务-1(配置阿里云短信服务)

SpringBoot3整合阿里云短信服务-1(配置阿里云短信服务) 一、开通阿里云短信服务 阿里云官网:阿里云官网 选择产品中企业服务与云通信中的短信服务 选择免费开通 选择快速学习和测试 根据这几个全部配置一下我这里是配置好了所以学习进度是100% 1.1 添加资质 首先选择新增资质 …...

基于HAL库控制LED流水灯

一. 了解并掌握HAL库函数开发方法。安装 stm32CubeMX,配合Keil,使用HAL库方式完成下列任务: 1、重做上一个LED流水灯作业,用GPIO端口完成2只LED灯的周期闪烁。 2、接上,再用GPIO端某一管脚接一个开关(用杜邦…...

利用kubeadm安装k8s集群 以及跟harbor私有仓库下载镜像

目录 环境准备 master(2C/4G) 192.168.88.3 docker、kubeadm、kubelet、kubectl、flannel node01(2C/2G) 192.168.88.4 docker、kubeadm、kubelet、kubectl、flannel node02(…...

明天(周六)下午!武汉Linux爱好者线下沙龙,我们在华中科技大学等你!

2024 年 5月 25 日(周六)下午,我们将在「武汉市洪山区」 珞喻路 1037 号华中科技大学南五楼 613 室举办武汉 Linux 爱好者线下沙龙(WHLUG),欢迎广大 Linux 爱好者来到现场,与我们一同交流技术&a…...

MySQL主从复制(五):读写分离

一主多从架构主要应用场景:读写分离。读写分离的主要目标是分摊主库的压力。 读写分离架构 读写分离架构一 架构一结构图: 这种结构模式下,一般会把数据库的连接信息放在客户端的连接层,由客户端主动做负载均衡。也就是说由客户…...

阿里巴巴 EasyExcel 真正的高效与通用导入(亿级数据秒级导入)

需要lombok、hutool、alibaba EasyExcel 相关依赖包 基于Lamba表达式的通用监听器 import cn.hutool.core.util.StrUtil; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import lombok.experimental.UtilityClass…...

32.5k star!!替换 postman?【送源码】

在软件开发过程中,API(应用程序接口)扮演着至关重要的角色。为了确保 API 的可靠性和性能,开发人员需要一种高效的方式来测试和调试它们。这方面的工具,大家经常用到的应该就是 postman 了。不过,今天了不起…...

课时135:awk实践_逻辑控制_综合实践

1.3.8 综合实践 学习目标 这一节,我们从 网络实践、文件实践、小结 三个方面来学习 网络实践 简介 所谓的网络实践,主要是借助于awk的数组功能,进行站点的信息统计操作。准备网络环境 安装软件 yum install nignx -y重启nginx [rootloca…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...