标签:Java面试题

说一下单例模式,请你手写Java单例模式

Java面试题:说一下单例模式,请你手写Java单例模式 得分点: 饿汉式单例模式、懒汉式单例模式、线程安全的懒汉式单例模式 标准回答: 单例模式(Singleton Pattern)是创建型设计模式的一种,其主要特点是确保一个类只有一个实例存在。单例模式的核心思想是将类的构造函数私有化,以防止外部直接创建对象实例。 在Java中,通常有两种常见的单例模式表……

了解设计模式吗?每个分类列举几个

Java面试题:了解设计模式吗?每个分类列举几个 得分点: 单例模式、工厂模式 标准回答: 在设计模式中: 创建型模式主要包括:单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。 结构型模式包括:代理模式、装饰模式、适配器模式、组合模式、桥梁模式、外观模式和享元模式。 行为型模式包括:模板方法模式、命令模式、责任链模式、策略模式、迭代器模式、中介者……

说下Redis的缓存淘汰策略

Java面试题:说下Redis的缓存淘汰策略 标准回答 Redis有两种主要的过期策略: 惰性删除 当客户端访问一个键时,Redis会首先检查其过期时间,如果过期就会立即删除这个键。 定期删除 Redis会将设置了过期时间的键放入一个独立的字典中,并每秒进行10次过期扫描。过期扫描不会遍历字典中的所有键,而是采用一种贪心策略: 从过期字典中随机选择20个键……

谈谈对Redis的单线程架构的理解

Java面试题:谈谈对Redis的单线程架构的理解 标准回答 Redis的网络IO和键值对读写是由一个线程来完成的,但Redis的其他功能,例如持久化、异步删除、集群数据同步等操作依赖于其他线程来执行。 单线程可以简化数据结构和算法的实现,并且可以避免线程切换和竞争造成的消耗。但要注意如果某个命令执行时间过长,会造成其他命令的阻塞。 Redis采用了IO多路……

Redis数据类型中zset和set的区别?底层是怎么实现的?

Java面试题:Redis数据类型中zset和set的区别?底层是怎么实现的? 标准回答 Redis的有序集合(Sorted Set)与集合(Set)类似,都是存储字符串类型元素的集合,不允许重复的成员。不同之处在于有序集合中的每个成员都会关联一个双精度浮点数类型的分数,Redis通过这个分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数……

说一下Redis的数据类型

Java面试题:说一下Redis的数据类型 标准回答 Redis主要提供了五种核心数据结构,它们是: 字符串(String):字符串是 Redis 数据库中的二进制安全数据类型,具有已知长度,最多可以存储 2 兆字节的内容。字符串可以用于存储文本、二进制数据等。 哈希(Hash):哈希是键值对的集合,适合表示对象。在 Redis 中,哈希将字符串字段与字符……

说下你对Redis的了解

Java面试题:说下你对Redis的了解 得分点 Redis概念、Redis优点及用途 标准回答 Redis是一款基于键值对的NoSQL数据库,与其他键值对数据库不同的是,Redis中拥有多种数据结构,包括string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(……

谈一下MyBatis的缓存机制的理解

Java面试题:谈一下MyBatis的缓存机制的理解 得分点 MyBatis一、二级缓存概念、区别 一级缓存和二级缓存是MyBatis中用于提高查询性能的两种缓存机制。 一级缓存(本地缓存): 一级缓存也被称为本地缓存,它默认启用且不能关闭。 一级缓存存在于SqlSession的生命周期中,即它是SqlSession级别的缓存。 在同一个SqlSessio……

说下MyBatis中$和#有什么区别

Java面试题:说下MyBatis中$和#有什么区别 得分点: 使用传参方式MyBatis创建SQL的不同、安全性和效率问题 标准回答如下: 在 MyBatis 中,有两种常见的方式来设置参数:使用 $ 和使用 #。这两种方式在创建 SQL 语句时有不同的行为,涉及到安全性和效率的问题。 使用 $ 设置参数: 当使用 $ 设置参数时,MyBatis会创建普……

说一下Spring MVC的执行流程

Java面试题:说一下Spring MVC的执行流程 得分点 DispatcherServlet、HandlerMapping、ModelAndView 标准回答 SpringMVC 的执行流程如下: 用户触发 HTTP 请求,该请求会被传递给前端控制器 DispatcherServlet。 DispatcherServlet 通过 HandlerMapp……

谈谈你对MVC的理解

Java面试题:谈谈你对MVC的理解 标准回答 MVC(Model-View-Controller)是一种软件设计模式,它将一个应用程序分为三个主要组成部分,每个部分具有不同的责任和功能: Model(模型):模型代表应用程序的数据和业务逻辑。它负责封装数据、处理数据操作以及提供数据的访问接口。模型是应用程序的核心部分,它独立于用户界面和控制逻辑。 Vie……

说下Spring中BeanFactory和FactoryBean的区别

Java面试题:说下Spring中BeanFactory和FactoryBean的区别 得分点 BeanFactory定义、FactoryBean定义 标准回答: BeanFactory是Spring框架中的一个接口,它定义了一种机制来管理Spring容器中的Bean对象。它提供了一种能够获取、配置、管理Bean的方式,使得开发者可以通过编程方式访问和控制B……