金典java面试题108道之23道

1,short s1=1;s1=s1+1;有什么错???

答:s1为short型,1为int型,s1+1=2先为int型,S1为short
型,所以需要通过强制转化—s1=(short)(s1+1); 举例:short s1=1;
s1+=1;(正确,因为可以自动转化)

2,请简述equals与==的区别

在String中,equals对比的是内容,==是比较地址

3,sleep与wait的区别

(1)sleep方法可以设置线程阻塞的时间,而wait方法必须要notily方法来唤醒 (2)sleep方法属于Thread类,而wait属于Object类
(3)sleep方法不会释放锁的资源,而wait方法会释放锁的资源 面试官:每个引用对象都有wait方法吗?
答:都有,因为每个类都会继承Object基类

4,String,Stringbuffer,Stringbuidder的区别?

(1)String是JAVA的基础类,他可以定义少量的字符串
(2)StringBuffer是对String的扩充,他可以拼接大量字符串,但是他的效率比较低,因为他是线程安全的
(3)StringBuidder是对StringBuffer的拓展,他提高了效率,但是他是线程不安全的

5,ArrayList和Vector的区别?

(1)ArrayList底层是用数组实现的,所以查找快,增删慢,ArrayList是线程不安全的
(2)Vector由于是线程安全的,所以他的效率要比ArrayList底的多

6,Super关键字的使用?

(1)Super关键字实现的前提必须要有继承
(2)Super关键字可以调用父类的方法,属性,通过Super.方法名,Super.属性 (3)Super关键字必须位于类的第一行

7,创建线程有哪几种方法??

常见的创建线程的方法 (1)继承Thread类,调用start()方法 (2)实现Runnable接口,重写run方法,调用start方法

8,Synchronized可以加在什么地方?

(1)Synchronized可以加在方法上,可以加在类上。Synchronized是一把重量级锁

9,什么是线程同步?

(1)一个线程重开始到结束都不可以被打断,直到这个线程释放锁,共享打印机就是一个线程同步的实例,

10,Query接口的List和iterate方法的区别? 什么是Query?

        Query是查询的意思,在数据库中查询一个文件或记录,
        个人理解:List和Iterate都可以访问数据库,只不过iterator如果要查找的数据缓存中有就直接从缓存中拿,而不去在查找数据库了。

11,数组中有没有length()方法,String有没有这个方法?

(1)数组中没有这个方法,使用length属性,返回的结果应该是数组的长度

int[] arr={1,2,3,4,5}; int length1=arr.length;//求数组的长度
(2)String里面有这个方法,返回的是该字符串的长度

String str="Hello"; int length2=str.length(); //求字符串的长度

12,try{}里面有一个return语句,finally里面也有一个return语句,finally里面的语句会不会被执行,在return前还是return后?

我们都知道,不管发什么,finally里面的语句一定会被执行,所以12题的答案是会被执行 废话不多说,看代码

   int x=1;
   try{
       return ++x
   }finallu{
      return ++x;
  }

结果为 x=3; 原因很简单,因为finally语句块的代码始终要执行,所以在try里面碰到return的话实现不返还的等执行完finally一后在返回try里面的return

- 13,JAVA中,运行任意一个相同的循环代码,是否每次执行完的时间都相同,为什么?

不相同,随着代码的运行,会在jvm中产生大量的垃圾,随着垃圾越来越多,效率也会越来越慢

14,说出ArrayList,LinkList,Vector的存储机制和特性

(1)ArryaList:底层是用数组实现的,查找快,增删慢,线程不安全,适用于单线程
(2)LinkList底层用链表实现的,适合插入删除,不适合查找,线程不安全,适用于单线程
(3)Vector:底层用数组实现的,查找快,增删慢,线程安全,适合多线程

15,this关键字?

(1)static修饰的方法不能用this关键字
(2)this关键字表示当前对象,通过this关键字可以调用本类的方法属性
(3)this关键字可以区别变量名

16,break和continue的区别??

(1)break和continue都是用来控制循环体的
(2)break是直接结束他所在的循环,而continue是结束他这一次循环,继续下一次的循环
(3)break可以在switch中使用,而continue只能在循环中使用

17,char类型能否存储汉字??

(1)在C语言中不可以存储,因为汉字占俩个字节,而C语言的char只有一个字节
但是他可以在java中存储因为java 的char占俩个字节
(2)拓展:unicode编码是java默认的编码格式,占16位,俩个字节

18,静态变量与实例变量的区别??

(1)在语义上:静态变量用static所修饰、被static所修饰的变量只被初始化一次
(2)在运行上:静态变量属于类,实例变量属于对象
(3)被ststic所修饰的方法和类都是先被加载。

19,是否可以从一个static方法中调用一个非静态的方法??

(1)不可以,因为被static修饰的方法在类初始化的时候就被加载,而非静态的方法可能在这个时候还没有完成初始化

20,int与integer的区别

(1)int是java 的基本数据类型,interger是java的类
(2)拓展:

integer a = new integer(127);
integer b = new integer(127);
integer c = new integer(128);
integer d = new integer(128);

a==b?? true;

c==d?? false;
原因:Integer在-127-128之间,返回的是一个是已存在的对象,如果不在这个范围,返回的是新new出来的对象

21,简述JDK1.5的新特性??

(1)for-each循环
(2)自动装箱拆箱
(3)静态导入
(4)范型

22,什么是单利模式,为什么要用单利模式?

(1)单例模式是一种设计模式,他提供了一种创建对象的最佳方式,
注意:单例模式只有一个实例
单例类必须提供一个方法可以访问
拓展:单例类的构造函数是被私有的

23,重载和重写的区别?

(1)重载是在一个类中,参数列表不同,参数个数不同,参数类型不同
(2)重写必须要有继承的前提,重写方法抛出的异常不可以大于父类抛出的异常
拓展:在重载中方法的返回类型不同是否构成重载????
(1)不能构成重载,重载必须要用参数来区分,传入不同参数,可以实现重载。

  • 94
    点赞
  • 358
    收藏
    觉得还不错? 一键收藏
  • 39
    评论
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值