JAVA面试-基础第四部分

本文是JAVA基础第四部分内容,涵盖多个常见面试问题。包括Collection和Collections区别、数组与String的length相关问题、Overload和Override区别等,还涉及异常处理、垃圾回收、线程同步、JSP和Servlet对比等Java基础知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA基础第四部分

 

1、Collection和Collections的区别

Collection是一个集合接口,提供对集合对象进行基本操作的通用接口方法。

Collections是针对集合类的一个包装类,它提供一系列静态方法实现对各种集合的搜索、排序以及线程安全化等操作。

2、数组有没有length()这个方法? String有没有length()这个方法

数组中没有length()这个方法,但是有length这个属性,用来表示数组的长度;String中有length()这个方法,用来的带字符串的长度。

3、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

Overload是重载的意思,表示同一个类中可以有多个名称相同的方法,但方法的参数列表各不相同(即参数个数或类型不同);

Override是覆盖/复写的意思,表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类中完全相同的方法覆盖父类该方法;

如果Overloaded的方法的参数列表不一样,返回类型可以不一样,反之则不能。

4、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?

TreeSet依靠的是Comparable来区分重复数据,HashSet依靠HashCode()、equals()来区分重复数据。

5、try{}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后

会执行,在return之前

6、int和Integer有什么区别

     1)Integer是int的包装类,int是Java的一种基本数据类型;

     2)Integer变量必须实例化后才能使用,int变量不需;

     3)Integer实际是对象的引用,int是直接存储数值;

     4)Integer的默认值是null,int的默认值是0。

7、JDK和JRE的区别是什么?

JDK(Java Development Kit)主要面向开发人员,它提供了Java的开发环境和运行环境

JRE(Java Runtime Environment)主要面向程序使用者,只提供了Java的运行环境

8、什么是值传递和引用传递?

值传递:在方法调用过程中,实参把它的实际参数传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样函数中对该值进行操作将不会影响实参的值。该方法在传递大量数据时,运行效率会特别低。

引用传递:弥补值传递不足,在方法执行过程中,形参和实参的内容不同,指向同一块内存地址,也就是操作的源数据,因此方法执行会影响到实际对象。

PS:基本数据类型传值,引用类型传引用,String、Integer、Double等为不可变类型(immutable),可理解为传值

9、HashMap和Hashtable有什么区别?

详见第一部分

10、HashSet和TreeSet有什么区别?

1) HashSet保存数据是无序的,TreeSet保存的数据是有序的;

2) TreeSet依靠的是Comparable来区分重复数据,HashSet依靠HashCode()、equals()来区分重复数据。

11、JVM的永久代中会发生垃圾回收么?

会发生垃圾回收,但自己没有垃圾收集器,是和老年代一起回收。常量池中的常量,无用的类信息,没有引用就可以被回收,无用的类回收,需要满足三个条件:该类的实例都被回收;加载该类的classLoader已经被回收;该类在任意地方无法通过反射来实例化一个对象。

12、Java中的两种异常类型是什么?他们有什么区别?

Error和Exception。

13、异常处理的时候,finally代码块的重要性是什么?

不管是否异常,均会执行finally代码块中代码,经常被用在需要释放资源的情况下。

  1. 垃圾回收的优点和原理。并考虑2种回收机制。

Java程序的垃圾回收机制使得程序员在编写程序时不需要考虑内存管理,该机制可以有效的防止内存泄漏和有效内存使用。

分代收集:JVM根据不同对象的生命周期划分为年轻代、老年代和永久代,采用不同的回收方法

标记-清除:分为“标记”与“清除”两个阶段。

14、final,finally,finalize的区别。

final是用于声明属性、方法和类,分别表示属性不可变、方法不可复写、类不可继承;

finally是异常处理的一部分,不管是否异常,finally语句块中的代码最终都会执行;

finalize是垃圾收集器执行的时候调用的方法。

15、请说出你所知道的线程同步的方法。

1) Synchronized关键字:对方法和代码块加锁;

2) wait和notif/notifyAll方法:利用wait()使一个线程处于等待并释放所持有对象的lock,利用notif()/notifyAll()唤醒一个/所有处于等待装袋的线程;

3) Lock接口:通过一些方法实现多线程同步,如:lock()阻塞锁、trylock()非阻塞锁。

16、JSP和Servlet有哪些相同点和不同点,联系是什么?

相同点:JSP可以看成一个特殊的Servlet,是对Servlet的扩展,JSP能完成的工作,使用Servlet也能完成。

不同点:Servlet的实现是在Java语言中嵌入HTML代码,而JSP是在HTML中嵌入Java代码;Servlet位于MVC设计模式的控制层,JSP位于视图层;Servlet中没有内置对象,JSP可以通过HttpServletRequest对象、HttpServletResponse对象以及Httpservlet对象得到。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值