`
daqing15
  • 浏览: 41226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从其他地方移来的Java面题,欢迎讨论……

阅读更多

【来源】:http://topic.csdn.net/u/20100802/13/17463a72-9207-424a-94e8-7ef70d98f6ae.html?78349

【题目】

1.String a = new String("1"+"2")共建了几个对象

我相信,绝对是个经典兼考倒一堆人的题目。经典,Java的面、笔试上都会有,可又总是有人会犯晕。呵呵!

看构造器里面("1"+"2"),这个是在编译期就已经做了处理,即代表一个字符串:"12"。

当使用new的方法创建字符串时,注意这个”new“,就表示直接开辟了内存空间,VM在对其对象的值”12“;然后再把值放到VM的常量池中,并引用其本身。所以就创建了两个对象,看反编译后的代码:

String a = new String("1"+"2");
	System.out.println(a);
	反编译后的:
	Code:
  0:   new     #2; //class java/lang/String 在堆上创建了一个对象
  3:   dup
  4:   ldc     #3; //String 12最终的字符串值 

   在API中对使用new创建String的建议初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列; 换句话说,新创建的字符串是该参数字符串的副本。

既然写到这了,就扩展开来,说说其他的情况,先说一个与题目中类似的,唯一区别是,不使用new创建

看代码:

String str1 = "ABC" + "CD";
String str2 = new String("ABC" + "CD");

 再看其反编译后的:

Code:
 0:   ldc     #2; //String ABCCD
 2:   astore_1
 3:   new     #3; //class java/lang/String
 6:   dup
 7:   ldc     #2; //String ABCCD

 对比一下,我想大伙都能看出了两者的区别,首先是,直接定义字符串常量,VM不会自动调用new创建,而是在VM维护的常量池中先查找,如果发现,直接返回一个对其的引用,若不存在,把其加入,再返回一个对其的引用。


此外,再总结一下与String 有关的三种加法:

  • String tmp = "a" + "b" + "c";
  • String tmp = null;tmp+= "a";tmp+= "b";tmp+= "c";
  • 使用Stringbuffer或StringBuilder(注意,其在多线程环境下是不安全的)的append方法

看看:

 Code:
	START-第一种情况String str1 = "ABC" + "CD":
  0:   ldc     #2; //String ABCCD
  2:   astore_1
  END-第一种情况
  
  START-第二种情况:String str2 = null;str2 += "ABC";str2 += "CDS";str2 += "DSS";
  3:   aconst_null
  4:   astore_2
  5:   new     #3; //class java/lang/StringBuilder:   创建了一个StringBuilder对象
  8:   dup
  9:   invokespecial   #4; 
  12:  aload_2
  13:  invokevirtual   #5; 
  16:  ldc     #6; //String ABC : 追加第一个字符串"ABC",调用了append方法,下看
  18:  invokevirtual   #5; //Method append:
  21:  invokevirtual   #7; //Method toString:
  
  24:  astore_2
  25:  new     #3; //class java/lang/StringBuilder: 再创建了一个StringBuilder对象
  28:  dup
  29:  invokespecial   #4; 
  32:  aload_2
  33:  invokevirtual   #5; 先追加前面的字符串 "ABC"
  36:  ldc     #8; //String CDS : 追加第二个字符串"CDS",调用了append方法,下看
  38:  invokevirtual   #5; //Method java/lang/StringBuilder.append:
  41:  invokevirtual   #7; //Method java/lang/StringBuilder.toString:
  44:  astore_2
  
  45:  new     #3; //class java/lang/StringBuilder:再创建了一个StringBuilder对象
  48:  dup
  49:  invokespecial   #4; 
  52:  aload_2
  53:  invokevirtual   #5; //Method java/lang/StringBuilder.append: 先追加前面的字符串"ABC CDS"
  56:  ldc     #9; //String DSS:追加第三个字符串"CDS",调用了append方法,下看
  58:  invokevirtual   #5; //Method java/lang/StringBuilder.append:
  61:  invokevirtual   #7; //Method java/lang/StringBuilder.toString:
  END-第二种情况
  
  START-第三种情况
  64:  astore_2  
  65:  new     #10; //class java/lang/StringBuffer:创建StringBuffer对象
  68:  dup
  69:  invokespecial   #11; //Method java/lang/StringBuffer."<init>":()V
  72:  astore_3
  73:  aload_3
  74:  ldc     #6; //String ABC : 调用append方法
  76:  invokevirtual   #12; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
  79:  pop
  80:  aload_3
  81:  ldc     #13; //String DDD:调用append方法
  83:  invokevirtual   #12; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
  86:  pop
  END-第三种情况

 

小结一把:在JVM中,出现了第二种情况的,会默认创建一个StringBuilder对象来对字符串进行追加,注意,每一个"+="操作符,就会创建一个新的StringBuilder对象。这里就会造成挺大的内存浪费。

而用StringBuffer/StringBuilder这个对象来实现追加,在没调用其toString方法时,其对象还是可变的,一旦调用了toString的方法,就变成了不可变的String。



2. 触发器有几种?表和视图的区别
3.hibernate中导入(导出?忘记是导入还是导出了)大量数据时,会产生大量的对象,为了避免这一现象应该怎么做?
4.struts的作用, 被用做c层的原理
5.Spring的ioc的好处
6.事务的操作步骤(不大明白这个题目的意思),为什么会有事务


这里有某位仁兄( charles_wang8888)的解答,个人感觉其答得好:

第一题,创建了2个对象,由于编译器会吧等号右边的进行合并,所以他在常量区会建立一个 "12’的字符串,然后,在堆上创建一个对象叫a .
第 二题:日志类触发器吧,其他我不太清楚,表和视图的区别。表是在数据库的存储,视图是某些数据库语句,它不会对应数据库的存储。。表是内模式,视图是外模 式。
第三题:hibernate中导入大量对象,可以采用VO模式来优化网络交通
第4题:struts的作用是更好的反应出MVC模式, 具体你看书吧,这东西不太好回答,太开放了。
第5题目:SPRING 的IOC,控制反转,好处是通过配置来维持对象之间的关系,而不是让这些关系写死在代码中。这样对象之间的耦合程度被降低到最低
第6题:事务的操 作步骤。。不明白。威为什么要有事务。。可以吧多个步骤方在一起,让他们整体作为一个原子,要么一起成功,要么一起失败。

分享到:
评论
13 楼 XTU_xiaoxin 2010-08-05  
我就想知道,被投成新手帖会有什么后果?
12 楼 daqing15 2010-08-05  
ray_linn 写道
daqing15 写道
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!

请问我信口回答是3个,你如果是那个傻蛋考官,评什么来判定我错???JRE也不是就1.6一个版本呢,也不是只有Sun一家。

对ray_linn这位仁兄的回答也过激了。讨论问题吗,不要扯到别的地方(**考官)!面题吗?用得着扯到N多个版本吗?都说是面题,要求的当然是一个人处理一个题目的想法和如何处理罢了!又不是要在实际项目中!你说是吧?
11 楼 chris_zley 2010-08-05  
你还是看看书吧。。。这个回答太经典了
10 楼 coolzyt 2010-08-05  
这种题确实无聊,编译器这个版本可能是这样优化,下个版本又是别的方式了。
像这种问题,回答他跟编译器有关,就可以了。毕竟能回答出这个答案的也算有一定水平了,考官可能也就想看看你的知识面,不用太钻牛角尖
9 楼 ray_linn 2010-08-05  
daqing15 写道
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!



请问我信口回答是3个,你如果是那个傻蛋考官,评什么来判定我错???JRE也不是就1.6一个版本呢,也不是只有Sun一家。
8 楼 daqing15 2010-08-05  
bugmenot 写道
daqing15 写道
不知道是不是我使用的命令有问题,我编译出来并没有你如此之多的结果,呵呵!而且我只是截取了main里面的code,并没有全贴上去,而是去掉了一些不想关的一些代码(可能这个过程有误)我使用的命令是(Javap -c)!不知如此是否有误?请教了!等我检查过我自己当时所编译的代码再修改!
欢迎拍砖哈哈哈!

楼主大大请用javap -verbose
大大的确截取了main的code,但把一个表达式对应的字节码从中间给截断了。

new String("12")
这个表达式是:
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V

字节码的new只创建了一个未初始化的对象,要到invokespecial指令调用构造器后才算是构造完成。"12"是这个新建对象的构造器的参数,来源是常量池,是该类被加载的时候就创建好的。

String a =
这个变量定义是:
   9:	astore_1


System.out
   10:  getstatic   #5; //Field java/lang/System.out:Ljava/io/PrintStream;


a
  13: aload_1


println调用
   14:  invokevirtual   #6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

呵呵,小生受教啦!用过那个java -verbose命令了,在main方法里面生成的应该是一样的吧!这次献丑咯,看来要下点功夫去熟悉一些VM 字节码!欢迎拍砖!!!
7 楼 mercyblitz 2010-08-05  
daqing15 写道
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!



它说的并不是没有道理,不同版本的编译器优化不同。
6 楼 bugmenot 2010-08-05  
daqing15 写道
不知道是不是我使用的命令有问题,我编译出来并没有你如此之多的结果,呵呵!而且我只是截取了main里面的code,并没有全贴上去,而是去掉了一些不想关的一些代码(可能这个过程有误)我使用的命令是(Javap -c)!不知如此是否有误?请教了!等我检查过我自己当时所编译的代码再修改!
欢迎拍砖哈哈哈!

楼主大大请用javap -verbose
大大的确截取了main的code,但把一个表达式对应的字节码从中间给截断了。

new String("12")
这个表达式是:
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V

字节码的new只创建了一个未初始化的对象,要到invokespecial指令调用构造器后才算是构造完成。"12"是这个新建对象的构造器的参数,来源是常量池,是该类被加载的时候就创建好的。

String a =
这个变量定义是:
   9:	astore_1


System.out
   10:  getstatic   #5; //Field java/lang/System.out:Ljava/io/PrintStream;


a
  13: aload_1


println调用
   14:  invokevirtual   #6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
5 楼 daqing15 2010-08-04  
bugmenot 写道
daqing15 写道
String a = new String("1"+"2");
System.out.println(a);
反编译后的:
  Code:
   0:	new	#2; //class java/lang/String 在堆上创建了一个对象
   3:	dup
   4:	ldc	#3; //String 12最终的字符串值


楼主大大好忽悠哦!

public class Bugmenot {
    public static void main(String[] args) {
        String a = new String("1" + "2");
        System.out.println(a);
    }
}


编译结果明明是
Compiled from "Bugmenot.java"
public class Bugmenot extends java.lang.Object
  SourceFile: "Bugmenot.java"
  minor version: 0
  major version: 50
  Constant pool:
const #1 = Method	#8.#17;	//  java/lang/Object."<init>":()V
const #2 = class	#18;	//  java/lang/String
const #3 = String	#19;	//  12
const #4 = Method	#2.#20;	//  java/lang/String."<init>":(Ljava/lang/String;)V
const #5 = Field	#21.#22;	//  java/lang/System.out:Ljava/io/PrintStream;
const #6 = Method	#23.#24;	//  java/io/PrintStream.println:(Ljava/lang/String;)V
const #7 = class	#25;	//  Bugmenot
const #8 = class	#26;	//  java/lang/Object
const #9 = Asciz	<init>;
const #10 = Asciz	()V;
const #11 = Asciz	Code;
const #12 = Asciz	LineNumberTable;
const #13 = Asciz	main;
const #14 = Asciz	([Ljava/lang/String;)V;
const #15 = Asciz	SourceFile;
const #16 = Asciz	Bugmenot.java;
const #17 = NameAndType	#9:#10;//  "<init>":()V
const #18 = Asciz	java/lang/String;
const #19 = Asciz	12;
const #20 = NameAndType	#9:#27;//  "<init>":(Ljava/lang/String;)V
const #21 = class	#28;	//  java/lang/System
const #22 = NameAndType	#29:#30;//  out:Ljava/io/PrintStream;
const #23 = class	#31;	//  java/io/PrintStream
const #24 = NameAndType	#32:#27;//  println:(Ljava/lang/String;)V
const #25 = Asciz	Bugmenot;
const #26 = Asciz	java/lang/Object;
const #27 = Asciz	(Ljava/lang/String;)V;
const #28 = Asciz	java/lang/System;
const #29 = Asciz	out;
const #30 = Asciz	Ljava/io/PrintStream;;
const #31 = Asciz	java/io/PrintStream;
const #32 = Asciz	println;

{
public Bugmenot();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:	aload_0
   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
   4:	return
  LineNumberTable: 
   line 1: 0


public static void main(java.lang.String[]);
  Code:
   Stack=3, Locals=2, Args_size=1
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1
   10:	getstatic	#5; //Field java/lang/System.out:Ljava/io/PrintStream;
   13:	aload_1
   14:	invokevirtual	#6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   17:	return
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


}


main的行号表说,
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


源码行号为3的Java代码在main的字节码里是
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1

ldc #3把String构造器的参数压到栈上而已,没创建新对象。

大大把代码从中间截断来忽悠人啊

不知道是不是我使用的命令有问题,我编译出来并没有你如此之多的结果,呵呵!而且我只是截取了main里面的code,并没有全贴上去,而是去掉了一些不想关的一些代码(可能这个过程有误)我使用的命令是(Javap -c)!不知如此是否有误?请教了!等我检查过我自己当时所编译的代码再修改!
欢迎拍砖哈哈哈!
4 楼 bugmenot 2010-08-04  
daqing15 写道
String a = new String("1"+"2");
System.out.println(a);
反编译后的:
  Code:
   0:	new	#2; //class java/lang/String 在堆上创建了一个对象
   3:	dup
   4:	ldc	#3; //String 12最终的字符串值


楼主大大好忽悠哦!

public class Bugmenot {
    public static void main(String[] args) {
        String a = new String("1" + "2");
        System.out.println(a);
    }
}


编译结果明明是
Compiled from "Bugmenot.java"
public class Bugmenot extends java.lang.Object
  SourceFile: "Bugmenot.java"
  minor version: 0
  major version: 50
  Constant pool:
const #1 = Method	#8.#17;	//  java/lang/Object."<init>":()V
const #2 = class	#18;	//  java/lang/String
const #3 = String	#19;	//  12
const #4 = Method	#2.#20;	//  java/lang/String."<init>":(Ljava/lang/String;)V
const #5 = Field	#21.#22;	//  java/lang/System.out:Ljava/io/PrintStream;
const #6 = Method	#23.#24;	//  java/io/PrintStream.println:(Ljava/lang/String;)V
const #7 = class	#25;	//  Bugmenot
const #8 = class	#26;	//  java/lang/Object
const #9 = Asciz	<init>;
const #10 = Asciz	()V;
const #11 = Asciz	Code;
const #12 = Asciz	LineNumberTable;
const #13 = Asciz	main;
const #14 = Asciz	([Ljava/lang/String;)V;
const #15 = Asciz	SourceFile;
const #16 = Asciz	Bugmenot.java;
const #17 = NameAndType	#9:#10;//  "<init>":()V
const #18 = Asciz	java/lang/String;
const #19 = Asciz	12;
const #20 = NameAndType	#9:#27;//  "<init>":(Ljava/lang/String;)V
const #21 = class	#28;	//  java/lang/System
const #22 = NameAndType	#29:#30;//  out:Ljava/io/PrintStream;
const #23 = class	#31;	//  java/io/PrintStream
const #24 = NameAndType	#32:#27;//  println:(Ljava/lang/String;)V
const #25 = Asciz	Bugmenot;
const #26 = Asciz	java/lang/Object;
const #27 = Asciz	(Ljava/lang/String;)V;
const #28 = Asciz	java/lang/System;
const #29 = Asciz	out;
const #30 = Asciz	Ljava/io/PrintStream;;
const #31 = Asciz	java/io/PrintStream;
const #32 = Asciz	println;

{
public Bugmenot();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:	aload_0
   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
   4:	return
  LineNumberTable: 
   line 1: 0


public static void main(java.lang.String[]);
  Code:
   Stack=3, Locals=2, Args_size=1
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1
   10:	getstatic	#5; //Field java/lang/System.out:Ljava/io/PrintStream;
   13:	aload_1
   14:	invokevirtual	#6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   17:	return
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


}


main的行号表说,
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


源码行号为3的Java代码在main的字节码里是
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1

ldc #3把String构造器的参数压到栈上而已,没创建新对象。

大大把代码从中间截断来忽悠人啊
3 楼 daqing15 2010-08-04  
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!
2 楼 ray_linn 2010-08-04  
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊
1 楼 beneo 2010-08-04  
"12"的时候就已经在常量区了

相关推荐

    java笔试题笔试题

    java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...

    JAVA编程题全集(100题).doc

    Java 编程题全集(100 题) 本资源摘要信息涵盖了 Java 编程的基础语法、线程练习和经典编程程序,涵盖了字符串拼接、类的创建、线程练习、经典编程程序等多方面的知识点。 基础语法 1. Java 程序设计总复习题 1:...

    Java面试题(覆盖所有方面),面渣逆袭

    《Java面试题》是专为即将参加Java相关岗位面试的求职者设计的复习资源。该资料全面梳理了Java面试中常见的基础知识、核心技术、项目经验以及算法数据结构等内容,旨在帮助求职者系统地掌握Java知识体系,提高面试...

    JAVA编程题全集(100题及答案)——直接打印

    JAVA 编程题全集知识点总结 本资源提供了一个完整的 JAVA 编程题全集,涵盖了大量的题目和经典的解法,非常适合刷学完基础、刷题前的知识总结与开拓。以下是从资源中提取的重要知识点: 1. JAVA 基础知识:资源中...

    国际互联网【计算机网络技术】

    3 .7 搜索引擎及其他使用…………………………………………………………………… (39) 3 .8 技能操作………………………………………………………………………………… (40) 本章小结 …………...

    基于java餐饮管理系统的设计与实现(开题报告+审批表+任务书+项目源码+外文中献+中期检查表).rar

    1 引言…………………………………………………………………………………… 1 2 系统技术介绍………………………………………………………………………… 2 2.1 JAVA程序语言. ………………………………………………...

    java期末试题,很好的,给你……

    Java 编程基础知识点总结 本次试题涵盖了 Java 程序设计的基础知识点,包括 Java 语言基础、变量和数据类型、运算符、控制流语句、方法和构造方法、数组、访问控制符等。 一、Java 语言基础 * Java 源程序文件的...

    JAVA编程题-全集(含答案).pdf

    Java 编程题-全集(含答案) 本资源汇集了多个 Java 程序设计题目,涵盖了 Java 基础知识、控制结构、函数设计、面向对象编程等多方面的知识点。 1. Java 程序设计总复习题 1:编写一个 Java 程序在屏幕上输出“你好...

    毕设项目:医药管理系统设计(JAVA+论文+源代码)

    摘 要……………………………………………………………………Ⅰ ABSTRACT………………………………………………………………Ⅱ 1 绪论…………………………………………………………………………… 1.1办公自动化的...

    上海交通银行 Java面试题(上机考)

    上海交通银行作为一家知名的金融机构,其在招聘Java开发人员时会设置一定的技术门槛,通过面试环节来检验候选人的编程能力和对Java技术的理解。这道Java面试题是一个上机考核题目,意味着应聘者需要实际编写代码并...

    《JAVA面试题》--Java面试总结,持续更新…….zip

    十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...

    java面试题大全(网上能搜到的所有面试题)

    张孝祥整理Java就业面试题大全.doc 应届生应聘技术工作的面试技巧(来自培训机构多年经验总结).ppt sql面试题.doc JAVA面试题解惑系列.pdf Java面试题大全.pdf java面试题及答案(基础题122道,代码题19道).doc Java...

    java笔试题,这个是汇总经过本人筛选的………………

    根据给定文件的信息,我们可以提炼出以下几个重要的Java知识点: ### 1. 访问修饰符:public, private, protected, 默认(friendly) 在Java中,类成员(如方法、变量等)可以使用不同的访问控制级别来限制它们的...

    java编程题全集100题及答案

    java编程题目及答案,共100题,可供平时学习、练习使用,对于学习java基础算法,加强java编程能力会有所帮助。

    Java高级面试题整理及答案.md

    Java经典高级2023面试题大全带答案.pdf 发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题,0积分直接下载

    JAVA面试题针对三年内经验

    java web面试题.pdf java就业面试题宝典.rar Java面试题.pdf 51CTO下载-程序员面试宝典(全).pdf java华为面试题.pdf java(软件)工程师面试题大全-100%公司笔试题你都能碰到几个 达内笔试题集答案集.pdf 面试题集(全)...

    java面试资料java面试题集java笔试题汇总资料

    java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,java面试资料java面试题集java笔试题汇总资料,包括基础面试题、JavaWeb面试题、JAVA面试题集.txt、分布式相关面试题...

    java企业面试题大全(18个文档)

    java企业面试题大全(包括18个文档)。1、15个经典面试题.pdf。2、120个Java经典面试题和答案(上).pdf。3、120个Java经典面试题和答案(下).pdf。4、EJB方面.pdf。5、java web面试题.pdf。6、Java基础方面.pdf。7...

    最全的Java笔试题库之选择题篇-总共234道

    最全的Java笔试题库之选择题篇-总共234道 15.下列哪一种叙述是正确的( ) A. abstract修饰符可修饰字段、方法和类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法,大括号可有可无 D. 声明...

    Java面试笔试题大汇总(最全+详细答案)

    Java作为一门广泛使用的编程语言,其面试笔试题涵盖了众多领域,包括基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、数据库操作、设计模式、JVM优化等。以下是对这些知识点的详细阐述: 1. **...

Global site tag (gtag.js) - Google Analytics