java面试精选!!!(干货总结,有时间会继续更新更多内容)

(最近看了一本讲java面试有关的书,分享给大家)

  1. 环境变量CLASSPATH的作用
    答: 该环境变量保存的是一些目录和jar文件的地址,这些路径是为java程序在编译和运行的时候搜索类而用的。
    .;c:jar\logj4.jar;d:\work\java
    以上的CLASSPATH环境变量 指定了3个搜索类路径:当前目录、logj4.jar文件的路径和d:\work\java文件夹显得所有的类
  2. java 与c++程序在编译和运行上有什么区别
    答:c++程序编译后,生成的是特定机器可直接运行的文件;
    java程序编译后,生成的是字节码文件,需要在jvm中运行,而jvm是有多个平台版本的;
    所以java具有跨平台性,c++没有。
  3. 什么是JVM及其工作原理
    答:JVM java虚拟机(用软件模拟出来的计算机)用于执行java程序。java虚拟机有自己想象中的硬件,比如处理器、堆栈、寄存器等,还具有相应的指令系统,他运行java程序就好像一台计算机运行C或C++程序一样。
  4. jvm的垃圾回收机制
    答:java 的堆内存数据的释放功能是由垃圾回收期自动进行的。
    java根父类java.lang.Object中有个finalize方法,在销毁对象之前会调用此方法(覆写此方法,执行被销毁前的功能,例如关闭数据库连接)
    java.lang.System 和java.lang.Runtime都有gc()方法。他们都可以显示调用,以请求开始垃圾回收线程,但垃圾回收线程是否立即开始是有JVM的算法决定的
    System,gc();
    Runtime.getRuntime().gc();
  5. 变量及其作用范围
    答:静态变量:static修饰的变量,类的生命周期决定
    成员变量:对象的生命周期决定
    局部变量:作用范围用{ }来界定
  6. java中的装箱和拆箱
    答:装箱和拆箱指的是基本数据类型和包装类型的自动相互转换,这个自动转换的过程是在编译阶段
  7. java中的equal和==的区别是什么
    答:“==”基本类型比较的是值;引用类型比较的是是否指向同一个对象;“equal”比较的是内容,针对java.lang.String,它的equal方法用来比较字符串的字符序列是否完全相等
  8. 类和对象有什么区别
    答:类是一种抽象,而对象是类的实现
  9. java中的继承 和 多态
    答:单继承制,使用extend关键字;多实现,使用implements关键字
  10. java静态成员的特点
    答:静态成员变量,静态方法,静态代码块。它们具有以下特点
    在类加载的时候,进行创建和初始化或执行代码
    它们对于一个类来说是共享的
    类的所有实例都可以访问到它们
  11. 简述java派生类中的构造方法如何为父类传递参数
    答:在java中使用super关键字加()的形式来为父类的构造方法提供参数,通过参数的数目和类型来决定调用哪一个构造方法。
  12. 单例模式
    答:单例模式始终保持一个实例。java中实现单例模式要确保,私有的构造方法,私有的静态的类型引用,提供获取实例的方法。
    单例模式的两种实现方法:

1.懒汉式

	//基本方法
	public class SingletonClass { 
  	  private static SingletonClass instance = null; 
	  public static SingletonClass getInstance() { 
        if(instance == null) { 
          instance = new SingletonClass(); 
        }
	    return instance; 
	  } 
 	  private SingletonClass() { 
  	} 
	
	//改进方法synchronized 和 volatile 是为了确保线程安全,并且代码不会被编译器优化
	public class SingletonClass { 
  	  private volatile static SingletonClass instance = null; 
	  public static SingletonClass getInstance() { 
	    if (instance == null) { 
	      synchronized (SingletonClass.class) { 
	        if(instance == null) { 
	          instance = new SingletonClass(); 
	        } 
	      } 
	    } 
	    return instance; 
	  } 
 	  private SingletonClass() { 
  	} 
  

2.饿汉式

	private  static XXXObject obj = new XXXObject();
	public static XXXObject getInstance(){
		return obj;
	}

总结:

模式优点缺点
懒汉式用到才创建线程不安全
恶汉式实现简单类加载就会创建,浪费资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值