javase面试问题

1.jre与jdk的区别                                         

 jre(java runtime environment),运行时环境,包含java虚拟机

 jdk(java development kit),包含jre同时还包括 java 源码的编译器 javac

 

2.System.out.println(12345+5432l)结果为17777为什么?                       

5432之后跟的是“L”

 

3. byte b1 =3,b2=4;  byte b3 = b2 +b1;运行结果

 A.报错,b1和b2会被提升为int型

 B.b1,b2是变量,java编译器只有常量优化机制

 

4.float和long的取值范围谁大                                

   float用IE754编码,有8位为指数位

 

5.short s=1; s=s+1;   报错,int

 short s=1;s+=1;  底层自动转化为s=(short)(s+1)   

       

6. java中到底是传值还是传址 

  a.既是传值又是传址,基本数据类型传值,引用数据类型传址

  b.java中只有传值,因为地址值也是值(面试这么说,支持者是高斯林java之父)

 

7.一个抽象类如果没有抽象方法,可行吗?

  可以,这么做可以不让其他类创建本类对象,交给子类完成

 

8.abstract不能和哪些关键字共存?                             

  abstract和static,被static修饰可以类名.调用,但类名.抽象方法是没有意义的,被abstract修饰没有方法体

  abstract和final,被final修饰强制子类重写,被abstract修饰不让子类重写

  abstract和private,被private修饰不让子类访问,被abstract修饰是为了让子类看到强制重写

  

 

9.interface Inter{

  void show();

  }

  class outer{

    //补齐代码,要求能够在主方法中运行outer.method.show();

  }

 

答:根据能够调用.show得知返回的对象是inter类型

public static Inter method(){

  return new Inter(){

    public void show(){

      syso("hi");

    }

  };

}

 

10.

  -128~127是byte的取值范围,如果在这个取值范围内,自动装箱就不会创建新对象,而是从常量池中获取,如果超过了byte取值范围就会新创对象

 

11.Hsahmap和HashTable的区别

  相同:底层都是哈希算法,都是双列集合

  区别:1.Hsahmap线程不安全,效率高,JDK1.2

          HashTable线程安全,效率低,JDK1.0

     2.HsahMap可以存储null键和null值,table不可以

 

12.throw和throws的区别

  a.throws用在方法声明后,跟的是类名

     可以跟多个异常类名,可用逗号隔开

     表示抛出异常,由该方法的调用处理

  

   b.throw

  用在方法体内,跟的是异常对象名

  只能抛出一个异常对象名

  表示抛出异常,由方法体内的语句处理

 

13.final,finally,finalize的区别

  final,修饰类不可继承,方法不可重写,变量只能赋值一次

  finally是try语句中的一个语句体,不能单独使用,用来释放资源

  finalize是一个方法,当垃圾回收器不存在该对象的引用时,用对象的垃圾回收器调用此方法

 

线程间通信的注意事项

14.在同步代码块中,用哪个对象锁,就用哪个对象调用wait方法

 

15.为什么wait和notify方法定义在object类中?

  因为锁对象可以是任意对象,object是所有类的基类,所以要定义在此类中

 

16.sleep和wait方法的区别

 A sleep必须传入参数,参数时间到了自动醒来

    wait传参就是参数的时间结束后等待,不传则直接等待

 B  sleep不释放锁,wait释放锁

 

17.编译时异常与运行时异常有什么区别?
  编译时异常,又称未雨绸缪异常,受程序运行的上下文环境影响

  运行时异常,程序代码错误‘

 

18.什么是java序列化,如何实现序列化

  把Java对象转换为字节序列的过程,序列化是一种处理对象流化的机制,解决对象的读写问题。

  实现serializable接口,使用fileoutputstream创建objectoutputstream,使用wiriteobject写出

 

19.java中字符流和字节流的区别?

  字符流,继承于inputstream,outputstream

  字符流,继承于inputstreamreader

 

20.异常指java运行程序时发生错误,根类为java.lang.throwable,子类分为error(无救)严重错误 和 exception(有救)程序设计有问题

  应用在程序运行利用throw抛出异常,避开一些特殊的错误,也可以自定义异常

 

21.什么是多态?

  同一个接口,使用不同实例而执行不同操作

  同一个行为具有不同表现形式的能力

 

22.同步代码块和同步方法的区别

  同步方法在方法前加关键字synchronized,同步代码块则在方法内部使用synchronized

  同步方法如果是 static 方法,等同于同步方法块加锁在该 Class 对象上

 

23.java是解释型的语言,java需要编译生成.class字节码文件,但字节码文件需要被jvm解释才能运行

 

24.synchronizrd的作用是什么?

  表示只有一个线程可以获取作用对象的锁,执行代码,阻塞其他线程

 

25.可重入锁是指同一个线程在外层方法获取锁的时候,进入内层方法会自动获取锁

 

26.列举一些常见的运行时异常

  NullPointerException;   ClassCastException; IndexOutOfBoundsException ; 

 

27.XML的使用场景

  信息配置;数据交换

 

24.事物的四大特性?

  ACID,原子性(automatic),一致性(consistency),隔离性(isolation),持久性(duration)

 

25.

                                            

                    

posted @ 2021-04-26 19:01  pbw123  阅读(104)  评论(0)    收藏  举报