面试题
文章平均质量分 51
来之前不会起名字
好好学习,天天向上
展开
-
面试题:你所了解的设计模式?
Java中的设计模式是面向对象设计中的一套经典解决方案,它们是解决常见设计问题的通用模板。设计模式分为三大类:创建型模式、结构型模式和行为型模式。下面列举了这三类设计模式的典型代表,但请注意,设计模式的运用不仅仅局限于Java,而是广泛应用于各种面向对象编程语言中。原创 2024-06-17 21:06:12 · 664 阅读 · 0 评论 -
面试题:谈谈Nginx
反向代理是指以代理服务器来接受 internet 上的连接请求,然后将请求,发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。反向代理总结就一句话:代理端代理的是服务端.一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。正向代理总结就一句话:代理端代理的是客户端。原创 2024-06-17 21:03:37 · 462 阅读 · 0 评论 -
面试题: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 · 256 阅读 · 0 评论 -
面试题:实现 Serializable 接口就算了, 为什么还要显示指定 serialVersionUID 的值? static 属性为什么不会被序列化?
在Java中,要实现对象的序列化和反序列化,需要让该类实现接口实际上是一个标志接口(Marker Interface),这意味着它不包含任何方法。当一个类实现了接口,就是在向Java序列化机制表明:“这个类的对象是可以被序列化的”。这是Java序列化机制识别可序列化类的一个标准。:通过实现接口,Java的序列化机制会自动采用默认的序列化规则来处理该类的实例。这意味着,除非特别标注(如使用transient关键字标记不需要序列化的成员变量),否则类中的所有实例变量(包括基本类型和实现了。原创 2024-06-17 20:54:31 · 328 阅读 · 0 评论 -
面试题:序列化?反序列化?
序列化:把对象转换为字节序列的过程称为对象的序列化.反序列化:把字节序列恢复为对象的过程称为对象的反序列化.原创 2024-06-17 20:46:00 · 285 阅读 · 0 评论 -
面试题:Ribbon与Nginx的区别?
Nginx 是客户端所有请求统一交给 Nginx,由 Nginx 进行实现负载均衡请求转发,属于服务器端负载均衡。既请求由 Nginx 服务器端进行转发服务端负载均衡具有以下特点:需要建立一个独立的负载均衡服务器。负载均衡是在客户端发送请求后进行的,因此客户端并不知道到底是哪个服务端提供的服务。可用服务端清单存储在负载均衡服务器上。原创 2024-06-17 20:40:55 · 187 阅读 · 0 评论 -
面试题:Java中的浅拷贝与深拷贝?
在Java中,对象的复制分为深拷贝(Deep Copy)和浅拷贝(Shallow Copy)两种方式,主要区别在于对对象内部引用类型成员变量的处理不同。原创 2024-06-17 20:35:25 · 277 阅读 · 0 评论 -
面试题:什么是延迟双删?
该策略主要应用于分布式系统中,目的是在更新数据库的同时,确保缓存中的数据也能得到正确的更新,避免出现数据不一致的问题。4)、最后的的写数据的休眠时间:则在读数据业务逻辑的耗时基础上,加几百ms即可。2)、这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。在写操作开始时,先从缓存中删除数据,为了防止后续操作读取到旧数据。1)、需要评估自己的项目的读数据业务逻辑的耗时。在缓存删除后,立即更新数据库记录,目的是为了确保数据源是最新的。问题:这个xxx毫秒怎么确定的,具体该休眠多久时间呢?原创 2024-06-17 20:30:01 · 418 阅读 · 0 评论 -
面试题:redis的key的过期策略
为什么需要内存回收?1、在Redis中,set指令可以指定key的过期时间,当过期时间到达以后,key就失效了;2、Redis是基于内存操作的,所有的数据都是保存在内存中,一台机器的内存是有限且很宝贵的。基于以上两点,为了保证Redis能继续提供可靠的服务,Redis需要一种机制清理掉不常用的、无效的、多余的数据,失效后的数据需要及时清理,这就需要内存回收了。Redis的内存回收主要分为过期删除策略和内存淘汰策略两部分。原创 2024-06-17 08:40:48 · 585 阅读 · 0 评论 -
面试题:如何设计一个秒杀系统?
设计一个秒杀系统,整体而言可以从前端与后端进行优化。对于前端优化而言,可以从「页面静态化 + CDN」、请求频率限制进行优化。其中「页面静态化 + CDN」指的是将不变的静态数据固定下来,然后放入 CDN 服务器,从而降低用户请求的响应速度,降低服务器的并发压力。请求频率限制,则是通过抢购概率与抢购频率限制,降低后端服务器的服务压力。对于后端优化而言,一般有「增加缓存层 + 预热数据」、「MQ 异步处理」、「限流、熔断、降级」、业务侧优化这 4 种优化方式。原创 2024-06-17 08:40:25 · 1717 阅读 · 0 评论 -
面试题: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 · 363 阅读 · 0 评论 -
面试题:java常见的引用类型?
虚引用是最弱的一种引用关系,它的主要作用是在对象被垃圾回收器回收时收到一个系统通知。虚引用必须和引用队列一起使用,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会把这个虚引用加入到与之关联的引用队列中。强引用是最常见的引用类型,我们平时创建对象时使用的引用就是强引用。类来实现,当JVM认为内存不足时,会回收软引用指向的对象,因此软引用主要用于实现一些内存敏感的缓存。被软引用关联的对象只有在内存不足时才会被回收。类实现,只要垃圾回收器扫描到弱引用,不管当前内存是否足够,都会回收掉弱引用指向的对象。原创 2024-06-16 20:00:30 · 287 阅读 · 0 评论 -
面试题:Linux的常用命令?查看负载,进程的命令?
这只是Linux命令的一小部分,实际中还有更多命令和选项可以根据具体需求来学习和使用。这些命令是管理Linux系统性能、诊断问题和优化资源使用的核心工具。原创 2024-06-16 19:58:51 · 433 阅读 · 0 评论 -
面试题:Spring IOC 容器的构建流程?
以上是Spring loc容器构建过程的大致流程,Spring loc容器在构建完成后,将为应用程序提供对象创建和管理的服务,实现了应用程序与对象的解耦。: 根据配置元数据中定义的Bean定义,通过Java反射机制实例化Bean对象,并将其存储在Spring loc容器中。将所有初始化的Bean存储在Spring loC容器中,并提供访问这些Bean的接口,供应用程序使用。对于有依赖关系的Bean,Spring loc容器会自动解析依赖关系,并注入所需的依赖对象。原创 2024-06-16 19:42:13 · 196 阅读 · 0 评论 -
面试题:简单介绍一下spring的设计思想
Spring框架的设计思想主要围绕几个核心原则展开,这些原则共同促成了Spring的高度解耦、可测试性和灵活性。通过这些设计理念,Spring不仅简化了企业级应用的开发,也促进了良好的软件工程实践,如松耦合、可测试性和可重用性。原创 2024-06-16 19:39:32 · 280 阅读 · 0 评论 -
面试题:redis的持久化?
Redis的持久化是指将Redis数据存储到硬盘中,以防止服务器宕机导致的数据丢失。Redis提供了两种持久化机制:RDB和AOF。原创 2024-06-16 19:38:28 · 235 阅读 · 0 评论 -
面试题:在MyBatis环境下,${}和#{}有什么区别?
则是一个预编译的占位符,相当于JDBC中的一个?它会将参数值转换成 JDBC 类型并进行安全的替换(对一些敏感的字符进行过滤,编译过后会对传递的值加上双引号),可以避免 SQL 注入的风险。#{}通常用于替换 SQL 中的查询条件、参数等需要进行预编译的值。是一个纯文本替换,匹配是真实传递的值,传递过后,它会直接将参数的值嵌入到 SQL 语句中,与SQL语句进行字符串拼接,因此可能会存在 SQL 注入的风险。因此,在使用${}时需要保证参数的类型和 SQL 中的类型一致,否则可能会出现类型转换异常。原创 2024-06-16 19:35:46 · 150 阅读 · 0 评论 -
面试题:RabbitMQ如何保证消息的可靠性和避免消息重复消费?
1.:设置消息的持久化, 即使MQ server 重启了,消息还在。2.:消费者确认机制 和生产者确认机制3. 消息回退:如果消费者无法处理消息,可以选择将消息重新发送到队列中,等待后续处理。4. TTL(Time-to-Live):可以设置 TTL 来限制消息在队列中存活的时间,过期之后直接丢到死信队列5.:死信队列.通过这些措施,RabbitMQ 可以有效地保证消息的可靠性。原创 2024-06-16 19:33:42 · 221 阅读 · 0 评论 -
面试题:简述IOC和AOP,以及应用场景
它的主要思想是将应用程序的业务逻辑和横切关注点(如日志、事务、安全等)分离开来,从而提高代码的可维护性和可重用性。它的主要思想是将对象的创建和依赖关系管理的责任交给一个容器,从而实现对象之间的解耦。5. 模块化开发:通过 IOC 容器组织业务模块,可以实现业务逻辑的模块化开发,提高代码的可重用性和可维护性。4. 生命周期管理:通过IOC容器管理对象的生命周期,从而实现了对象的初始化、销毁等生命周期的自动化管理。2. 配置管理:通过IOC容器将配置文件中的参数注入到应用程序中,从而实现了配置和代码的分离。原创 2024-06-16 19:31:24 · 441 阅读 · 0 评论 -
面试题:redis集群实现的几种方式?
1.主从复制2.哨兵模式3.利用中间件代理,比如codis等4.Redis官方提供的Cluster集群模式(服务端)原创 2024-06-16 19:28:30 · 147 阅读 · 0 评论 -
面试题:Redis数据结构及应用场景
4、发布/订阅系统:Redis支持发布/订阅模式,在消息发布者和消息订阅者之间建立通信渠道,实现实时消息推送功能。4、有序集合(ZSet):有序存储一组字符串,每个字符串关联一个分数,支持按照分数范围查询和排名查询。6、地理位置服务:使用Redis的地理位置功能,存储地理位置信息,并支持查询附近的位置信息。5、排行榜系统:使用Redis的有序集合实现排行榜功能,根据分数排序并返回排名前N的数据。2、计数器:使用Redis的原子操作实现计数器功能,如网站访问量统计、商品销量统计等。原创 2024-06-16 19:23:39 · 339 阅读 · 0 评论 -
面试题:session和cookie的区别?客户端禁用cookie, session还能用吗?
数据保存在数据保存在。cookie不是很安全,别人可以分析存放在本地的COOKIE并进行,考虑安全选会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用。原创 2024-06-16 19:20:09 · 427 阅读 · 0 评论 -
面试题:将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 · 268 阅读 · 0 评论 -
面试题: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 · 256 阅读 · 0 评论 -
面试题: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 · 210 阅读 · 0 评论 -
面试题:java的反射机制?java的几个核心类?
另一种是通过hutool工具。原创 2024-06-14 08:43:11 · 228 阅读 · 0 评论 -
面试题:反射机制使用场景?
Spring框架的IOC(动态加载管理Bean)创建对象。原创 2024-06-14 08:42:40 · 253 阅读 · 0 评论 -
面试题:什么是动态sql?为什么要用?常用的有哪些?
根据不同的条件凭借不同的sql语句,(逻辑判断等)实现对数据更精准的操作。原创 2024-06-14 08:42:11 · 228 阅读 · 0 评论 -
面试题:Spring Boot 自动装载原理?
EnableAutoConfiguration //自动装配。@SpringBootConfiguration //配置。@ComponentScan //要扫描的类。原创 2024-06-14 08:41:46 · 132 阅读 · 0 评论 -
面试题:SpringMvc的执行流程?
负责接收请求、分发,并给予客户端响应。,根据 uri 去匹配查找能处理的 Handler ,并会将请求涉及到的拦截器和 Handler 一起封装。,根据找到的Handler,适配执行对应的Handler;,处理实际请求的处理器。,根据Handler返回的逻辑视图 / 视图,解析并渲染真正的视图,并传递给响应客户端。原创 2024-06-14 08:40:51 · 911 阅读 · 0 评论 -
面试题:session共享是怎么实现的?
Session共享是指在分布式系统中,多个服务器节点能够访问到同一个用户的会话信息,以保持用户在不同服务器间跳转时的状态一致性。原创 2024-06-14 08:36:39 · 331 阅读 · 0 评论 -
面试题:如果redis数据库有百万数据,如何查询?
在Redis中处理百万级别的数据查询时,效率和策略选择至关重要。Redis作为一个高性能的键值存储系统,提供了多种数据结构(如字符串、哈希、列表、集合、有序集合等)和操作命令,合理利用这些特性可以有效提升查询性能。原创 2024-06-13 21:54:43 · 368 阅读 · 0 评论 -
面试题:mybatis对应接口的底层原理?
MyBatis是一个流行的Java持久层框架,它简化了与数据库的交互,特别是对于SQL查询和结果映射。MyBatis的一个强大特性是其接口绑定功能,允许开发者通过定义一个Mapper接口来直接执行SQL映射文件中的SQL语句,而无需编写传统的DAO类。原创 2024-06-13 21:52:47 · 193 阅读 · 1 评论 -
面试题:如何在k8s部署一个应用程序?
在Kubernetes (k8s) 上部署应用程序通常涉及几个关键步骤,包括编写配置文件(如YAML文件)、创建资源对象(如Deployment、Service等)以及应用这些配置。原创 2024-06-13 21:50:12 · 157 阅读 · 0 评论 -
面试题:什么是开闭原则?写一个类,作为模板让别人调用。应考虑哪几个方面?
(Open/Closed Principle, OCP)是面向对象设计中的一个基本原则,由Bertrand Meyer提出。该原则指出“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。”简而言之,这意味着在设计时应当允许在:设计时应先定义好抽象接口或抽象类,定义好类的行为规范,而不是具体实现。这样,当需要增加新功能时,可以新增实现类,而不用修改接口或抽象类。:将功能分解为独立的模块或类,确保每个模块都有清晰的职责。原创 2024-06-13 21:43:59 · 324 阅读 · 0 评论 -
面试题:索引的数据结构?
1.二叉搜索树 2.哈希表 3.b树 4.b+树 5.红黑树。原创 2024-06-13 21:39:24 · 685 阅读 · 0 评论 -
面试题:用过nginx吗?nginx相关配置?nginx和gateway的区别?
Nginx 是一款非常流行的高性能 Web 服务器和反向代理服务器,同时也被用作负载均衡器。它以其稳定性、高性能和低资源消耗著称。下面简要介绍Nginx的几个基础配置以及它与API Gateway(如Spring Cloud Gateway)的区别。原创 2024-06-13 21:33:25 · 262 阅读 · 0 评论 -
面试题:谈谈你对高并发的理解?平时怎么处理高并发问题
高并发是指系统能够在同一时间内处理大量用户请求的能力,它是衡量系统性能和扩展性的重要指标之一。高并发场景通常出现在访问量大、用户活跃的互联网应用中,如电商、社交媒体、金融支付等领域。3.K8S 部署应用 [可以动态扩展副本]:将系统拆分为多个小型、独立的服务,每个服务负责一组特定的功能。5.Redis作缓存层:利用Redis、Memcached等分布式缓存系统存储热点数据,减少对数据库的直接访问,提高数据读取速度。1.读写分离:将读操作和写操作分离到不同的数据库服务器,减少写操作对读性能的影响。原创 2024-06-13 21:26:53 · 362 阅读 · 0 评论 -
面试题:spring注册bean的方式有几种?
基于注解:使用注解方式可以非常简洁地注册Bean,常用的注解有@Component、@Service、@Repository和@Controller等。Java配置类:使用Java配置类来注册Bean,通过在Java配置类中使用@Configuration注解来声明配置类,并在配置类中使用@Bean注解来定义Bean的属性和实例化方式。XML配置:使用XML文件来配置Bean的注册信息,可以通过在XML文件中使用<bean>标签来定义Bean的属性,并使用<bean>标签的id属性指定Bean的名称。原创 2024-06-13 21:13:42 · 455 阅读 · 0 评论 -
面试题:.谈谈你对IOC和AOP的理解?
IOC(Inverse of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的两大核心特性,它们共同促进了软件开发的解耦、模块化和可维护性。原创 2024-06-13 21:10:52 · 218 阅读 · 1 评论