面试题(JAVA)(二)

简答题
1、请简述java反射机制
解析:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;
生成动态代理。

2、JDK和JRE的区别
解析:
JDK是Java开发工具包,JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。
JDK=JRE+JVM+其它 运行Java程序一般都要求用户的电脑安装JRE环境(Java Runtime Environment);没有jre,java程序无法运行;而没有java程序,jre就没有用武之地。

3、java支持的基本数据类型有哪些?什么是自动拆装箱?
解析:
四个整数型:byte short int long
两个浮点型:float double
一个字符类型:char
一个布尔型:boolean

Integer interger=10;//就是自动装箱,即执行了:Integer integer=Integer.valueOf(10);

Integer interger=10;//装箱
int i=interger;//就是自动拆箱,即执行了:int i=i.intValue();

4、创建线程有哪几种方式?你喜欢哪一种?为什么?
解析:
extends Thread
implements Runnable
implements Callable

喜欢实现Runnable接口,还可以继承其他类,可以多个线程共享一个目标对象,即多个线程来处理同一份资源。

5、Comparable和Comparator接口是干什么的?列出它们的区别
解析:
Comparable接口只包含一个compareTo()方法,此方法可以给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。

Comparator接口包含compare()和equals()两个方法
compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。

6、finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?
解析:
当GC内存紧张时,而去回收某些对象时会调用finalize()方法;不紧张时就不会调用。
Finalizetion主要用来释放被对象占用的资源(不是指内存,而是指其他资源,比如文件(File Handle)、端口(ports)、数据库连接(DB Connection)等)。

4.编程题
4.请用ReentranLock和Condition实现一个简单的阻塞队列,原型如下:
class BlockingQueue{
private int maxLength=20;
public Object take(){}
public void offer(Object o){}
}
解析:
并发编程:ReentranLock和Condition
1、Lock是为了更高效的同步而应运而生的,替代synchronized关键字。
2、Condition是为了更灵活的等待唤醒机制,替代了Object的wait()、notify()、notifyAll()方法。

2.给出下列代码,如何使成员变量m被方法fun()直接访问? (C)
class Test{
private int m;
public static void fun(){
//some other code…
}
}
A.将private int m改为protected int m
B.将private int m改为public int m
C.将private int m改为static m
D.将private int m改为int m
解析:
在静态方法中不能直接访问非静态的成员,如果要在fun()中直接访问变量m,应将变量m用static修饰。

3.已知如下代码:
1: class Example{
2: String str;
3: public Example(){
4: str= “example”;
5: }
6: public Example(String s){
7: str=s;
8: }
9:} }
10: class Demo extends Example{
11: }
12: public class Test{
13:public void f () {
14:Example ex = new Example(“Good”);
15:Demo d = new Demo(“Good”);
16:} }
哪句语句会导致错误?(E)
A、 line 3
B、line 6
C、line 10
D、line 14
E、line 15

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马超的博客

谢谢大佬的赞赏 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值