欢迎您的访问
专注架构,Java,数据结构算法,Python技术分享

Java基础面试题(四)

1. 下面float的赋值语句错误的是?()

A:float f=3.4;
B:float f=3.4F;
C:float f=1.0;
D:float f=1;
答:AC

解析
3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;
float a = 1;这里的1是整形,当赋值给一个float时,存在一个隐式转换,不损失精度。
float a = 1f;
1f就是float类型的。
如果你这样定义
float f = 1.0;
肯定会出错。 因为1.0默认是double类型的。double范围比float大。为了不损失精度,不会自动转换。这是必须这样写
float f = 1.0f;

2.面向对象的特征有哪些方面?()

A:抽象;
B:继承;
C:多态;
D:封装;

答:面向对象的特征主要有以下几个方面:

1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

2)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。

3)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。

4)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2. 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。

3.java类可以作为?()

A:类型定义机制;
B:数据封装机制;
C:类型定义机制和数据封装机制
D:上述都不对;

答:C
解析:类即可以作为类型定义机制也可以作为数据封装机制。

4.以下哪个约束符可用于定义成员常量?()

A、 static
B、final
C、abstract
D、No modifier can be used
答案 B
解析:static 静态成员变量(在定义这个变量的类的实例中,这个变量是唯一的,即多个实例间这个变量为共享的)
final 成员常量(必须在定义时或在构造方法中赋初值)
final static 静态成员常量,必须在定义这个常量时给定其初始化值

5. 在使用interface声明一个接口时,只可以使用()修饰符修饰该接口

A private
B protected
C private protected
D public
答案:D
解析:接口必须要具体类实现才有意义,所以必须是public。

6. java语言使用的字符码集是()

A ASCII
B BCD
C DCB
D Unicode
答案:D
解析:Java语言使用的是Unicode字符集,ASCII是国际上使用最广泛的字符编码

7. 下列关于继承的哪项叙述是正确的?

A 在java中允许多继承
B 在java中一个类只能实现一个接口
C 在java中一个类不能同时继承一个类和实现一个接口
D java的单一继承使代码更可靠
答案:D
解析:
A:Java只能单继承。所以A选项错误
B:Java中一个类可以实现多个接口,所以B错误
C:Java中一个类只能实现继承一个父类但是可以同时实现多个接口,所以C错误
D:Java的单一继承使代码更可靠,是正确的。

(不定项选择题)8. 不能用来修饰interface的有( )

A private
B public
C protected
D static
答案:ACD
解析:
A,C,D都不能用来修饰interface。
就访问来说,可以用public,默认修饰符,而不能用private,因为接口本身就是为了让别的类或接口使用的,用private就没有了意义。
protected也是不可以的,ptotected的访问权限是包内对象以及包外继承该类的包外对象,其实和public意义也就一样了,也就没必要选择protected。
static是用来修饰变量或者方法的,而不修饰类。(在接口中 static只能修饰变量不能修饰方法)
(final同样不能修饰接口)。

9.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。

10.在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?

lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。

赞(0) 打赏
版权归原创作者所有,任何形式转载请联系作者;码农code之路 » Java基础面试题(四)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏