java面试题(九)

1.

java面试题(九)_第1张图片

解析:

%和*是同一个优先级,从左到右运算

java面试题(九)_第2张图片

 

2.

java面试题(九)_第3张图片

解析:

jvm堆分为:新生代(一般是一个Eden区,两个Survivor区),老年代(old区)。

常量池属于 PermGen(方法区)

java面试题(九)_第4张图片

 

3.

java面试题(九)_第5张图片

解析:

for(条件1;条件2;条件3) {

    //语句

}

执行顺序是条件1->条件2->语句->条件3->条件2->语句->条件3->条件2........

如果条件2为true,则一直执行。如果条件2位false,则for循环结束

 

4.

java面试题(九)_第6张图片

解析:

java面试题(九)_第7张图片

 

5.

java面试题(九)_第8张图片

 解析:

1、Statement对象用于执行不带参数的简单SQL语句。 

2、Prepared Statement 对象用于执行预编译SQL语句。 

3、Callable Statement对象用于执行对存储过程的调用。

6.

java面试题(九)_第9张图片

解析:

A,我们写java程序的时候只是设定事物的隔离级别,而不是去实现它

B,Hibernate是一个java的数据持久化框架,方便数据库的访问

C,事物隔离级别由数据库系统实现,是数据库系统本身的一个功能

D,JDBC是java database connector,也就是java访问数据库的驱动

 

7.

java面试题(九)_第10张图片

解析:

在上面main()方法中,并没有创建一个新的线程,只是简单地方法调用而已,如果想要创建线程,需要t.start();创建线程,等待cpu时间片,而run()方法只是简单地方法调用,所以先执行run(),在输出dazhong 

8.

java面试题(九)_第11张图片

解析:

一般关系数据模型和对象数据模型之间有以下对应关系:表对应类,记录对应对象,表的字段对应类的属性 

9.

java面试题(九)_第12张图片

解析:

 if(flag = true)的时候flag已经是true了,所以输出true;

要是为if(flag == true)输出才为false

10.

java面试题(九)_第13张图片

解析:

A. JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保证线程安全。 JDK1.7 及以前采用segment的分段锁机制实现线程安全,其中segment继承自ReentrantLock,因此采用Lock锁来保证线程安全。

B. 

C. Arrays.asList()  返回  java.util.Arrays.ArrayList 对象,这里的 ArrayList 是 Arrays 私有的内部类

D. 

 

11.

java面试题(九)_第14张图片

解析:

off-heap叫做堆外内存,将你的对象从堆中脱离出来序列化,然后存储在一大块内存中,这就像它存储到磁盘上一样,但它仍然在RAM中。对象在这种状态下不能直接使用,它们必须首先反序列化,也不受垃圾收集。序列化和反序列化将会影响部分性能(所以可以考虑使用FST-serialization)使用堆外内存能够降低GC导致的暂停。堆外内存不受垃圾收集器管理,也不属于老年代,新生代。 

12.

java面试题(九)_第15张图片

解析:

ThreadLocalMap中使用开放地址法来处理散列冲突,而HashMap中使用的是分离链表法。之所以采用不同的方式主要是因为:在ThreadLocalMap中的散列值分散得十分均匀,很少会出现冲突。并且ThreadLocalMap经常需要清除无用的对象,使用纯数组更加方便。 

13.

java面试题(九)_第16张图片

解析:

1、throws出现在方法头,throw出现在方法体 2、throws表示出现异常的一种可能性,并不一定会发生异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。 3、两者都是消极的异常处理方式,只是抛出或者可能抛出异常,是不会由函数处理,真正的处理异常由它的上层调用处理。 

14.

java面试题(九)_第17张图片

解析:

D错在  不是只能使用Runable实现线程

实现线程的方式有:继承Thread类,重现run()方法;

                                 实现Runable接口,实现run()方法;

                                 实现Callable接口,线程结束后有返回值。

 

15.

java面试题(九)_第18张图片

解析:
在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。在Java7中,也支持了String类型
String byte short int char Enum 类型 

16.

java面试题(九)_第19张图片

解析:

  • 同步代码块(synchronized(this),synchronized(类实例对象),锁是小括号()中的实例对象)
  • 同步非静态方法(synchronized method),锁的是当前对象的实例对象

获取类锁

  • 同步代码块(synchronized(类.class)),锁是最小括号 () 中的类对象(Class对象)
  • 同步静态方法(synchronized static method),锁是当前对象的类对象(Class 对象)

总结

  • 有线程访问对象的同步代码块时,另外的线程可以访问该对象的非同步代码块
  • 若锁住的是同一个对象,一个线程在访问对象的同步代码块时,另一个访问对象的同步代码块的线程会被阻塞。
  • 若锁住的是同一个对象,一个线程在访问对象的同步方法时,另一个访问对象的同步方法的线程会被阻塞。
  • 若锁住的是同一个对象,一个线程在访问对象的同步代码块时,另一个访问对象同步方法的线程会被阻塞,反之亦然。
  • 同一个类的不同对象的锁互不干扰
  • 类锁由于也是一种特殊的对象锁,因此表现和上述一致,而由于一个类只有一把对象锁,所以同一个类的不同对象使用类锁将会是同步的
  • 类锁和对象锁互不干扰

 

你可能感兴趣的:(java面试,java,面试)