您的当前位置:首页正文

Java程序员面试题

2020-06-05 来源:钮旅网


Java程序员面试题

1、面向对象的特征有哪些方面?

答:面向对象的特征主要有以下几个方面:1)抽象2)继承3)封装4)多态性

2、作用域public,private,protected,以及不写时的区别

答:区别如下:

作用域 当前类 同包 子类 其他

public √ √ √ √

protected √ √ √ ×

default √ √ × ×

private √ × × ×

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(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;。

5、int 和Integer 有什么区别?

答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的封装类就是Integer,从JDK 1.5开始引入了自动封箱/解封箱机制,使得二者可以相互转换。

Java 为每个原始类型提供了封装类:

原始类型: boolean,char,byte,short,int,long,float,double

封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

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

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

7、在Java 中,如何跳出当前的多重嵌套循环?

答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。

8、是否可以继承String 类?

答:String 类是final类,不可以被继承。

9、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对象的引用是永远不会改变的。C++和C#中可以通过传引用或传输出参数来改变传入的参数的值

10、抽象类(abstract class)和接口(interface)有什么异同?

答:

抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。

一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。

接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,

而接口中不能定义构造器而且其中的方法全部都是抽象方法。

抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。

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

答:静态变量也称为类变量,属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。

12、String s=new String(“xyz”);创建了几个字符串对象?

答:两个对象,一个是静态存储区的\"xyx\一个是用new创建在堆上的对象

13、接口是否可继承(extends)接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)?

答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承具体类,但前提是具体类必须有明确的构造函数

14、Java 中的final关键字有哪些用法?

答:(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)

15、Error 和Exception 有什么区别?

答:Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。

选择题

1、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( D )方法来完成一些画图操作。

A. start() B. stop() C. init()D. paint()

2、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点? ( B )

A)安全性 B)多线程 C)跨平台 D)可移植

3、下列哪个类声明是正确的?( D )

A)abstract final class HI{··} B)abstract private move(){··}C)protected private number; D)public abstract class Car{·

4、在Java语言中,下列哪些语句关于内存回收的说明是正确的? ( B )

A.程序员必须创建一个线程来释放内存;

B.内存回收程序负责释放无用内存

C.内存回收程序允许程序员直接释放内存

D.内存回收程序可以在指定的时间释放内存对象

5、字符串是Java已定义的类型,关于它的构造函数,下面说法不正确的是:A.String(char[] value, int offset, int count)

B.String(int[] codePoints,int offset, int count)

C.String(String original)

D.String(StringBuffer buffer)

6、下列说法中正确的是: C

A.导入包会影响程序的性能 B.包存储在类库中

C.包是类的容器 D.上述说法都不对

7、哪个关键字可以对对象加互斥锁? B

B

A.transient

B.synchronized

C.serialize

D.static

8、下列叙述中,错误的是: D

A、父类不能替代子类

B、子类能够替代父类

C、子类继承父类

D、父类包含子类

9、下列关于Java多线程并发控制机制的叙述中,错误的是:BC

A、Java中对共享数据操作的并发控制是采用加锁技术

B、线程之间的交互,提倡采用suspend()/resume()方法

C、共享数据的访问权限都必须定义为private

D、Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生

10、下列哪一个方法不是applet程序的组成部分:D

A、init() B、start()

C、stop() D、new()

11、下列Applet类的方法中,在Applet的整个生命周期里至多只执行一次的是:A

A、init() B、start()

C、stop() D、paint()

12、启动一个线程所调用的方法是:C

A、run() B、init()

C、start() D、new()

13、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。

A. .java B. .class

C. .html D. .exe

二、填空题(每空格1分,共20分)

1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。

2、如果一个Java Applet源程序文件只定义有一个类,该类的类名MyApplet,则类MyApplet必须是Applet类的子类并且存储该源程序文件的文件名为MyApplet 。

3、若x=5,y=10,则x=y的逻辑值分别为true和false。

4、抽象(abstract)方法方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法方法是不能被当前类的子类重新定义的方法。

5、在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系 。

因篇幅问题不能全部显示,请点此查看更多更全内容