java面试题Word文档下载推荐.docx
- 文档编号:7732623
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:30
- 大小:75.69KB
java面试题Word文档下载推荐.docx
《java面试题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java面试题Word文档下载推荐.docx(30页珍藏版)》请在冰点文库上搜索。
被声明为final的方法也同样只能使用,不能重载finally?
再异常处理时提供finally块来执行任何清除操作。
如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
finalize方法名。
Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在Object类中定义的,因此所有的类都继承了它。
子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
7.写出线程的几种状态
8.当一个线程进入一个对象的一个synchronized方法后,其他线程是否可进入此对象的其他方法
不可以。
9.Try()里面一个return()语句,finally()里的会执行吗
会执行
10.什么是java序列化,如何实现
Java序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序列化是为了解决在对对象流进行读写操作时所引发的问题.
序列化的实现:
将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:
FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Objectobj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流.
二、选择题
1、哪个语句是正确的()
PublicclassTest{
Staticintarr[]=newint[10];
Publicstaticvoidmain(Stringa[])
{
System.out.println(arr[1]);
}
A.编译时将产生错误
B.编译时正确,运行时将产生错误
C.输出零
D.输出空
2、下面程序运行之后,变量x的值是()
publicstaticvoidswap(inta,intb)
{
intt=a;
a=b;
b=t;
}
publicstaticvoidmain(Stringargs[])
intx=2;
inty=3;
swap(x,y);
A.2B.3C.4D.6
3.若要说明一个抽象类,使用的关键字是:
()
A、staticB、implementsC、extendsD、abstract
4、关于垃圾收集的哪些叙述是正确的(
):
A.程序开发者必须自己创建一个线程进行内存释放的工作
B.垃圾收集允许程序开发者明确指定并立即释放该内存
C.垃圾收集将检查并释放不再使用的内存
D.垃圾收集能够在期望的时间释放被java对象使用的内存
5、下面的哪些赋值语句是不正确的(
A.float f=11.1;
B.double d=5.3E12;
C.double d=3.14159;
D.double d=3.14D;
6、下面关于变量及其范围的陈述哪些是不正确的(
A.实例变量是类的成员变量
B.实例变量用关键字static声明
C.在方法中定义的局部变量在该方法被执行时创建
D.局部变量在使用前必须被初始化
7、下列关于修饰符混用的说法,错误的是(
A.abstract不能与final并列修饰同一个类
B.abstract类中不可以有private的成员
C.abstract方法必须在abstract类中
D.static方法中能处理非static的属性
8、容器Panel和Applet缺省使用的布局编辑策略是(
A、BorderLayout
B、FlowLayout
C、GridLayout
D、CardLayout
9、以下标识符中哪项是不合法的(
A、BigMeaninglessName
B、$int
C、1st
D、$1
10、main方法是Java
Application程序执行的入口点,关于main方法的方法头以下哪项是合法的(
A、
public
static
void
main()
B、
main(String[]
args)
C、
staticint
arg)
D、
main(String
arg[])
11、执行完以下代码int[]
x=new
int[25];
后,以下哪项说明是正确的(
x[24]为0
x[24]未定义
x[25]为0
x[0]为空
12、以下代码段执行后的输出结果为(
int
x=3;
y=10;
System.out.println(y%x);
A、0
B、1
C、2
D、3
13、以下哪个表达式是不合法的(
A、String
x=”Hello”;
y=9;
x+=y;
B、String
if(x==y)
{}
C、String
x=x+y;
D、String
x=null;
y=(x!
=null)&
&
(x.length()>
0)?
x.length:
0
14、编译运行以下程序后,关于输出结果的说明正确的是(
class
Conditional{
args[
]){
x=4;
System.out.println(“value
is
“+((x>
4)?
99.9:
9));
}
输出结果为:
value
99.99
9
9.0
编译错误
15、以下声明合法的是(
default
String
s;
final
native
w()
abstract
double
d;
hyperbolicCosine()
16、关于以下application的说明,正确的是(
1.
StaticStuff
2.{
3.
x=10;
4.
{x+=5;
5.
args[])
6.
{
7.
System.out.println(“x=”+x);
8.
}
9.
{x/=3;
10.
A、4行与9行不能通过编译,因为缺少方法名和返回类型
B、9行不能通过编译,因为只能有一个静态初始化器
C、编译通过,执行结果为:
x=5
D、编译通过,执行结果为:
x=3
17、关于以下程序代码的说明正确的是(
1.class
HasStatic{
2.
private
x=100;
HasStatic
hs1=new
HasStatic(
);
hs1.x++;
hs2=new
hs2.x++;
HasStatic();
10.
HasStatic.x--;
11.
System.out.println(“x=”+x);
12.
13.}
A、5行不能通过编译,因为引用了私有静态变量
B、10行不能通过编译,因为x是私有静态变量
C、程序通过编译,输出结果为:
x=103
D、程序通过编译,输出结果为:
x=102
18、以下选项中循环结构合法的是(
A、while(int
i<
7){
i++;
System.out.println(“iis“+i);
B、int
j=3;
while(j){
System.out.println(“j
is“+j);
C、int
j=0;
for(int
k=0;
j+k!
=10;
j++,k++){
is“+j+“k
is”+k);
D、int
do{
System.out.println(“j
is“+j++);
if(j==3){continue
loop;
}while
(j<
10);
19、执行下列程序段后,b,x,y的值正确的是()
intx=6,y=8;
booleanb;
b=x<
y||++x==--y;
A、true,6,8B、false,7,7C、true,7,7D、false,6,8
20、下面是有关子类调用父类构造函数的描述正确的是()
A、子类定义了自己的构造函数,就不会调用父类的构造函数
B、子类必须通过super关键字调用父类没有参数的构造函数
C、如果子类的构造函数没有通过super调用父类构造函数,那么子类会先调用父类不含参数的构造函数,再调用子类自己的构造函数
D、创建子类对象时,先调用子类自己的构造函数,然后调用父类的构造函数
三、编程题
1、写一个Singleton出来
答:
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式:
定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public
class
Singleton
{
private
Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private
只供内部调用
static
instance
=
new
Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
getInstance()
return
instance;
}
第二种形式:
{
private
null;
public
synchronized
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if
(instance==null)
instance=new
return
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
2、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
写出程序。
以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。
ThreadTest1{
int
j;
void
main(String
args[]){
ThreadTest1
tt=new
ThreadTest1();
Inc
inc=tt.new
Inc();
Dec
dec=tt.new
Dec();
i=0;
i<
2;
i++){
Thread
t=new
Thread(inc);
t.start();
Thread(dec);
inc(){
j++;
System.out.println(Thread.currentThread().getName()+"
-inc:
"
+j);
dec(){
j--;
-dec:
implements
Runnable{
run(){
100;
inc();
dec();
3、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?
如在COLLECTION框架中,实现比较要实现什么样的接口?
答:
用插入法进行排序代码如下
packagetest;
importjava.util.*;
classInsertSort
{
ArrayListal;
publicInsertSort(intnum,intmod)
al=newArrayList(num);
Randomrand=newRandom();
System.out.println("
TheArrayListSortBefore:
);
for(inti=0;
num;
i++)
al.add(newInteger(Math.abs(rand.nextInt())%mod+1));
al["
+i+"
]="
+al.get(i));
publicvoidSortIt()
IntegertempInt;
intMaxSize=1;
for(inti=1;
al.size();
i++)
tempInt=(Integer)al.remove(i);
if(tempInt.intValue()>
=((Integer)al.get(MaxSize-1)).intValue())
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
}else{
for(intj=0;
j<
MaxSize;
j++)
if(((Integer)al.get(j)).intValue()>
=tempInt.intValue())
al.add(j,tempInt);
break;
TheArrayListSortAfter:
for(inti=0;
i++){
publicstaticvoidmain(String[]args)
InsertSortis=newInsertSort(10,100);
is.SortIt();
4、内部类的实现方式?
示例代码如下:
publicclassOuterClass
privateclassInterClass
publicInterClass()
InterClassCreate"
publicOuterClass()
InterClassic=newInterClass();
OuterClassCreate"
OuterClassoc=newOuterClass();
5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
父类:
publicclassFatherClass
publicFatherClass()
FatherClassCreate"
子类:
importtest.FatherClass;
publicclassChildClassextendsFatherClass
publicChi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 试题