自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 面试题:你所了解的设计模式?

Java中的设计模式是面向对象设计中的一套经典解决方案,它们是解决常见设计问题的通用模板。设计模式分为三大类:创建型模式、结构型模式和行为型模式。下面列举了这三类设计模式的典型代表,但请注意,设计模式的运用不仅仅局限于Java,而是广泛应用于各种面向对象编程语言中。

2024-06-17 21:06:12 684

原创 面试题:谈谈Nginx

反向代理是指以代理服务器来接受 internet 上的连接请求,然后将请求,发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。反向代理总结就一句话:代理端代理的是服务端.一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。正向代理总结就一句话:代理端代理的是客户端。

2024-06-17 21:03:37 487

原创 面试题:Comparable和Comparator的异同点?

在Collections.sort()中使用不同:一个参数,默认是Comparable自然排序,二个参数,需要传入Comparator外部排序。排序方法不同:Comparable重写方法compareTo(T o),Comparator重写方法compare(T o1, T o2)接口所在包不同:java.lang.Comparable、java.util.Comparator。排序规则数量限制不同:Comparable唯一字段排序,Comparator可以有多个字段排序。,Comparator是。

2024-06-17 20:56:44 284

原创 面试题:实现 Serializable 接口就算了, 为什么还要显示指定 serialVersionUID 的值? static 属性为什么不会被序列化?

在Java中,要实现对象的序列化和反序列化,需要让该类实现接口实际上是一个标志接口(Marker Interface),这意味着它不包含任何方法。当一个类实现了接口,就是在向Java序列化机制表明:“这个类的对象是可以被序列化的”。这是Java序列化机制识别可序列化类的一个标准。:通过实现接口,Java的序列化机制会自动采用默认的序列化规则来处理该类的实例。这意味着,除非特别标注(如使用transient关键字标记不需要序列化的成员变量),否则类中的所有实例变量(包括基本类型和实现了。

2024-06-17 20:54:31 368

原创 面试题:序列化?反序列化?

序列化:把对象转换为字节序列的过程称为对象的序列化.反序列化:把字节序列恢复为对象的过程称为对象的反序列化.

2024-06-17 20:46:00 306

原创 面试题:Ribbon与Nginx的区别?

Nginx 是客户端所有请求统一交给 Nginx,由 Nginx 进行实现负载均衡请求转发,属于服务器端负载均衡。既请求由 Nginx 服务器端进行转发服务端负载均衡具有以下特点:需要建立一个独立的负载均衡服务器。负载均衡是在客户端发送请求后进行的,因此客户端并不知道到底是哪个服务端提供的服务。可用服务端清单存储在负载均衡服务器上。

2024-06-17 20:40:55 206

原创 面试题:Java中的浅拷贝与深拷贝?

在Java中,对象的复制分为深拷贝(Deep Copy)和浅拷贝(Shallow Copy)两种方式,主要区别在于对对象内部引用类型成员变量的处理不同。

2024-06-17 20:35:25 295

原创 面试题:什么是延迟双删?

该策略主要应用于分布式系统中,目的是在更新数据库的同时,确保缓存中的数据也能得到正确的更新,避免出现数据不一致的问题。4)、最后的的写数据的休眠时间:则在读数据业务逻辑的耗时基础上,加几百ms即可。2)、这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。在写操作开始时,先从缓存中删除数据,为了防止后续操作读取到旧数据。1)、需要评估自己的项目的读数据业务逻辑的耗时。在缓存删除后,立即更新数据库记录,目的是为了确保数据源是最新的。问题:这个xxx毫秒怎么确定的,具体该休眠多久时间呢?

2024-06-17 20:30:01 513

原创 面试题:redis的key的过期策略

为什么需要内存回收?1、在Redis中,set指令可以指定key的过期时间,当过期时间到达以后,key就失效了;2、Redis是基于内存操作的,所有的数据都是保存在内存中,一台机器的内存是有限且很宝贵的。基于以上两点,为了保证Redis能继续提供可靠的服务,Redis需要一种机制清理掉不常用的、无效的、多余的数据,失效后的数据需要及时清理,这就需要内存回收了。Redis的内存回收主要分为过期删除策略和内存淘汰策略两部分。

2024-06-17 08:40:48 614

原创 面试题:如何设计一个秒杀系统?

设计一个秒杀系统,整体而言可以从前端与后端进行优化。对于前端优化而言,可以从「页面静态化 + CDN」、请求频率限制进行优化。其中「页面静态化 + CDN」指的是将不变的静态数据固定下来,然后放入 CDN 服务器,从而降低用户请求的响应速度,降低服务器的并发压力。请求频率限制,则是通过抢购概率与抢购频率限制,降低后端服务器的服务压力。对于后端优化而言,一般有「增加缓存层 + 预热数据」、「MQ 异步处理」、「限流、熔断、降级」、业务侧优化这 4 种优化方式。

2024-06-17 08:40:25 1790

原创 面试题:TCP/IP协议,三次握手?四次挥手?

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

2024-06-16 20:13:12 404

原创 面试题:java常见的引用类型?

虚引用是最弱的一种引用关系,它的主要作用是在对象被垃圾回收器回收时收到一个系统通知。虚引用必须和引用队列一起使用,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会把这个虚引用加入到与之关联的引用队列中。强引用是最常见的引用类型,我们平时创建对象时使用的引用就是强引用。类来实现,当JVM认为内存不足时,会回收软引用指向的对象,因此软引用主要用于实现一些内存敏感的缓存。被软引用关联的对象只有在内存不足时才会被回收。类实现,只要垃圾回收器扫描到弱引用,不管当前内存是否足够,都会回收掉弱引用指向的对象。

2024-06-16 20:00:30 299

原创 面试题:Linux的常用命令?查看负载,进程的命令?

这只是Linux命令的一小部分,实际中还有更多命令和选项可以根据具体需求来学习和使用。这些命令是管理Linux系统性能、诊断问题和优化资源使用的核心工具。

2024-06-16 19:58:51 449

原创 面试题:Spring IOC 容器的构建流程?

以上是Spring loc容器构建过程的大致流程,Spring loc容器在构建完成后,将为应用程序提供对象创建和管理的服务,实现了应用程序与对象的解耦。: 根据配置元数据中定义的Bean定义,通过Java反射机制实例化Bean对象,并将其存储在Spring loc容器中。将所有初始化的Bean存储在Spring loC容器中,并提供访问这些Bean的接口,供应用程序使用。对于有依赖关系的Bean,Spring loc容器会自动解析依赖关系,并注入所需的依赖对象。

2024-06-16 19:42:13 212

原创 面试题:简单介绍一下spring的设计思想

Spring框架的设计思想主要围绕几个核心原则展开,这些原则共同促成了Spring的高度解耦、可测试性和灵活性。通过这些设计理念,Spring不仅简化了企业级应用的开发,也促进了良好的软件工程实践,如松耦合、可测试性和可重用性。

2024-06-16 19:39:32 296

原创 面试题:redis的持久化?

Redis的持久化是指将Redis数据存储到硬盘中,以防止服务器宕机导致的数据丢失。Redis提供了两种持久化机制:RDB和AOF。

2024-06-16 19:38:28 257

原创 面试题:在MyBatis环境下,${}和#{}有什么区别?

则是一个预编译的占位符,相当于JDBC中的一个?它会将参数值转换成 JDBC 类型并进行安全的替换(对一些敏感的字符进行过滤,编译过后会对传递的值加上双引号),可以避免 SQL 注入的风险。#{}通常用于替换 SQL 中的查询条件、参数等需要进行预编译的值。是一个纯文本替换,匹配是真实传递的值,传递过后,它会直接将参数的值嵌入到 SQL 语句中,与SQL语句进行字符串拼接,因此可能会存在 SQL 注入的风险。因此,在使用${}时需要保证参数的类型和 SQL 中的类型一致,否则可能会出现类型转换异常。

2024-06-16 19:35:46 167

原创 面试题:RabbitMQ如何保证消息的可靠性和避免消息重复消费?

1.:设置消息的持久化, 即使MQ server 重启了,消息还在。2.:消费者确认机制 和生产者确认机制3. 消息回退:如果消费者无法处理消息,可以选择将消息重新发送到队列中,等待后续处理。4. TTL(Time-to-Live):可以设置 TTL 来限制消息在队列中存活的时间,过期之后直接丢到死信队列5.:死信队列.通过这些措施,RabbitMQ 可以有效地保证消息的可靠性。

2024-06-16 19:33:42 262

原创 面试题:简述IOC和AOP,以及应用场景

它的主要思想是将应用程序的业务逻辑和横切关注点(如日志、事务、安全等)分离开来,从而提高代码的可维护性和可重用性。它的主要思想是将对象的创建和依赖关系管理的责任交给一个容器,从而实现对象之间的解耦。5. 模块化开发:通过 IOC 容器组织业务模块,可以实现业务逻辑的模块化开发,提高代码的可重用性和可维护性。4. 生命周期管理:通过IOC容器管理对象的生命周期,从而实现了对象的初始化、销毁等生命周期的自动化管理。2. 配置管理:通过IOC容器将配置文件中的参数注入到应用程序中,从而实现了配置和代码的分离。

2024-06-16 19:31:24 530

原创 面试题:redis集群实现的几种方式?

1.主从复制2.哨兵模式3.利用中间件代理,比如codis等4.Redis官方提供的Cluster集群模式(服务端)

2024-06-16 19:28:30 177

原创 面试题:Redis数据结构及应用场景

4、发布/订阅系统:Redis支持发布/订阅模式,在消息发布者和消息订阅者之间建立通信渠道,实现实时消息推送功能。4、有序集合(ZSet):有序存储一组字符串,每个字符串关联一个分数,支持按照分数范围查询和排名查询。6、地理位置服务:使用Redis的地理位置功能,存储地理位置信息,并支持查询附近的位置信息。5、排行榜系统:使用Redis的有序集合实现排行榜功能,根据分数排序并返回排名前N的数据。2、计数器:使用Redis的原子操作实现计数器功能,如网站访问量统计、商品销量统计等。

2024-06-16 19:23:39 359

原创 面试题:session和cookie的区别?客户端禁用cookie, session还能用吗?

数据保存在数据保存在。cookie不是很安全,别人可以分析存放在本地的COOKIE并进行,考虑安全选会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用。

2024-06-16 19:20:09 464

原创 面试题:将Bean放入Spring容器中的五种方式?

将Bean放入Spring容器中主要有以下五种方式,这些方式适用于基于XML配置、注解配置或Java配置的不同场景:在Spring的XML配置文件中定义Bean:这种方式是最传统的,通过标签指定Bean的ID(或名称)和实现类。使用@Component注解标记Bean,并通过@ComponentScan自动扫描:在类上添加注解,然后在Spring配置中启用组件扫描:同时,可以使用注解自动装配Bean:3. @Bean注解(在Java配置类中)在Java配置类中使用@Bean方法定义Be

2024-06-16 19:14:18 289

原创 面试题:List、Map、Set三个接口存取元素时,各有什么特点

Map接口保存的是键值对(key-value-pair)映射,映射关系可以是一对一或者多对一(key唯一)。检索元素时,给出key对象,就会返回相应的value对象。实现类有HashMap、TreeMap、Hashtable、LinkedHashMap、ConcurrentHashMap。Set接口不可以存放重复元素(使用equals方法区分是否重复)。如果需要维护元素顺序并且包含重复元素,就使用List;如果需要维护独一无二的元素集合,就使用Set。Map:没有重复key,但有重复value。

2024-06-16 19:07:06 287

原创 面试题:sku和spu有什么区别?

比如,“iPhone 13,蓝色,128GB”、“iPhone 13,粉色,256GB”等,每一个这样的组合都需要一个唯一的SKU编码来跟踪库存、价格和销售情况。如果仓库中有这两种配置的iPhone 13,就需要为每种配置维护独立的库存记录,确保准确无误地管理不同版本的iPhone 13。总结来说,在这个例子中,SPU是“iPhone 13”,代表了一类产品集合的概念;而SKU则具体到了“iPhone 13,特定颜色,特定存储容量”的可售商品单元,关注于库存和销售的具体执行层面。

2024-06-16 18:07:54 294

原创 面试题:java的反射机制?java的几个核心类?

另一种是通过hutool工具。

2024-06-14 08:43:11 240

原创 面试题:反射机制使用场景?

Spring框架的IOC(动态加载管理Bean)创建对象。

2024-06-14 08:42:40 290

原创 面试题:什么是动态sql?为什么要用?常用的有哪些?

根据不同的条件凭借不同的sql语句,(逻辑判断等)实现对数据更精准的操作。

2024-06-14 08:42:11 260

原创 面试题:Spring Boot 自动装载原理?

EnableAutoConfiguration //自动装配。@SpringBootConfiguration //配置。@ComponentScan //要扫描的类。

2024-06-14 08:41:46 148

原创 面试题:SpringMvc的执行流程?

负责接收请求、分发,并给予客户端响应。,根据 uri 去匹配查找能处理的 Handler ,并会将请求涉及到的拦截器和 Handler 一起封装。,根据找到的Handler,适配执行对应的Handler;,处理实际请求的处理器。,根据Handler返回的逻辑视图 / 视图,解析并渲染真正的视图,并传递给响应客户端。

2024-06-14 08:40:51 965

原创 面试题:java是值传递还是引用传递?

基本类型作为参数被传递时肯定是值传递;引用类型作为参数被传递时也是值传递,只不过这个值,实际上是对象内存地址的引用。在Java中,无论是基础类型传递还是对象传递,总是按值传递的。

2024-06-14 08:38:28 244

原创 面试题:session共享是怎么实现的?

Session共享是指在分布式系统中,多个服务器节点能够访问到同一个用户的会话信息,以保持用户在不同服务器间跳转时的状态一致性。

2024-06-14 08:36:39 384

原创 面试题:Java中的stream流?

在Java中,Stream操作流是Java 8新引入的一个功能,它提供了很多强大的操作,方便我们进行集合的处理和操作。常用的Stream操作方式有:1.过滤:使用filter()方法可以过滤掉集合中不符合条件的元素。2.映射:使用map()方法可以对集合中的每一个元素进行映射处理。3.排序:使用sorted()方法可以对集合中的元素进行排序。4.去重:使用distinct()方法去掉集合中的重复的元素。5.统计:使用count()方法可以对集合中的元素进行统计。

2024-06-14 08:35:57 397

原创 面试题:如果redis数据库有百万数据,如何查询?

在Redis中处理百万级别的数据查询时,效率和策略选择至关重要。Redis作为一个高性能的键值存储系统,提供了多种数据结构(如字符串、哈希、列表、集合、有序集合等)和操作命令,合理利用这些特性可以有效提升查询性能。

2024-06-13 21:54:43 503

原创 面试题:mybatis对应接口的底层原理?

MyBatis是一个流行的Java持久层框架,它简化了与数据库的交互,特别是对于SQL查询和结果映射。MyBatis的一个强大特性是其接口绑定功能,允许开发者通过定义一个Mapper接口来直接执行SQL映射文件中的SQL语句,而无需编写传统的DAO类。

2024-06-13 21:52:47 217 1

原创 面试题:如何在k8s部署一个应用程序?

在Kubernetes (k8s) 上部署应用程序通常涉及几个关键步骤,包括编写配置文件(如YAML文件)、创建资源对象(如Deployment、Service等)以及应用这些配置。

2024-06-13 21:50:12 190

原创 面试题:什么是开闭原则?写一个类,作为模板让别人调用。应考虑哪几个方面?

(Open/Closed Principle, OCP)是面向对象设计中的一个基本原则,由Bertrand Meyer提出。该原则指出“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。”简而言之,这意味着在设计时应当允许在:设计时应先定义好抽象接口或抽象类,定义好类的行为规范,而不是具体实现。这样,当需要增加新功能时,可以新增实现类,而不用修改接口或抽象类。:将功能分解为独立的模块或类,确保每个模块都有清晰的职责。

2024-06-13 21:43:59 359

原创 面试题:索引的数据结构?

1.二叉搜索树 2.哈希表 3.b树 4.b+树 5.红黑树。

2024-06-13 21:39:24 709

原创 面试题:用过nginx吗?nginx相关配置?nginx和gateway的区别?

Nginx 是一款非常流行的高性能 Web 服务器和反向代理服务器,同时也被用作负载均衡器。它以其稳定性、高性能和低资源消耗著称。下面简要介绍Nginx的几个基础配置以及它与API Gateway(如Spring Cloud Gateway)的区别。

2024-06-13 21:33:25 307

原创 面试题:谈谈你对高并发的理解?平时怎么处理高并发问题

高并发是指系统能够在同一时间内处理大量用户请求的能力,它是衡量系统性能和扩展性的重要指标之一。高并发场景通常出现在访问量大、用户活跃的互联网应用中,如电商、社交媒体、金融支付等领域。3.K8S 部署应用 [可以动态扩展副本]:将系统拆分为多个小型、独立的服务,每个服务负责一组特定的功能。5.Redis作缓存层:利用Redis、Memcached等分布式缓存系统存储热点数据,减少对数据库的直接访问,提高数据读取速度。1.读写分离:将读操作和写操作分离到不同的数据库服务器,减少写操作对读性能的影响。

2024-06-13 21:26:53 418

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除