视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
java基础常见面试题
2025-09-27 23:28:11 责编:小OO
文档
1、JDK和jre的区别?

JDK : Java development kit 包括jre和编译器等程序

Jre :Java runtime environment 指的是java运行时环境。负责启动虚拟机,加载和运行class文件。

2、JVM:java virtual machine JVM是SUN公司定义的规范。

3、GC:Garbage collection 垃圾回收器。没有被引用的对象需要

回收。程序员不能调用GC,system.gc()是通知调用垃圾回收器。

4、一个java源文件可以定义多个class(类),可以定义多个public

类,但只能有一个main()方法。

5、Java基本8种数据类型

1个字节:byte、Boolean

2个字节:short、char(unicode编码,可用于存储汉字)

4个字节:int、float

8个字节:double、long

引用数据类型4个类接口数组

6、&和&&的区别:

&是计算机内部二进制按位进行“与”运算,都是1才是1

&&是逻辑运算理解为“且”

7、乘除2的n次方使用移位运算最快

8、堆区和栈区的区别

栈区:先进后出存放局部变量连续的存储空间

堆区:存放new出来的对象,不连续的存储空间9、

自动拆箱和装箱:装箱Integer a=3;编译器会自动装箱存储

变量时代码变为Integer a=new Integer(3);

拆箱:int a=new Integer(3);

int是基本类型,Integer是引用类型。怎么会没区别呢?基本类型存放在栈里面,引用类型放在堆里面。装箱安全性更高。例如list只能存放引用类型,可以使用list.add(new Integer(1))存放到list里面。

10、

常见的异常

IoException 数组越界异常nullpointerException

ClassNotFoundException RuntimeException

NoSuchMethodException

11、成员变量和静态变量

成员变量:从属于对象,存放在堆如果要调用需new一个对

象出来。

静态变量:从属于类,存放在方法区,调用时直接类.变量名

12 、重载和重写

重载:一个方法名多个方法方法名相同参数类型、个数、

顺序不同

重写:子类覆盖父类的方法

13\\包含抽象方法的类一定是抽象类抽象类不一定包含抽象

方法。

14、多态父类的引用指向子类对象例如Personperson=new Student(); spring中面向接口编程(Aop动态代理

使用的就是多态)

15、面向对象的三大特征封装继承多态

16、String不可变字符,只能初始化一次,StringBuilder和StringBuffer前者线程不安全,后者线程安全。

17、Java不支持类之间的多继承,即一个子类只能有一个父类。单继承性使得Java简单,易于管理程序,不会出现逻辑错误以及多继承自身的缺陷。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口,从而在另一个更合理的角度来实现纯粹的多重继承性,实现接口使用关键字implements。子类与父类之间只可以单继承,类可以实现多个接口,接口之间可以实现多继承,即一个子接口可以使用extends关键字继承多个父接口,拥有多个父类,只需用逗号将接口名一一分开即可

18、若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。

19、容器之间的关系

20、map的遍历

public static void main(String[] args) {

Map map = new HashMap();

map.put("1

map.put("2

map.put("3

//第一种:普遍使用,二次取值

System.out.println("通过Map.keySet遍历key和value:");

for (String key : map.keySet()) {

System.out.println("key= "+ key + " and value= " + map.get(key)); }

//第二种

System.out.println("通过Map.entrySet使用iterator遍历key和value:"); Iterator> it = map.entrySet().iterator(); while (it.hasNext()) {

Map.Entry entry = it.next();

System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());

}

//第三种:推荐,尤其是容量大时

System.out.println("通过Map.entrySet遍历key和value");

for (Map.Entry entry : map.entrySet()) {

System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());

}

System.out.println("通过Map.values()遍历所有的value,但不能遍历key"); for (String v : map.values()) {

System.out.println("value= " + v);

}

}

当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。

22、set的遍历

1.1.迭代遍历:

2.Set set = new HashSet();

3.Iterator it = set.iterator();

4.while (it.hasNext()) {

5. String str = it.next();

6. System.out.println(str);

7.}

8.

9.2.for循环遍历:

10.for (String str : set) {

11. System.out.println(str);

12.}

13.

14.

15.优点还体现在泛型假如 set中存放的是Object

16.

17.Set set = new HashSet();

18.for循环遍历:

19.for (Object obj: set) {

20.if(obj instanceof Integer){

21.int aa= (Integer)obj;

22. }else if(obj instanceof String){

23. String aa = (String)obj

24. }

25. ........

26.}

22、冒泡排序

public static void main(String[] args) {

int []array={2,1,4,10,3,8,6,5};

sort(array);

System.out.println(Arrays.toString(array));

}

public static void sort(int array[]){

int temp;for(int i=0;ifor(int j=0;jif(array[j]>array[j+1]){

temp=array[j+1];

array[j+1]=array[j];

array[j]=temp;

}

}

}

}

23、下载本文

显示全文