他来了他来了,他带着面经走来了!大家好,我是小菜,一个渴望在互联网行业做到蔡不菜的小菜。可柔可刚,点赞则柔,白嫖则刚!
死鬼~看完记得给我来个三连哦!
面试中高频出现的问题
如有需要,可以参考
如有帮助,不忘点赞 ❥
创作不易,白嫖无义!
1)面向对象的特性有哪些
1.
强耦合,父类变子类也得变 2.
破坏了封装性,实现细节对于子类都是透明的。 1.
继承 2.
重写 3.
向上转型 好处: 可以屏蔽不同子类对象之间的实现差异。 2)Java中的覆盖和重载
1.
只能比父类抛出更少的异常 2.
访问权限不能比父类的小 3.
被覆盖的方法不能是private 的。 1.
参数类型不同 2.
参数个数不同 3.
参数顺序不同. 注意: 函数的返回值不同不能构成重载 3)抽象类和接口的区别
出发角度 | 抽象类 | 接口 |
---|---|---|
默认的实现方法 | 有默认的方法实现 | 全部都是抽象的,不存在方法的实现 |
构造器 | 可以有构造器 | 不能有构造器 |
访问修饰符 | 可以有public、protected和default这些修饰符 | 默认是public,不可以使用其他修饰符 |
继承方式 | 可以继承一个类和实现多个接口 | 可以继承一个或多个接口 |
添加新方法 | 可以提供默认的实现,而不需要修改原有的代码 | 添加方法后,必须修改实现该接口类中的方法 |
4)Java 和 C++ 的区别
5)Java 是值传递还是引用传递
Java内都是值传递
6)JDK、JRE、JVM
7)Integer
第一个和第二个的区别在于 Integer中存在缓存机制,JVM启动初期会缓存 -128~127 这个区间里面的所有数字,因此第一个位 true,第二个为false。第三个为 false 的原因在于使用了 new 关键字开辟了新空间 , i 和 j 两个对象分别指向堆中的两块内存空间。
8)String
9)Java 有没有 goto
goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。
10)final 的作用
11)final、finally和finalize的区别
12)Throwable
Throwable 是Java语言中所有错误与异常的超类。包含两个子类:
Error(错误)
Exception(异常)
运行时异常
编译时异常
13)常见的运行时异常
14)try-catch-finally中哪个部分可以省略
catch可以省略
集合这方面可以问的实在太多了,这一块可要好好把握住!
1)集合的种类
2)List 和 Set 的区别
List:有序(元素存入集合的顺序和取出的顺序是一致的),可以重复,可以插入多个null元素,元素都有索引。
Set:无序(元素存入集合的顺序和取出的顺序有可能不一致),不可以重复,只允许存入一个null元素(元素的唯一性)
扩展:
HashSet的底层实现
3)Array 和 ArrayList 的区别
4)HashMap 和 HashTable的区别
扩展:
何为fail-fast
5)聊聊HashMap
6)HashMap扩容是怎样扩容的
当HashMap中的元素个数超过数组大小(数组总大小length,不是数组中个数size)*loadFactor时,就会进行数组扩容,loadFactor的默认值为0.75.HashMap不是无限扩容的,当达到了实现预定的MAXIMUM_CAPACITY,就不再进行扩容。
7)HashMap 的长度为什么都是2的N次幂的大小
8)HashMap存在线程安全问题,那是怎么处理这种情况的?
9)ConcurrentHashMap
10)迭代器 Iterator
Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration,迭代器允许调用者在迭代过程中移除元素。
11)Iterator 和 ListIterator 的区别
12)实现数组和 List 之间的转换
13)ArrayList 和 LinkedList 的区别
14)ArrayList 和 Vector的区别
15)hashCode()与equals()的相关规定
16)极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么
17)HashMap在高并发下如果没有处理线程安全会有怎样的安全隐患
18)BlockingQueue是什么
BlockingQueue是 JUC 包下的,是一个阻塞队列,在进行检索或移除一个元素的时候,它会等待队列变为非空;当在添加一个元素时,它会等待队列中的可用空间。BlockingQueue接口是Java集合框架的一部分,主要用于实现生产者-消费者模式。我们不需要担心等待生产者有可用的空间,或消费者有可用的对象,因为它都在BlockingQueue的实现类中被处理了。Java提供了集中BlockingQueue的实现,比如 ArrayBlockingQueue 、 LinkedBlockingQueue 、 PriorityBlockingQueue 、 SynchronousQueue 等。
19)ArrayList在循环过程中删除,会不会出问题,为什么。
会出现问题。因为删除是利用复制和移动的方式,如果集合的值为{"11","22","22"},要删除22的话结果为{"11","22"},第三个22就会前移,这样能循环过程中,就访问不到第三个22。
解决:
1)什么是Spring
2)Spring的优缺点
优点:
3)Spring的核心模块
4)什么是Spring配置文件
Spring配置文件是XML 文件。该文件主要包含类信息,它描述了这些类是如何配置以及相互引入的。但是XML配置文件冗长且更加干净,如果没有正确规划和编写,那么在大项目中管理会变得非常困难。
5)Spring框架中用到的设计模式
6)IOC是什么
IOC(控制反转),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。Spring IOC负责创建对象,管理对象(通过依赖注入(DI)装配对象,配置对象,并且管理这些对象的整个生命周期)
7)IOC的优点
8)动态代理的两种方式以及区别
9)可以通过多少种方法完成依赖注入
构造函数注入 | setter注入 |
---|---|
没有部分注入 | 有部分注入 |
不会覆盖setter属性 | 会覆盖setter属性 |
任意修改都会创建一个新实例 | 任意修改不会创建一个新实例 |
适用于设置很多属性 | 适用于设置少量属性 |
10)BeanFactory 和 ApplicationContext 的区别
BEANFactory | ApplicationContext |
---|---|
懒加载 | 即时加载 |
不支持国际化 | 支持国际化 |
不支持基于依赖的注解 | 支持基于依赖的注解 |
11)ApplicationContext通常的实现是什么
12)Spring 支持的作用域
13)spring 自动装配 bean 有哪些方式
14)怎样开启注解装配
在Spring配置文件中配置 <context:annotation-config/>
元素
15)@Autowired 和 @Resource 的区别
16)spring 事务实现方式有哪些
17)Spring的事务传播行为
18)spring 的事务隔离
脏读:
表示一个事务能够读取另一个事务中还未提交的数据,比如:某个事务尝试插入记录A,此时该事务还未提交,然后另一个事务尝试读取到了记录A
不可重复读:
是指一个事务内,多次读同一个数据,但是读出来的结果是不一样的
幻读:
指同一个事务内多次查询返回的结果集不一样,比如:另外一个事务新增或删除第一个事务结果集里面的数据,同一个记录的数据内容别修改了,所有数据行的记录就变多或者变少了。
不可重复读一般是在修改数据的情况下,幻读一般是新增或者删除的情况下
19)Spring AOP and AspectJ AOP 有什么区别
20)Spring AOP里面的几个名词
21)Spring通知有哪些类型
22)spring bean 容器的生命周期是什么样的
23) DispatcherServlet 的工作流程
本文较长,覆盖范围较广,但深度不深,因此 先纵览斩offer,再融会而贯通
今天的你多努力一点,明天的你就能少说一句求人的话!
很久很久之前,有个传说,据说:
看完不赞,都是坏蛋