Java面试整理(精简版)
Java基础
Java面向对象有哪些特征,如何应用
| 特征(OOP) | 解释说明 | 通俗理解 | 关系联系 | 作用 |
|---|---|---|---|---|
| 封装 | 隐藏内部细节,只对外暴露访问方法 | 属性/方法封装,便于使用,限制不合理操作 | 类-类 | 低耦合,高内聚,增强代码可维护性;** |
| 继承 | 新类吸收已有类数据(属性/行为),并能扩展新能力。 | 特殊特征(子类)-共同特征(父类) | 父类-子类 | 避免对一般类和特殊类共同特征重复描述,使系统模型比较简练清晰 |
| 多态 | 两个类有继承关系,存在方法重写,父类指向子类 | 类-类 | ||
| 抽象 | ||||
本质 : 利用类和对象编程的思想方式。
HashMap原理是什么,在jdk1.7和1.8中有什么区别
| 区别 (原理) | 数据结构 | 实现细节 | 时间复杂度 |
|---|---|---|---|
| 1.7 | 数组+单向链表(链表长时查询效率低) | 先从数组,再到链表 | O(N) |
| 1.8 | 数组+单向链表+红黑树 | 同上,当链表元素超过8,将链表转成红黑树查找 | O(logN) |
ArrayList和LinkedList有什么区别
| 区别 | 底层 | 方式 | 时间复杂度 | 优势(大数据下) |
|---|---|---|---|---|
| ArrayList | 数组 | 索引 | O(1) | 适合查找 |
| LinkedList | 链表 | 元素列表 | O(N) | 适合增删 |
Java框架
Spring
如何实现一个IOC容器?
IOC(Inversion of Control),控制反转,非技术,是一种设计思想,IOC是将设计好的对象交给容器控制,而不是传统在对象内部直接控制。
IOC容器作用:用于控制对象创建及注入依赖。
实现:
准备一个基本容器对象(包含map结构的集合,方便后续过程存储具体对象)
-->将需要创建的bean对象都封装成BeanDefinition对象存储在容器中(进行配置文件读取或注解解析)
-->容器将封装好的BeanDefinition对象通过反射的方式进行实例化(完成对象的实例化工作)
-->进行对象初始化操作(给类中的对应属性值进行设置/依赖注入,完成整个对象的创建,变成一个完整的bean对象,存储在容器的某个map结构中)
-->进行对象获取和逻辑处理工作(通过容器对象来获取对象)
-->提供销毁操作(当对象不用或容器关闭,将无用对象销毁)
说说你对Spring 的理解?
- Spring 使创建 Java 企业应用程序变得更加容易。
- Spring支持各种应用场景。
- Spring 是开源的。
你觉得Spring的核心是什么?
- spring是一个开源框架。
- spring是一个IOC(控制反转)和AOP(面向切面编程)的容器框架。
- spring是为了简化企业开发而生的,使得开发变得更加优雅和简洁。
容器:包含并管理应用对象的生命周期,就好比用桶装水一样,spring就是桶,而对象就是水
说一下使用spring的优势?
-
Spring通过DI、AOP和消除样板式代码来简化企业级Java开发
-
Spring框架之外还存在一个构建在核心框架之上的庞大生态圈,它将Spring扩展到不同的领域,如Web服务、REST、移动开发以及NoSQL
-
低侵入式设计,代码的污染极低
-
独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
-
Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
-
Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式处理,从而提供了更好的复用
-
Spring的ORM和DAO提供了与第三方持久层框架的的良好整合,并简化了底层的数据库访问
-
Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部
Spring是如何简化开发的?
- 基于POJO的轻量级和最小侵入性编程
- 通过依赖注入和面向接口实现松耦合
- 基于切面和惯例进行声明式编程
- 通过切面和模板减少样板式代码
持更,定个小目标,尽量一天更五题,题目和答案由尚学堂修改而来

浙公网安备 33010602011771号