Java面试题
本专分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、
夏至青柠
愿星河徜徉,一路有光
展开
-
最新总结Java基础面试题
1java语言的特点 面向对象、跨平台、多线程、异常处理、垃圾回收机制2JAVA中的数据类型 基本数据类型: short int long char float double boolean byte 复合数据类型3java中for循环与while与do while的 区别?Forwhile与do while初始值、判断条件、循环增量/减量、循环体判断条件、循环体可以在结构之外定义初始值,也可以不定义需要自行在结构定义初始值循环增量/减量循环结构自行控原创 2020-12-17 14:31:56 · 99 阅读 · 0 评论 -
最新总结SpringMVC常见面试题
1. 简单的谈一下SpringMVC的工作流程? 启动服务器的时候配置在web.xml文件中的中央控制器【DispatcherServlet】被初始化完成,并且加载配置的springMVC的配置文件。 客户端浏览器发送http请求,被中央控制器拦截,转交给url解析器解析得到具体的请求路径,并返回给中央控制器;中央控制器将得到的具体请求路径转交给控制器适配器查找与之对应的请求处理类执行具体的请求处理,得到ModelAndView【1.数据。2.跳转地址】对象并交给控制器适配器且返回给中央控制器;中原创 2020-12-08 13:20:37 · 323 阅读 · 0 评论 -
Mybatis面试题最新总结
1、什么是Mybatis? MyBatis是一个基于ORM的数据访问层/持久层的框架。2.什么是ORM? ORM—对象关系映射 我们在访问数据库的时候所编写的都是Java程序,Java程序只认识Java对象,而我们所访问的数据库大多数都是关系型数据库,那么这时Java程序要想访问关系型数据库,那么就需要将Java对象转换成关系型数据,才能被数据库认识。 这时我们可以认为一个Java类就是关系型数据库中的一张数据表,Java类中的成员变量是数据库表中的一个列,Java类创建的Java对象就是原创 2020-11-25 11:03:18 · 295 阅读 · 0 评论 -
spring面试题精简版
1. 什么是spring? Spring是一个开源、分层javaSE/javaEE的一站式轻量级解决方案。[容器框架]2. 使用Spring框架的好处是什么? 解决业务逻辑层、、web层、数据访问层之间的松耦合问题。3. Spring由哪些模块组成? Test、Core Container、Aop、Data Access/Intergration、Web4. 什么是Spring IOC 容器? 将java对象创建和维护权利交由Spring工厂进行管理和维护。5. I原创 2020-11-24 19:24:58 · 198 阅读 · 0 评论 -
最新总结Spring知识及常见面试题
1. 什么是spring? Spring是一个开源的分层的javaSE/javaEE的一站式的轻量级的解决方案。[容器框架]2. 使用Spring框架的好处是什么? 作用:解决业务逻辑层【Service】与web层和数据访问层之间的松耦合问题。3. Spring由哪些模块组成?4. 什么是BeanFactory ? BeanFactory 实现举例。 BeanFactory接口表示一个Spring工厂对象【Spring容器对象】,包含了实例化好的java类对象。【管理】 B原创 2020-11-21 21:21:26 · 182 阅读 · 0 评论 -
Java面试题十八(Redis模块)
179.Redis 是什么?都有哪些使用场景? Redis 是一个使用 C 语言开发的高速缓存数据库。 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。原创 2020-10-27 16:45:04 · 153 阅读 · 1 评论 -
Java面试题十七(MySQL模块)
164.数据库的三范式是什么? 第一范式(1NF):强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式(2NF):要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。(在1NF基础上消除非主属性对主键的部分函数依赖) 第三范式(3NF):任何非主属性不依赖于其它非主属性。(在2NF基础上消除传递依赖)165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几? 表类原创 2020-10-24 00:38:02 · 117 阅读 · 1 评论 -
Java面试题十六(Zookeeper模块)
157.zookeeper 是什么? 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。158.zookeeper 都有哪些功能? 集群管理:监控节点存活状态、运行请求等。 主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zookeeper 可以协助完成这原创 2020-10-24 00:18:17 · 90 阅读 · 1 评论 -
Java面试题十五(Kafka)
152.kafka 可以脱离 zookeeper 单独使用吗?为什么? kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。153.kafka 有几种数据保留的策略? kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理? 这个时候 kafka 会执行数据清除工作,原创 2020-10-09 13:54:34 · 473 阅读 · 2 评论 -
Java面试题十四(RabbitMQ模块)
十四. RabbitMQ模块 135.RabbitMQ 的使用场景有哪些? 抢购活动,削峰填谷,防止系统崩塌。 延迟信息处理,比如 10 分钟之后给下单未付款的用户发送邮件提醒。 解耦系统,对于新增的功能可以单独写模块扩展,比如用户确认评价之后,新增了给用户返积分的功能,这个时候不用在业务代码里添加新增积分的功能,只需要把新增积分的接口订阅确认评价的消息队列即可,后面再添加任何功能只需要订阅对应的消息队列即可。136.RabbitMQ 有哪些重要的角色? RabbitMQ 中重要的角色原创 2020-10-07 16:57:46 · 193 阅读 · 0 评论 -
Java面试题十三(MyBatis模块)
125.MyBatis 中 #{}和 ${}的区别是什么? #{}是预编译处理,${}是字符替换。在使用 #{}时,MyBatis 会将 SQL 中的 #{}替换成“?”,配合 PreparedStatement 的 set 方法赋值,这样可以有效的防止 SQL 注入,保证程序的运行安全。126.MyBatis 有几种分页方式? 分页方式:逻辑分页和物理分页。 逻辑分页:使用 MyBatis 自带的 RowBounds 进行分页,它是一次性查询很多数据,然后在数据中再进行检索。 物理分页:原创 2020-10-07 16:53:04 · 174 阅读 · 0 评论 -
Java面试题十二(Hibernate模块)
113.为什么要使用 hibernate? hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。 hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。 可以很方便的进行数据库的移植工作。 提供了缓存机制,是程序执行更改的高效。114.什么是 ORM 框架? ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。 使用 ORM 的优点:提高了开发效率降低了开原创 2020-10-07 16:45:04 · 157 阅读 · 0 评论 -
Java面试题十一(Spring Boot/Spring Cloud模块)
104.什么是 spring boot? spring boot 是为 spring 服务的,是用来简化新 spring 应用的初始搭建以及开发过程的。105.为什么要用 spring boot? 配置简单 独立运行 自动装配 无代码生成和 xml 配置 提供应用监控 易上手 提升开发效率106.spring boot 核心配置文件是什么? spring boot 核心的两个配置文件: bootstrap (. yml 或者 . properties):boots原创 2020-10-07 16:39:59 · 235 阅读 · 0 评论 -
Java面试题十(Spring/Spring MVC模块)
90.为什么要使用 spring? spring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。 spring 提供了事务支持,使得事务操作变的更加方便。 spring 提供了面向切片编程,这样可以更方便的处理某一类的问题。 更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。91.解释一下什么是 aop? aop 是面向切面编程,通过预编译方式和运行期动态代理实现程序功能原创 2020-10-07 16:34:41 · 133 阅读 · 0 评论 -
Java面试题九(设计模式模块)
88.说一下你熟悉的设计模式? 单例模式:保证被创建一次,节省系统开销。 工厂模式(简单工厂、抽象工厂):解耦代码。 观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。 外观模式:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。 模版方法模式:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。 状态模式:允许对象在内原创 2020-10-07 16:25:01 · 167 阅读 · 0 评论 -
Java面试题八(网络模块)
79.http 响应码 301 和 302 代表的是什么?有什么区别? 301:永久重定向;302:暂时重定向。它们的区别是,301 对搜索引擎优化(SEO)更加有利;302 有被提示为网络拦截的风险。 404:访问路径错误 500:服务器端程序错误 200:OK80.forward 和 redirect 的区别? forward 是转发 和 redirect 是重定向: 地址栏 url 显示:foward url 不会发生改变,redirect url 会发生改变; 数据共原创 2020-10-07 16:19:10 · 157 阅读 · 0 评论 -
Java面试题七( Java 异常模块)
74.throw 和 throws 的区别? throw:是真实抛出一个异常。 throws:是声明可能会抛出一个异常。75.final、finally、finalize 有什么区别? final:是修饰符,如果修饰类,此类不能被继承;如果修饰方法和变量,则表示此方法和此变量不能在被改变,只能使用。 finally:是 try{} catch{} finally{} 最后一部分,表示不论发生任何情况都会执行,finally 部分可以省略,但如果 finally 部分存在,则一定会执行 fi原创 2020-10-04 20:42:07 · 129 阅读 · 0 评论 -
Java面试题六(Java Web模块)
64.JSP 和 servlet 有什么区别? JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于,servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 html 里分离开来,而 JSP 的情况是 Java 和 html 可以组合成一个扩展名为 JSP 的文件。JSP 侧重于视图,servlet 主要用于控制逻辑。65.JSP 有哪些内置对象?作用分别是什么? JSP 有 9 大内置对象: req原创 2020-09-23 14:34:12 · 135 阅读 · 0 评论 -
Java面试题五(对象拷贝模块)
61.为什么要使用克隆? 克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。62.如何实现对象克隆? 实现 Cloneable 接口并重写 Object 类中的 clone() 方法。 实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。63.深拷贝和浅拷贝区别是什么? 浅拷贝:当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类原创 2020-09-23 14:29:51 · 120 阅读 · 0 评论 -
Java面试题四(反射模块)
57.什么是反射? 反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。58.什么是 Java 序列化?什么情况下需要序列化? Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。 以下情况需要使用 Java 序列化: 想把的内存中的对象状态保存到一个文件中或者数据库中时候; 想用套接字在网络上传送对象的时候原创 2020-09-23 12:50:41 · 96 阅读 · 0 评论 -
Java面试题三(多线程模块)
35.并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务。 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。 如下图:【并发 = 两个队列和一台咖啡机】 【并行 = 两个队列和两台咖啡机】36.线程和进程的区别? 一个程序下至少有一个进程,一个进程下至少有一个线程,一个进程下也可以有多个线程来增加程序的执行速度。37.守护线程是什么? 守护线程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或原创 2020-09-23 12:46:38 · 114 阅读 · 0 评论 -
Java面试题二(Java 容器模块)
18.Java 容器都有哪些? Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示: Collection List ArrayList LinkedList Vector Stack Set HashSet LinkedHashSet TreeSet Map HashMap Linked原创 2020-09-20 21:53:39 · 1285 阅读 · 0 评论 -
JAVA面试题一(Java基础)
本专栏分十九模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM如下图所示:Java 基础模块1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环原创 2020-09-19 18:00:50 · 231 阅读 · 0 评论