面试题
面试题
williamQAQ 发表于10个月前
面试题
  • 发表于 10个月前
  • 阅读 25
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

1.synchronized 和java.util.concurrent.locks.Lock的异同 

    Lock 能实现synchronized的所有功能,synchronized能自动释放锁,Lock需要手动在finally中释放

2.线程的基本状态以及状态之间的关系

   1.新建状态(New)

      new操作符创建一个线程后,调用start()前,处于新建状态

   2.就绪状态(Runnable)

     1>调用线程start()方法,线程位于线程池中,变得可运行,等待cpu的使用权

     2>当前线程sleep()方法结束,其他线程join()结束,等待用户输入完毕,某个线程拿到对象锁,这些线程也将进入可运行状态。

     3>当前线程时间片用完了,调用当前线程的yield()方法,当前线程进入可运行状态。

     4>锁池里的线程拿到对象锁后,进入可运行状态

   3.运行状态(Running)

当线程获得cpu时间后,进入运行状态,执行run()方法

   4.阻塞状态(Blocked)

       1> 线程通过调用sleep方法进入睡眠

       2> 线程试图得到锁,而该锁正被其他线程持有、

       3>线程等待某个触发条件

       4>线程调用一个在I/O上被阻塞的操作

       5>运行在当前线程里的其它线程t2调用join()方法,当前线程进入阻塞状态。

    其他线程可以获得CPU

   5.死亡状态(Dead)

        线程执行完成,或者run()方法因异常退出

3.实现对象clone的接口

      Cloneable接口,

            1>.实现接口 2>.重写Object类的clone()方法

      serializable接口

浅克隆,克隆他自身以及他包含的所有对象的引用地址

深克隆,就是非浅克隆。克隆除自身以外所有的对象,包括自身所包含的所有对象实例

4.事务是什么?

    作为一个逻辑单元执行的一系列操作

    ACID属性

   原子性:原子工作单元,要么全部执行,要么全部补执行

   一致性:事务完成时,数据处于一致性

   隔离性:对数据修改的并发事务是彼此隔离的

   持久性:事务完成后对系统的影响是永久的

5.集合方面面试题

   collection 是最基本的集合接口,代表一组Object,Java sdk 提供的类都是继承List,Set

集合类通过工厂方法生成,、

   List 有序的collection,能精确控制每个元素插入位置,能够使用索引访问List中位置,类似数组,允许相同的元素,

常用类LinkedList ,ArrayList Vector,Stack

LinkedList 允许为空,提供额外的get,remove,insert方法在首部或者尾部,可以被用作stack,queue,deque

ArrayList 实现了可变大小的数组,允许所有元素包括null,ArrayList没有同步

Vector类似ArrayList 但是是同步的

Stack 继承Vector 实现后近先出的堆栈push() pop() peek() empty() search()

Set 一种不包含重复元素的Collection,最多又一个空元素

Map 提供key value的映射,不能包含相同的key,每个key映射一个value

Hashtable 继承Map接口,不能将空值作为key或者value,get(),put()

Hashtable是同步的

Hashmap 是非同步的,允许空 key和value

6.工厂模式

    1>简单工厂模式:静态工厂模式,定义一个用于创建对象的接口或者抽象类

    由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。 

    2>工厂方法模式:

有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。 

    3>抽象工厂模式:

   提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等   级结构。而工厂方法模式针对的是一个产品的等级结构。

7.volatile作用

  1>.防止指令重排

      实例化对象步骤:<1>分配内存空间<2>初始化对象<3>将内存空间地址赋值给对应的引用

  2>.实现可见性

  3> 保证原子性

8.单例

public class Singleton {
 4     public static volatile Singleton singleton;
 5 
 6     /**
 7      * 构造函数私有,禁止外部实例化
 8      */
 9     private Singleton() {};
10 
11     public static Singleton getInstance() {
12         if (singleton == null) {
13             synchronized (singleton) {
14                 if (singleton == null) {
15                     singleton = new Singleton();
16                 }
17             }
18         }
19         return singleton;
20     }
21 }

 

 

 

 

 

 

标签: 面试题
共有 人打赏支持
粉丝 2
博文 34
码字总数 3643
×
williamQAQ
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: