题目

class A{}

class B extends A{}

class C extends A{}

class D extends B{}

A obj = new D();

System.out.println(obj instanceof B);

System.out.println(obj instanceof C);

System.out.println(obj instanceof D);

System.out.println(obj instanceof A);

A

| |

B C

|

D

D属于B,D属于A,D属于D,D不属于C


instanceof是判断前者是否可以类型可以转化为后者,可以转化即为true,分为向上转型和向下转型B D都是A的子类向下转型,
牛客Java面试题1_向下转型



题目

ConcurrentHashMap使用synchronized关键字保证线程安全
HashMap实现了Collction接口
Array.asList方法返回java.util.ArrayList对象
SimpleDateFormat是线程不安全的

  • ConcurrentHashMap 使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。
  • public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable
  • Arrays.asList() 返回 java.util.Arrays.ArrayList 对象,这里的 ArrayList 是 Arrays 私有的内部类

题目

假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
请问eden区最终分配的大小是多少?
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
-Xms1G 设置Java堆最小值为1G
-Xmx2G 设置Java堆最大值为2G
-Xmn500M 设置新生代大小为500M(一个Eden区,两个Survivor区)
-XX:MaxPermSize=64M 设置永久代大小为64M
-XX:+UseConcMarkSweepGC 设置使用CMS收集器
-XX:SurvivorRatio=3 设置Eden区与Survivor区大小的比例
本题看新生代大小,新生代为500M,三个区比例为3:1:1,很容易计算出Eden大小为300M

题目

java8中,忽略内部接口的情况,不能用来修饰interface里的方法的有( )

Java8的接口方法可以有如下定义

only public, abstract, default, static and strictfp are permitted


java 1.8开始支持接口中定义静态方法,发了一波纠错终于得到回应,题目加了条件java8中。。。。。