java 面试题总结

1. String 类

  1.1 常见面试题分析:请解释 String 类中 “==” 和 equals() 方法的区别。

   (1)"==" 是 Java 提供的关系运算符,主要功能是进行数值相等判断的,如果用在了 String 对象上表示是内存地址数值的比较。
   (2)equals() 方法是由 String 提供的一个方法,此方法专门负责进行字符串内容的比较。

  1.2 请解释 String 类的两种对象实例化方式的区别。

   (1) 直接赋值 (String str = “字符串” ; ): 之后开辟一块堆内存空间,并且会自动保存在对象池中以供下次使用;
   (2)构造方法( String str = new String(“字符串”); ): 会开辟两块堆内存空间,其中有一块空间将成为垃圾,并且不会自动入池,但是用户可以使用 intern() 方法手工入池。

2. StringBuffer 类

  2.1 常见面试题分析:请解释 String 、StringBuffer、StringBuilder的区别。

   (1) String 类的内容一旦声明则不可改变,而 StringBuffer、StringBuilder 声明的内容可改变。
   (2) StringBuffer 类中提供的方法都是同步方法,全部使用 synchronized 进行同步定义,属于安全的线程操作,而 StringBuilder 类没有,提供的方法都属于异步方法,属于非线程安全的操作。

3. 多线程

  3.1 请解释多线程的两种实现方式及其区别?分别编写程序以验证两种实现方式。

(1)多线程的两种实现方式都需要一个线程的主类,而这个类可以实现 Runnable 接口或者继承 Thread 类,不管使用何种方式都必须在子类中 覆写 run() 方法,此方法为线程的主方法。
(2)Thread 类是 Runnable 接口的子类,而使用 Runnable 可以避免单继承局限性,以及更方便地实现数据共享。
(3)程序实现结构:
可参考我上一篇博客:Java 基础学习之多线程一 (Thread、Runnable)

Runnable 接口Thread 类
class MyThread implements Runnable{ public void run() { // 线程操作方法 } }class MyThread extends Thread { public void run() { // 线程操作方法 } }
MyThread mt = new MyThread(); new Thread(mt).start();Mythread mt = new Mythread(); mt.start();
  3.2请解释多个线程访问同一资源时需考虑哪些情况?有可能带来哪些问题?
  1. 多个线程访问同一资源时,考虑数据的安全性问题,一定要使用同步操作。同步有以下两种操作模式:
    (1) 同步代码块:synchronized (锁定对象){代码}
    (2) 同步方法:public synchronized 返回值类型 方法名称(){代码}
  2. 过多的同步操作有可能会带来死锁问题,导致程序进入停滞状态。
  3.3 请解释 sleep() 和 wait() 的区别。
  1. sleep() 是 Thread 类定义的 static 方法,表示线程休眠,将执行机会给其他线程,但是监控状态依然保持,休眠时间到即会自动恢复。
  2. wait() 是 Object 类定义的方法,表示线程等待,一直到执行了 notify() 或 notifyAll() 后才结束等待。

4. 异常

  4.1 常见面试题分析:请解释一下 RuntimeException 异常类和 Exception 异常类的区别?请列举出几个常见的RuntimeException。
  1. RuntimeException 是 Exception 的子类。
  2. Exception 定义了必须处理的异常,而 RuntimeException 定义的异常可以选择性的处理。
  3. 常见的RuntimeException: NumberFormatException、ClassCastException、NullPointException、ArithmeticException、ArrayIndexOutBoundsException。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值