当前位置:文档之家› S1_JAVA_面试题集.

S1_JAVA_面试题集.

S1_JAVA_面试题集.
S1_JAVA_面试题集.

JAVA技术面试题

目录

目录

JAVA技术面试题 (1)

1、开发Java程序步骤? (3)

2、Java程序的注释分类? (3)

3、Java领域分为哪些? (3)

4、怎么样理解JAV A的程序概念? (3)

5、Java程序的基本框架是什么? (3)

6、Java的基本类型有哪些? (3)

7、变量命名规则? (3)

8、JAV A中常用的运算符有哪些?这些运算符之间的优先级怎么样? (4)

9、JAV A中数据类型之间的转换规则分为: (4)

10、boolean类型的常用值为什么? (4)

11、JAV A中常用的选择结构有哪些? (4)

12、if...else if...else if...else与switch的使用场景是什么? (4)

13、在JAV A自定义一个生产10-100之间的随机数的公式? (4)

14、switch语句中的表达式可以是什么类型数据? (4)

15、switch判断表达式中break的作用是什么? (4)

16、三元运算符?:的作用是什么? (4)

17、while循环结构与do...while循环结构的不同?.. (4)

18、java中程序调试的步骤? (4)

19、for循环结构与while循环结构的不同? (5)

20、程序中break、continue、return跳转语句的不同? (5)

21、使用数组四步走是什么? (5)

22、数组的定义有哪些方式? (5)

23、编写一个程序实现费波拉契数列(就是后面的数字是前面两个数字的和),要求从

1到20即可。请使用数组方式来实现 (5)

24、请打印杨辉三角。杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,

而其余的数则是等于它肩上的两个数之和(使用数组实现) (5)

25、请描述什么是对象,什么是类? (6)

26、定义一个类的步骤什么? (6)

27、成员变量和局部变量的区别是什么? (6)

28、请描述方法的组成部分? (6)

29、JAV A中包的作用是什么? (6)

30、包命名规范有哪些? (6)

31、定义一个方法,该方法带有一个字符串的参数,该方法的功能是实现大小写的转

换,如:输入的是HoWAREyoU通过该方法就可以把她转换为hOwareYOu最后把转换的结果通过return返回。 (6)

32、String是最基本的数据类型吗? (7)

33、Java有没有goto? (7)

34、说明一下类变量和实例变量的区别。 (7)

35、说明实例方法和类方法的区别? (7)

36、数组有没有length()方法?String有没有length()方法? (7)

37、什么是循环嵌套?其特点是什么? (7)

38、char型变量中能不能存贮一个中文汉字?为什么? (7)

39、String s=new String("a");共创建了几个String对象? (7)

40、int和Integer有什么区别 (7)

41、如果main方法被声明为private会怎样? (8)

42、Java里的传引用和传值的区别是什么? (8)

43、Java的”一次编写,处处运行”是如何实现的? (8)

44、说明一下public static void main(String args[])这段声明里每个关键字的作用 (8)

45、如果去掉了main方法的static修饰符会怎样? (8)

46、为什么Java里没有全局变量? (8)

47、如何将String类型转化成Number类型? (8)

48、面向对象编程的原则是什么? (8)

49、什么是隐式的类型转化? (9)

50、显式的类型转化是什么? (9)

51、什么是Java虚拟机? (9)

52、Java的访问修饰符是什么? (9)

53、&操作符和&&操作符有什么区别? (9)

54、public static void写成static public void会怎样? (9)

55、声明变量和定义变量有什么不同? (9)

56、Java支持哪种参数传递类型? (9)

57、你怎么理解变量? (9)

58、怎么判断数组是null还是为空? (9)

59、程序中可以允许多个类同时拥有都有main方法吗? (9)

60、一个类能拥有多个main方法吗? (10)

61、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? (10)

62、说说&和&&的区别。 (10)

63、Java中的“短路”是指什么 (10)

64、在JAV A中如何跳出当前的多重嵌套循环? (10)

65、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? (11)

66、short s=1;s=s+1;有什么错?short s=1;s+=1;有什么错? (11)

67、char型变量中能不能存贮一个中文汉字?为什么? (12)

68、用最有效率的方法算出2乘以8等于几? (12)

69、冒泡排序实现 (12)

70、"=="和equals方法究竟有什么区别? (12)

71、静态变量和实例变量的区别? (13)

72、谈谈你对static关键词的理解 (14)

73、是否可以从一个static方法内部发出对非static方法的调用? (14)

74、Integer与int的区别 (15)

75、Math.round(11.5)等於多少?Math.round(-11.5)等于多少? (15)

76、请说出作用域public,private,protected,以及不写时的区别 (15)

77、public、protected和private这些访问权限修饰词的作用 (15)

78、写出JDK中至少5个以上的包名。 (16)

79、Java是否有过程和函数? (16)

80、String是最基本的数据类型吗? (16)

81、String s="Hello";s=s+"world!";这两行代码执行后,原始的String对象中的内容

到底变了没有? (16)

82、String和StringBuffer的区别 (17)

83、StringBuffer与StringBuilder的区别 (18)

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

85、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? (18)

86、final关键词有哪些应用 (19)

87、在eclipse中调试时,怎样查看一个变量的值? (19)

88、您看过哪些JAV A方面的书籍,能列举一下吗? (19)

89、BS与CS的联系与区别。 (19)

1、开发Java程序步骤?

编辑源程序(以.java为后缀名保存)=>编译.java文件(生成.class文件)=>运行.class文件(输出程序结果)

2、Java程序的注释分类?

1、单行注释//

2、多行注释/**/

3、文档注释/***/

3、Java领域分为哪些?

1、JavaSE、JavaEE、JavaME

4、怎么样理解JAV A的程序概念?

通常指完成某些事情的一种既定方式和过程,可以将程序看成对一系列动作的执行过程的描述

5、Java程序的基本框架是什么?

public class HelloWorld{

public static void main(String[]args){

System.out.println("Hello World!!!");

}

}

6、Java的基本类型有哪些?

byte,char,short,int,long,float,double,boolean

7、变量命名规则?

1、简短且能清楚地表明变量的作用,通常第一个单词的首字母小写,其后单词的首字母大写

2、变量名首字符必须是字母、下划线或者美元符$,其后可以跟字母、数字、下划线已经美元符。

8、JAV A中常用的运算符有哪些?这些运算符之间的优先级怎么样?

1、算术运算符

2、比较运算符

3、赋值运算符

4、逻辑运算符

运算符之间的优先级:

算术运算符》比较运算符》逻辑运算符》赋值运算符

9、JAV A中数据类型之间的转换规则分为:

1、自动类型转换

2、强制类型转换

10、boolean类型的常用值为什么?

true/false

11、JAV A中常用的选择结构有哪些?

1、if

2、if...else

3、if...else...的嵌套

4、if...else if...else if...else...

5、switch

12、if...else if...else if...else与switch的使用场景是什么?

1、if...else if...else if...else一般使用在对值得范围进行判断

2、发现多个条件均为等值判断,更好的解决办法是使用switch。

13、在JAV A自定义一个生产10-100之间的随机数的公式?

int random=(int)(Math.random()*(max-min)+min)

int random=(int)(Math.random()*(100-10)+10)

14、switch语句中的表达式可以是什么类型数据?

答:表达式的值可以是byte、short、int和char类型的数据,但不能是float和double类型的数据。

15、switch判断表达式中break的作用是什么?

用来结束case匹配语句的执行。

16、三元运算符?:的作用是什么?

?:是if...else...的简化版

17、while循环结构与do...while循环结构的不同?

while结构在循环的开始判断下一个迭代是否应该继续。do/while结构在循环的结尾来判断是否将继续下一轮迭代。do结构至少会执行一次循环体。

18、java中程序调试的步骤?

1、设置断点

2、单步运行

3、观察变量

19、for循环结构与while循环结构的不同?

当循环次数确定时使用for循环否则使用while循环。

20、程序中break、continue、return跳转语句的不同?

1、break:跳出循环而执行循环后面的语句

2、continue:跳过循环体中剩余的语句而执行下一次循环

3、return结束方法的调用。

21、使用数组四步走是什么?

1、声明数组

2、分配空间

3、赋值

4、处理数据

22、数组的定义有哪些方式?

int[]arr=new int[5];

int arr[]=new int[5];

int[]arr=new int[]{1,2,3,4,5};

int[]arr={1,2,3,4,5};

23、编写一个程序实现费波拉契数列(就是后面的数字是前面两个数字的和),要求从1到20

即可。请使用数组方式来实现

int[]num=new int[20];

num[0]=0;

num[1]=1;

for(int i=2;i<20;i++){

num[i]=num[i-1]+num[i-2];

}

for(int j=1;j<=20;j++){

if(j%5==0){

System.out.println();

}

System.out.print(num[j-1]+"");

}

24、请打印杨辉三角。杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其

余的数则是等于它肩上的两个数之和(使用数组实现)

final int N=10;

int[]num=new int[N];

num[0]=1;

for(int i=1;i!=N;i++){

for(int j=0;j!=i;j++){

System.out.print(num[j]+"\t");

}

System.out.println();

num[i]=1;

for(int j=i-1;j!=0;j--){

num[j]=num[j]+num[j-1];

}

}

25、请描述什么是对象,什么是类?

对象是一个你能够看得到、摸得着的具体实体

类是模子,定义对象将会拥有的特征(属性)和行为(方法),类是抽象的概念,仅仅是模板

26、定义一个类的步骤什么?

1、定义类名

2、编写类的属性

3、编写类的方法

27、成员变量和局部变量的区别是什么?

作用域不同

局部变量的作用域仅限于定义它的方法

成员变量的作用域在整个类内部都是可见的

初始值不同

Java会给成员变量一个初始值

Java不会给局部变量赋予初始值

28、请描述方法的组成部分?

方法的签名与方法体构成。

29、JAV A中包的作用是什么?

1、允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件

2、更好的保护类、属性和方法

3、防止命名冲突

30、包命名规范有哪些?

1、包名由小写字母组成,不能以圆点开头或结尾

2、包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名

3、包名后续部分依不同机构内部的规范不同而不同

31、定义一个方法,该方法带有一个字符串的参数,该方法的功能是实现大小写的转换,如:

输入的是HoWAREyoU通过该方法就可以把她转换为hOwareYOu最后把转换的结

果通过return返回。

public String charConvert(String str){

char[]chs=str.toCharArray();

for(int i=0;i

if((int)chs[i]>=65&&(int)chs[i]<=90){

chs[i]=(char)((int)chs[i]+32);

}else{

chs[i]=(char)((int)chs[i]-32);

}

}

String s=new String(chs);

return s;

}

32、String是最基本的数据类型吗?

String不是基本数据类型,基本数据类型包括byte、int、char、long、float、double、boolean和short。https://www.doczj.com/doc/e614789929.html,ng.String类是final类型的,因此不可以继承这个类、不能修改这个类。

33、Java有没有goto?

goto是Java中的保留关键字,但是现在没有在Java中使用。

34、说明一下类变量和实例变量的区别。

类变量是所有对象共有的,所有的实例对象都共用一个类变量,内存中只有一处空间存放类变量的值。如果其中一个对象改变了类变量的值,其他对象得到的就是改变后的结果。当类被加载到内存时,类变量就会分配相应的内存空间。

35、说明实例方法和类方法的区别?

方法前面有static关键字修饰的为类方法,否则为实例方法。实例方法可以调用该类中的其他方法;类方法只能调用其他类方法,不能调用实例方法;当类文件加载到内存时,实例方法不会被分配内存空间,只有在对象创建之后才会分配。而类方法在该类被加载到内存时就分配了相应的内存空间。

36、数组有没有length()方法?String有没有length()方法?

数组没有length()方法,只有length的属性。String有length()方法。

37、什么是循环嵌套?其特点是什么?

循环的嵌套,是指在一个循环语句的循环体中又包含另一个完整的循环语句。多重循环语句的特点是:外层循环变量相对稳定,内层循环变量逐一变化,即:“多层循环,内(层)外(层)有别,外(层)变一次,内(层)变一遍。”

38、char型变量中能不能存贮一个中文汉字?为什么?

能够定义成为一个中文的,因为Java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的。

39、String s=new String("a");共创建了几个String对象?

两个。其中包括一个字符对象和一个字符对象引用对象。

40、int和Integer有什么区别

Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。

原始类型封装类

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。

41、如果main方法被声明为private会怎样?

能正常编译,但运行的时候会提示”main方法不是public的”。

42、Java里的传引用和传值的区别是什么?

传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。

43、Java的”一次编写,处处运行”是如何实现的?

Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java 是平台独立的。

44、说明一下public static void main(String args[])这段声明里每个关键字的作用

public:main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。所以可见性设置为pulic.

static:Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。

void:main方法没有返回值。

String是命令行传进参数的类型,args是指命令行传进的字符串数组。

45、如果去掉了main方法的static修饰符会怎样?

程序能正常编译。运行时会抛NoSuchMethodError异常。

46、为什么Java里没有全局变量?

全局变量是全局可见的,Java不支持全局可见的变量,因为:全局变量破坏了引用透明性原则。全局变量导致了命名空间的冲突。

47、如何将String类型转化成Number类型?

Integer类的valueOf方法可以将String转成Number。下面是代码示例:

String numString=“1000″;

int id=Integer.valueOf(numString).intValue();

48、面向对象编程的原则是什么?

主要有三点,多态,继承和封装

49、什么是隐式的类型转化?

隐式的类型转化就是简单的一个类型赋值给另一个类型,没有显式的告诉编译器发生了转化。并不是所有的类型都支持隐式的类型转化。

代码示例:

int i=1000;

long j=i;//Implicit casting

50、显式的类型转化是什么?

显式的类型转化是明确告诉了编译器来进行对象的转化。

代码示例:

long i=700.20;

int j=(int)i;//Explicit casting

51、什么是Java虚拟机?

Java虚拟机是能移植到不同硬件平台上的软件系统。

52、Java的访问修饰符是什么?

访问权限修饰符是表明类成员的访问权限类型的关键字。使用这些关键字来限定程序的方法或者变量的访问权限。它们包含:

public:所有类都可以访问protected:同一个包内以及所有子类都可以访问private:只有归属的类才能访问默认:归属类及相同包下的子类可以访问

53、&操作符和&&操作符有什么区别?

当一个&表达式在求值的时候,两个操作数都会被求值,&&更像是一个操作符的快捷方式。当一个&&表达式求值的时候,先计算第一个操作数,如果它返回true才会计算第二个操作数。如果第一个操作数取值为fale,第二个操作数就不会被求值。

54、public static void写成static public void会怎样?

程序正常编译及运行。

55、声明变量和定义变量有什么不同?

声明变量我们只提供变量的类型和名字,并没有进行初始化。定义包括声明和初始化两个阶段String s;只是变量声明,String s=new String(“bob”);或者String s=“bob”;是变量定义。

56、Java支持哪种参数传递类型?

Java参数都是进行传值。对于对象而言,传递的值是对象的引用,也就是说原始引用和参数引用的那个拷贝,都是指向同一个对象。

57、你怎么理解变量?

变量是一块命名的内存区域,以便程序进行访问。变量用来存储数据,随着程序的执行,存储的数据也可能跟着改变。

58、怎么判断数组是null还是为空?

输出array.length的值,如果是0,说明数组为空。如果是null的话,会抛出空指针异常。59、程序中可以允许多个类同时拥有都有main方法吗?

可以。当程序运行的时候,我们会指定运行的类名。JVM只会在你指定的类中查找main

方法。因此多个类拥有main方法并不存在命名冲突的问题。

60、一个类能拥有多个main方法吗?

可以,但只能有一个main方法拥有以下签名:

public static void main(String[]args){}

否则程序将无法通过编译。编译器会警告你main方法已经存在。

61、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。

62、说说&和&&的区别。

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!=null&&!str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33&++y>0)y会增长,If(x==33&&++y>0)不会增长

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31&0x0f的结果为0x01。

备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。

63、Java中的“短路”是指什么

在java逻辑运算中使用逻辑运算符||与&&时将采取“短路”运算。举一个例子if(a>0||a<1){

//代码1....

}

上面一段代码的执行过程是当a满足大于0的时候将不会再执行后面的a<1代码,这就是“短路”。

64、在JAV A中如何跳出当前的多重嵌套循环?

在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。例如,

ok://定义的标号

for(int i=0;i<10;i++){

for(int j=0;j<10;j++){

System.out.println(“i=”+i+“,j=”+j);

if(j==5){

break ok;//跳出到指定的标号

}

}

}

另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。

int arr[][]={{1,2,3},{4,5,6,7},{9}};

boolean found=false;

for(int i=0;i

for(int j=0;j

System.out.println(“i=”+i+“,j=”+j);

if(arr[i][j]==5){

found=true;

break;

}

}

}

65、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

在switch(expression)中,expression只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long 和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

66、short s=1;s=s+1;有什么错?short s=1;s+=1;有什么错?

对于short s=1;s=s+1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

对于short s1=1;s1+=1;由于+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

67、char型变量中能不能存贮一个中文汉字?为什么?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。

68、用最有效率的方法算出2乘以8等于几?

最有效率的计算方式:int result=2<<3;

因为将一个数左移n位(二进制移位运算),就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算是cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2<<3。

69、冒泡排序实现

口诀:n个数字来比较,外层循环N-1,内层循环N-1-i,两两相比小靠前。

代码示例:

public static void main(String[]args){

int[]number=new int[]{22,12,33,45,66};

int temp;

//冒泡排序

for(int i=0;i

for(int j=0;j

if(number[j]>number[j+1]){

temp=number[j+1];

number[j+1]=number[j];

number[j]=temp;

}

}

}

}

70、"=="和equals方法究竟有什么区别?

(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj=new Object();引用变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:

String a=new String("foo");

String b=new String("foo");

两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b 将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。

在实际开发中,我们经常要比较传递进行来的字符串内容是否等,例如,String input=new String(“quit”);input.equals(“quit”),许多人稍不注意就使用==进行比较了,这是错误的,随便从网上找几个项目实战的教学视频看看,里面就有大量这样的错误。记住,字符串的比较基本上都是使用equals方法。

如果一个类没有自己定义equals方法,那么它将继承Object类的equals方法,Object 类的equals方法的实现代码如下:

boolean equals(Object o){

return this==o;

}

这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals 和使用==会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须重写equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的。

71、静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分

配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest{

public static int staticVar=0;

public int instanceVar=0;

public VariantTest(){

staticVar++;

instanceVar++;

System.out.println(“staticVar=”+staticVar+”,instanceVar=”+ instanceVar);

}

}

备注:这个解答除了说清楚两者的区别外,最后还用一个具体的应用例子来说明两者的差异,体现了自己有很好的解说问题和设计案例的能力,思维敏捷,超过一般程序员,有写作能力!

72、谈谈你对static关键词的理解

通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,声明为static的方法有以下几条限制:

1)它们仅能调用其他的static方法。

2)它们只能访问static数据。

3)它们不能以任何方式引用this或super。

声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。

73、是否可以从一个static方法内部发出对非static方法的调用?

不可以。

因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static

方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static 方法内部发出对非static方法的调用。

74、Integer与int的区别

int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer 是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。

另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数Integer.parseInt(“数字字符串”);

Integer中还定义了表示整数的最大值和最小值的常量。

75、Math.round(11.5)等於多少?Math.round(-11.5)等于多少?

Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整(就是往大值靠拢),所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

76、请说出作用域public,private,protected,以及不写时的区别

这四个作用域的可见范围如下表所示。

说明:如果在修饰的元素上面没有写任何访问修饰符,则表示default(friendly)。

作用域当前类同一包内子孙类其他包

public√√√√

protected√√√×

default(不写)√√××

private√×××

备注:只要记住了有4种访问权限,4个访问范围,然后将全选和范围在水平和垂直方向上分别按排从小到大或从大到小的顺序排列,就很容易画出上面的图了。

77、public、protected和private这些访问权限修饰词的作用

1)public修饰的字段、属性可被所有的访问。

2)protected修饰的字段、属性只能被本类、本包以及其子类的访问。

3)private修饰的字段、属性只可以被本类访问。

78、写出JDK中至少5个以上的包名。

1)https://www.doczj.com/doc/e614789929.html,ng包:java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类

型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包

2)java.io包:java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤

输入/输出流等等

3)java.util包:包含如处理时间的date类,处理变成数组的Vector类,以及stack和

HashTable类

4)https://www.doczj.com/doc/e614789929.html,ng.reflect包:提供用于反射对象的工具

5)https://www.doczj.com/doc/e614789929.html,包:实现网络功能的类库有Socket类、ServerSocket类

6)java.sql包:提供使用JAVA编程语言访问并处理存储在数据源(通常是一个关系数据库)

中的数据的API

7)java.awt包:构建图形用户界面(GUI)的类库,低级绘图操作Graphics类,图形界面

组件和布局管理如Checkbox类、Container类、LayoutManger接口等,以及界面用户交互控制和事件响应,如Event类

79、Java是否有过程和函数?

在Java中可以存在过程和函数。在Java中,对于程序的各种功能的实现,都是通过方法实现的;而方法在运行的时候,就被称为过程。Java中的函数有main(),时间函数等。

80、String是最基本的数据类型吗?

基本数据类型包括byte、int、char、long、float、double、boolean和short。

https://www.doczj.com/doc/e614789929.html,ng.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

81、String s="Hello";s=s+"world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是"Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个String对象,内容为"Hello world!",原来那个对象还存在于内存之中,

只是s这个引用变量不再指向它了。

通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为String 对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。

同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个String。例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做:public class Demo{

private String s;

public Demo{

s="Initial Value";

}

}

而非s=new String("Initial Value");

后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因为String 对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,它们的String类型属性s都指向同一个对象。

上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多Java 标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以Java标准类库还提供了一个可变版本,即StringBuffer。

82、String和StringBuffer的区别

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。String类表示内容不可改变的字符串。而StringBuffer类表示内容可以被修改的字符串。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。另外,String实现了equals方法,new String(“abc”).equals(new String(“abc”)的结果为true,而StringBuffer没有实现equals

方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false。

接着要举一个具体的例子来说明,我们要把1到100的所有数字拼起来,组成一个串。

StringBuffer sbf=new StringBuffer();

for(int i=0;i<100;i++){

sbf.append(i);

}

上面的代码效率很高,因为只创建了一个StringBuffer对象,而下面的代码效率很低,因为创建了101个对象。

String str=new String();

for(int i=0;i<100;i++){

str=str+i;

}

在讲两者区别时,应把循环的次数搞成10000,然后用endTime-beginTime来比较两者执行的时间差异,最后还要讲讲StringBuilder与StringBuffer的区别。

String重写了equals方法和hashCode方法,而StringBuffer没有重写equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。

83、StringBuffer与StringBuilder的区别

StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。

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

数组没有length()这个方法,有length的属性。String有有length()这个方法。85、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:

final StringBuffer a=new StringBuffer("immutable");

执行如下语句将报告编译期错误:

a=new StringBuffer("");

但是,执行如下语句则可以通过编译:

a.append("broken!");

有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:public void method(final StringBuffer param){

}

实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:

param.append("a");

86、final关键词有哪些应用

当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。

其初始化可以在两个地方:

一是其定义处,也就是说在final变量定义时直接给其赋值。

二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。

87、在eclipse中调试时,怎样查看一个变量的值?

在要查看的变量前先设置断点,然后选中变量,右键选debug as-->Java Application,打开debug 透视图,这时在Variables窗口中可以看到变量当前的值。

如果是局部变量,也可以在局部变量窗口中查看。

要知道一个方法,被调用的方法的调用链,可以在方法栈中查看。

88、您看过哪些JAV A方面的书籍,能列举一下吗?

《JAVA与设计模式》、《JAVA编程思想》、《java核心技术》卷I/卷II、孙卫琴的《精通hibernate》、李刚的《Struts2权威指南》,《jsp2.0编程手册》等

89、BS与CS的联系与区别。

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、InFORMix或SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator 或Internet Explorer,服务器安装Oracle、Sybase、InFORMix或SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server同数据库进行数据交互。

C/S与B/S区别:

1.硬件环境不同:

C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供

连接和数据交换服务.

B/S建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租用设备.信息自

己管理.有比C/S更强的适应范围,一般只要有操作系统和浏览器就行

2.对安全要求不同

C/S一般面向相对固定的用户群,对信息安全的控制能力很强.一般高度机密的信息系统

采用C/S结构适宜.可以通过B/S发布部分可公开信息.

B/S建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用户。

3.对程序架构不同

C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑.

B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上.比C/S有更高的要求B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk2000Exchange2000等,全面支持网络的构件搭建的系统.SUN和IBM推的JavaBean构件技术等,使B/S更加成熟.4.软件重用不同

C/S程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好.

B/S对的多重结构,要求构件相对独立的功能.能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子

5.系统维护不同

C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升级.升级难.可能是再做一个全新的系统

B/S构件组成,方面构件个别的更换,实现系统的无缝升级.系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.

6.处理问题不同

C/S程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关.应该都是相同的系统

B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的.与操作系统平台关系最小.

7.用户接口不同

C/S多是建立的Window平台上,表现方法有限,对程序员普遍要求较高

B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流.并且大部分难度减低,减低开发成本.

8.信息流不同

C/S程序一般是典型的中央集权的机械式处理,交互性相对低

B/S信息流向可变化,B-B B-C B-G等信息、流向的变化,更像交易中心。

java开发常见笔试题(数据库篇)

一.根据下列员工信息表和部门信息表完成以下SQL查询 (表1 emp_xiangyoulu 员工信息表) (表2 dept_xiangyoulu) 1.查询所有员工信息? Select * from emp_xianyoulu; 2.查看所有部门信息? Select * from dept_xiangyoulu; 3:查看公司工资排名的第2-5名(分页查询rownum) select * from( selectrownumrn,ename,sal from emp_xiangyoulu order by saldesc) where rn between 2 and 5;--->错! 伪列rownum和排序order by 同时出现时,先生成伪列号,再按条件排序--->导致rn对应的序号在排序之前就定了,查出的结果和预期不符;; SELECT ROWNUMrn,e.* FROM ( SELECT * FROM emp_xiangyoulu ORDER BY saldesc) e WHERE rn BETWEEN 2 AND 5;--->错! "RN": 标识符无效,伪列号不能直接当成一般属性直接用; selectrownum,e.* from( select * from emp_xiangyoulu order by saldesc)e where rownum between 2 and 5;--->错! 不报错,但查询结果为0条,原因同上; select * from( selectrownum,e.* from( select * from emp_xiangyoulu order by saldesc)e)

Java笔试题及答案

Java笔试题及答案 一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A. Java程序经编译后会产生machine code B. Java程序经编译后会产生byte code C. Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 详解:见下面代码,很明显方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。 package net.study; public class TestConStructor { public TestConStructor() {

} public void TestConStructor() { } public static void main(String[] args) { TestConStructor testConStructor = new TestConStructor(); testConStructor.TestConStructor(); } } 4.提供Java存取数据库能力的包是() 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 详解: java 中没有<> := 这种运算符,if else不算运算符 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是()

2016最新java面试题_详细版

详解笔试面试题集 (1)下列各题ABCD四个选顼中,只有一个选项是正确的,请将正确选项填写在答题纸上 (1)下列关于栈的描述中错误的是( B) A. 栈是先进后出的线性表 B 栈只能顺序存储 C 栈具有记忆作用 D 对栈的插入弓删除操作中,不需要改变栈底指针 正确答案:B 分析:栈是链式存储的 (2)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( ) A 冒泡排序为n/2 B 冒泡排序为n C 快速排序为n D 快速排序为n(n-l)/2 正确答案:D 分析: 想想快速排序,每次都会选取线性表的轴值,随后以此轴值划分为两个子线性表再分别进行快排,在最坏情况下,也就是说每次选出的线性表轴值完全不能将这个线性表划分为两个子线性表。那么此时快速排序退化为冒泡排序了。 那么第一趟排序时,轴值(线性表的中间位置)被选出,这个值绝对是这个线性表中最大的(不然也不能是最坏情况),其他值都比他小,那么线性表现在分为完全不对等的两段(一段是0,另一段是n - 1),一段是这个值,一段是其他值。同样第二趟排序在刚才剩下的值中选中间值(剩余值中最大的那个),又分为不对等两段,依次递推。也就是说每次都比较了N - 1个元素(轴值选出后都与它比较大小),那么肯定是比较了n - 1次(如第一次先挑了个轴值,然后剩下n - 1比较),n代表当前子线性表中元素个数由此最白痴的数列问题出现了,如下 1 + 2 + 3 + .......... + n - 2 + n - 1 = n(n - 1) / 2 还有一种投机取巧的方法,在最垃圾情况下既然快排变为冒泡,那由时间复杂度知其必为o(n ^ 2)的复杂度,答案中ABC都是线性时间复杂,显然错误 (3)下列对于线性链表的描述中正确的是( ) A 存储空间间不一定是连续,且各元素的存储顺序是任意的

java经典面试题大全带答案

Java经典面试题带答案 一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A. Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行 D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A. B. C. D. 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.能指定编译结果要置于哪个目录(directory) 答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D. 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

Java面试题大全(答案版)

一个".java"源文件中是否可以包括多个类(不是内部类)?有 什么限制? 可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致 2、&和&&的区别。 &和&&都可以用作逻辑与; &&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二 个表达式; &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 3、J ava有没有goto? java中的保留字,现在没有在java中使用。 4、在JAVA中,如何跳出当前的多重嵌套循环? break+变量控制与return 5、s witch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在Stri ng 上? Switch可以作用在int上,而byte可以隐式转换为int所以能作用在byte 上 不能作用在long上,也不能作用在String上 6、s hort s1 = 1; s1 = s1 + 有什么错? short s1 = 1; s1 += 有什么错? 1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。s1+=1不会报,因为JVM会对它特殊处理(自动强转) 7、char型变量中能不能存贮一个中文汉字?为什么? 可以,char型变量是用来存储uni code(依妮Q特)编码的,而uni code编码包含了中文,所以是可以保存的

&编程题:用最有效率的方法算出2乘以8等於几? 2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方, 左移运算,CPU直接支持,所以是最有效率的 9、请设计一个一百亿的计算器 思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。 0、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 引用变量不能变 1、"=="和equals方法究竟有什么区别? ==和equals方法都可以用来比较两个对象是否是同一个对象。 ==还可以比较两个变量的值是否相等。 equals是Object类中的方法,可以由子类重写此方法,实现内容相等。 2、静态变量和实例变量的区别? 语法上不同:静态变量前要加static关键字,实例变量不需要 程序运行时不同:实例变量是属于某个对象的,只有创建了对象,才会为这个对象的实例变量分配空间。静态变量是属于类的,当程序加载了这个类的字节码文件,就会为静态变量分配空间,并且所有对象共享这个变量 3、是否可以从一个static方法内部发出对非static方法的调用? 不可以,非static方法需要与对象关联在一起的,而static方法调用时不需要对象,可以直接调用,也就是说调用static方法时,可能还没有创建任何实例 4、Integer与int的区别 int是java中的8种基本数据类型之一,默认值是0, Integer是int的包装类, 默认值是null,即Integer可以表示未赋值和赋值为0

JAVA高级面试题集及答案

1 1、BS与CS的联系与区别。 回答:C/S 是Client/Server 的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、 Sybase、Informix 或SQL Server。客户端需要安装专用的客户端软件。B/S是Brower/Server 的缩写,客户机上只要安装 一个浏览器(Browser),如Netscape Navigator 或Internet Explorer,服务器安装Oracle、Sybase、Informix或SQL Server 等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端 实现。浏览器通过web Server 同数据库进行数据交互。 C/S 与B/S 区别: 1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S 更强的适 应范围, 一般只要有****作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通 过B/S 发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 3.对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S 有更高的要求B/S 结构的程序架构 是发展的趋势, 从MS 的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的 JavaBean 构件技术等,使B/S更加成熟. 4.软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石 头桌子 5.系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实 现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与****作系统相关. 应该都是相同的系统

JAVA面试题汇总

目录 概念题 ---------------------------------------------------------------------------------错误!未定义书签。 一、JAVA基础 ------------------------------------------------------------------------------ 错误!未定义书签。 1)面向对象的特征 --------------------------------------------------------------------------------------- 错误!未定义书签。 2)什么是OOP?什么是类?请对比类和对象实例之间的关系。 ----------------------- 错误!未定义书签。 3)简述类与对象的概念 -------------------------------------------------------------------------------- 错误!未定义书签。 4)什么是属性与方法? -------------------------------------------------------------------------------- 错误!未定义书签。 5)什么是封装? ------------------------------------------------------------------------------------------ 错误!未定义书签。 6)描述一下JVM加载class文件的原理机制 --------------------------------------------------- 错误!未定义书签。 7)Java程序怎么优化? -------------------------------------------------------------------------------- 错误!未定义书签。 8)一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?----- 错误!未定义书签。 9)char型变量中能不能存贮一个中文汉字 ----------------------------------------------------- 错误!未定义书签。 10)逻辑操作符(&,|,^)与条件操作符(&&,||)的区别--------------------------------------- 错误!未定义书签。 11)Math.round(11.5)等於多少? Math.round(-11.5)等於多少? ------------------------- 错误!未定义书签。 12)Java有没有goto?-------------------------------------------------------------------------------- 错误!未定义书签。 13)int 和Integer 的区别 --------------------------------------------------------------------------- 错误!未定义书签。 14)如何将数值型字符转换为数字?如何去小数四舍五入保留小数点后两位。错误!未定义书签。 15)short s1 = 1; s1 = s1 + 1;和short s1 = 1; s1 += 1;有什么错误 -------------------------- 错误!未定义书签。 16)float f=3.4是否正确? ----------------------------------------------------------------------------- 错误!未定义书签。 17)String 和StringBuffer的区别 ------------------------------------------------------------------ 错误!未定义书签。 18)String是否是最基本的数据类型,能否被继承 ----------------------------------------- 错误!未定义书签。 19)String s = new String("xyz");创建了几个String Object? ------------------------------- 错误!未定义书签。 20)数组有没有length()这个方法? String有没有length()这个方法? ---------------- 错误!未定义书签。 21)排序都有哪几种方法?用JAVA实现一个快速排序 ----------------------------------- 错误!未定义书签。 22)swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上--- 错误!未定义书 签。 23)在JAVA中,如何跳出当前的多重嵌套循环? ------------------------------------------ 错误!未定义书签。 24)关于日期和时间的几个问题------------------------------------------------------------------- 错误!未定义书签。 25)一个对象被当作参数传递到一个方法,是值传递还是引用传递----------------- 错误!未定义书签。 26)什么时候用assert?------------------------------------------------------------------------------ 错误!未定义书签。 27)GC是什么? 为什么要有GC? ---------------------------------------------------------------- 错误!未定义书签。 28)垃圾回收的优点和原理 ------------------------------------------------------------------------- 错误!未定义书签。 29)垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?错误!未定义书 签。 30)java中会存在内存泄漏吗,请简单描述 -------------------------------------------------- 错误!未定义书签。 31)java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,他们分别是哪些 类?错误!未定义书签。 32)文件和目录(I/O)操作 ------------------------------------------------------------------------ 错误!未定义书签。 33)什么是java序列化?如何实现java序列化?------------------------------------------- 错误!未定义书签。

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

JAVA框架面试题汇总

1.SpringMVC Framework的理解: 1、它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。并且和Spring提供的其他基础结构紧密集成 2、不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的) 3、可以任意使用各种视图技术,而不仅仅局限于JSP 4、支持各种请求资源的映射策略 5、它应是易于扩展的 2.简单的谈一下SpringMVC的工作流程? 流程? 1、用户发送请求至前端控制器DispatcherServlet? 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。? 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。? 4、DispatcherServlet调用HandlerAdapter处理器适配器? 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。? 6、Controller执行完成返回ModelAndView? 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet? 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器? 9、ViewReslover解析后返回具体View? 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。? 11、DispatcherServlet响应用户 3.如何解决POST请求中文乱码问题,GET的又如何处理呢? 在web.xml中加入: . .CharacterEncodingFilter . .???? .????????encoding .?????? utf-8

java就业数据库面试题

1.sql2000和sql2005有什么区别? a、最直观的一点就是两者的界面有很明显的不同。sql2005的操作风格更接近于vs2005。 b、sql2005比sql2000存储的数据量要大很多,sql2005支持数据库逻辑分区; c、sql2000与sql20005 jdbc连接不同: sql2000 jdbc连接:url地址:jdbc:microsoft:sqlserver://:<1433>; driver :com.microsoft.jdbc.sqlserver.SQLServerDriver; sql2005 jdbc连接:url地址:jdbc:sqlserver://:[;databaseName=]; driver :com.microsoft.sqlserver.jdbc.SQLServerDriver; d、安全性能的提高:sql Server 2005包括了一些在安全性能上的改进,例如将用户和对象分开、数据 库加密、设置安全默认值、增强密码政策、缜密的许可控制、以及一个增强型的安全模式。 e、sql2005还提供了一些新的特性,比如文件流支持(向第三代数据库迈出了可喜的一步)、T-Sql的改 进(处理错误、递归查询功能、关系运算符PIVOT, APPLY, ROW_NUMBER和其他数据列排行功能,等等)、数据库镜像、透明的客户端重定向、新的基于架构的安全模型、内建的Http服务器等...。 1.存储过程的作用? 存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是SQL 语句和可选控制流语句的预编译集合, 以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。 存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。 可以出于任何使用SQL 语句的目的来使用存储过程,它具有以下优点: 可以在单个存储过程中执行一系列SQL 语句。 可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。 存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL 语句快。 2.sqlserver和oracle数据库的性能优化 3.1选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 在缺省情况下,ORACLE采用CHOOSE 优化器, 为了避免那些不必要的全表扫描(full table scan) , 你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器. 访问Table的方式 3.2ORACLE 采用两种访问表中记录的方式: a. 全表扫描 全表扫描就是顺序地访问表中每条记录. ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描. b. 通过ROWID访问表 你可以采用基于ROWID的访问方式情况,提高访问表的效率,RowId包含了表中记录的物理位置信息.ORACLE采用索引(INDEX)实现了 数据和存放数据的物理位置(RowId)之间的联系。通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到

java面试题大全

JAVA面试题最全集 一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。 3.数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何获取某个日期是当月的最后一天 如何格式化日期 5.数组和集合 6.文件和目录(I/O)操作 如何列出某个目录下的所有文件 如何列出某个目录下的所有子目录 判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet技术 1.描述JSP和Servlet的区别、共同点、各自应用的范围 2.在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(< > & “”) 3.在JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。 4.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍JSP的标记库 9.Jsp和Servlet中的请求转发分别如何实现。 三、J2EE相关知识 1.介绍J2EE、J2SE、J2SE的区别。 2.J2EE是一种技术还是一种平台,他提供了那些技术。 3.什么是Application Server,它有什么功能和优点。

Java经典面试题大全_带答案

Java经典面试题带答案一、单项选择题 1.Java是从()语言改进重新设计。 A.Ada B.C++ C.Pasacal D.BASIC 答案:B 2.下列语句哪一个正确() A.Java程序经编译后会产生machine code B.Java程序经编译后会产生byte code(字节码) C.Java程序经编译后会产生DLL D.以上都不正确 答案:B 3.下列说法正确的有() A.class中的constructor不可省略 B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行(构造器) D.一个class只能定义一个constructor 答案:C 4.提供Java存取数据库能力的包是() A.Java.sql /sql/数据库还有Oracle 也是一种数据库 B.java.awt C.https://www.doczj.com/doc/e614789929.html,ng D.java.swing 答案:A 5.下列运算符合法的是() A.&& B.<> C.if D.:= 答案:A 6.执行如下程序代码 a=0;c=0; do{ --c; a=a-1; }while(a>0); 后,C的值是() A.0 B.1 C.-1 D.死循环

答案:C 7.下列哪一种叙述是正确的() A.abstract修饰符可修饰字段、方法和类 B.抽象方法的body部分必须用一对大括号{}包住 C.声明抽象方法,大括号可有可无 D.声明抽象方法不可写出大括号 答案:D 8.下列语句正确的是() A.形式参数可被视为localvariable B.形式参数可被字段修饰符修饰 C.形式参数为方法被调用时,真正被传递的参数 D.形式参数不可以是对象 答案:A 9.下列哪种说法是正确的() A.实例方法可直接调用超类的实例方法 B.实例方法可直接调用超类的类方法 C.实例方法可直接调用其他类的实例方法 D.实例方法可直接调用本类的类方法 答案:D 二、多项选择题 1.Java程序的种类有() A.类(Class) B.Applet C.Application D.Servlet 2.下列说法正确的有() A.环境变量可在编译sourcecode时指定 B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件 D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD 3.下列标识符不合法的有() A.new B.$Usdollars C.1234 D.car.taxi 答案:ACD 4.下列说法错误的有() A.数组是一种对象 B.数组属于一种原生类 C.intnumber=[]={31,23,33,43,35,63} D.数组的大小可以任意改变 答案:BCD 5.不能用来修饰interface的有()

Java面试题大全(答案版)

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致 2、&和&&的区别。 &和&&都可以用作逻辑与; &&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式; &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。 3、Java有没有goto? java中的保留字,现在没有在java中使用。 4、在JAVA中,如何跳出当前的多重嵌套循环? break+变量控制与return 5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上? Switch可以作用在int上,而byte可以隐式转换为int 所以能作用在byte上 不能作用在long上,也不能作用在String上 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。s1+=1不会报,因为JVM会对它特殊处理(自动强转) 7、char型变量中能不能存贮一个中文汉字?为什么? 可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所以是可以保存的 8、编程题: 用最有效率的方法算出2乘以8等於几? 2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方,左移运算,CPU直接支持,所以是最有效率的 9、请设计一个一百亿的计算器 思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 引用变量不能变 11、"=="和equals方法究竟有什么区别? ==和equals方法都可以用来比较两个对象是否是同一个对象。 ==还可以比较两个变量的值是否相等。 equals是Object类中的方法,可以由子类重写此方法,实现内容相等。 12、静态变量和实例变量的区别? 语法上不同: 静态变量前要加static关键字,实例变量不需要 程序运行时不同: 实例变量是属于某个对象的,只有创建了对象,才会为这个对象的实例变量分配空间。静态变量是属于类的,当程序加载了这个类的字节码文件,就会为静态变量分配空间,并且所有对象共享这个变量 13、是否可以从一个static方法内部发出对非static方法的调用? 不可以,非static方法需要与对象关联在一起的,而static方法调用时不需要对象,可以直接调用,也就是说调用static方法时,可能还没有创建任何实例 14、Integer与int的区别 int是java中的8种基本数据类型之一,默认值是0,Integer是int的包装类,默认值是null,即Integer可以表示未赋值和赋值为0 15、(麦死)Math.round(乱的)(11.5)等於多少? Math.round(-11.5)等於多少?

java数据库笔试题答案在最后)

Java、数据库测试题 (笔试) 测试时间:90分钟姓名:_______ 总分:_______ 一、不定项选择题(40题,每题2分,总分80分) 1) 当试图编译并运行下面程序时会出现什么结果()(单选) class A{ public int getNumber(int A){ return a+1; } } class B extends A{ public int getNumber(int a, char C){ return a+2; } public static void main(String[] args){ B b=new B(); } } A) 编译错误 B) 运行错误 C) 1 D) 2

2) 当编译并运行下面程序时会出现什么结果( )(单选) public class MyAr{ public static void main(String argv[]){ int[] i = new int[5]; } } A) 编译错误 B) 运行错误 C) 输出0 D) 输出“null” 3) final、finally、finalize三个关键字的区别是()(多选) A) final是修饰符(关键字)可以修饰类、方法、变量 B) finally在异常处理的时候使用,提供finally块来执行任何清除操作 C) finalize是方法名,在垃圾收入集器将对象从内存中清除出去之前做 必要的清理工作 D) finally和finalize一样都是用异常处理的方法 4) 当编译并运行下面程序时会发生什么结果()(单选) public class Bground extends Thread{ public static void main(String argv[]){ Bground b = new Bground(); b.run(); } public void start(){ for (int i = 0; i <10; i++){ } } } A) 编译错误,指明run方法没有定义 B) 运行错误,指明run方法没有定义 C) 编译通过并输出0到9 D) 编译通过但无输出 5) 在Java中,如果父类中的某些方法不包含任何逻辑,并且需要由子类重写, 应该使用()关键字来声明父类的这些方法。(单选) A) Final B) Static C) Abstract D) Void 6) 当编译并运行下面程序时会发生什么结果:(单选) public class Hope{

java面试题大全(整理版)

2018年(整理版) 1、面向对象的特征有哪些方面? - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承的类叫父类(超类、基类)、得到继承的类叫子类(派生类)。 - 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。 - 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中的方法);2). 对象造型(用父类型引用引用子类型对象,

这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为) 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。 4、float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。

2018年java面试题大全(整理版)

2018年java面试题大全(整理版)

2018年java面试题大全(整理版) 1、面向对象的特征有哪些方面? - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承的类叫父类(超类、基类)、得到继承的类叫子类(派生类)。 - 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。可以说,封装就是隐藏一切可隐藏的东西,

2、访问修饰符public,private,protected,以及不写(默认)时的区别? 修饰符当前类同包子类其他包 public √√√√protected √√√× default √√×× private √××× 3、String 是最基本的数据类型吗? 答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。

4、float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。 5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

相关主题
文本预览
相关文档 最新文档