目录
- 1.java接口的修饰符可以是什么
- 2.字符输入流和字节输入流有哪些以及区别
- 3.java中0.6666的数据类型是什么
- 4.是否存在i+1 < i
- 5.新建一个流对象的方法有哪些
- 6.constructor(构造器)是什么以及定义
- 7.要从文件file读出第10个字节到变量c中,需要如何读取
- 8.Map map = new HashMap(10000) 当添加10000个元素后会触发多少次扩容
- 9.当创建一个子类对象时,子类和父类都拥有代码块,静态代码块,构造函数之间的执行顺序是怎么样的
- 10.抽象类里可以存在什么方法或代码块
- 11.java中的hashMap的key为类对象时则该类需要满足什么条件
- 12.ArrayList和linkedList的区别
- 13.String, StringBuffer与StringBulider之间的区别和使用场景
- 14.error和exception有什么区别
- 15.悲观锁和乐观锁的区别,怎么实现
- 16.如何快速找出两个集合的交集和并集
- 17.关于Java中length、length()、size()的区别
- 18.HashMap和ConcurrentHashMap区别,ConcurrentHashMap线程安全吗,如何保证线程安全的?并简述java多线程内存模型
- 19.Spring的AOP是什么, 实现原理是什么
- 21.如何找出二叉树任意节点的前驱节点和后继节点
1.java接口的修饰符可以是什么
答:public,abstract
2.字符输入流和字节输入流有哪些以及区别
答:
3.java中0.6666的数据类型是什么
答:double,float需要带f
4.是否存在i+1 < i
答:存在,i = Integer.MAX_VALUE
5.新建一个流对象的方法有哪些
答:
6.constructor(构造器)是什么以及定义
答:1.构造器必须和类同名
2.每个类可以有一个以上的构造器
3.构造器可以0到n个参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用
6.不添加任何构造器会默认空的构造器
7.要从文件file读出第10个字节到变量c中,需要如何读取
答:
8.Map map = new HashMap(10000) 当添加10000个元素后会触发多少次扩容
答:0次扩容,初始化大小是16384个 只有超过16384才会进行扩容
9.当创建一个子类对象时,子类和父类都拥有代码块,静态代码块,构造函数之间的执行顺序是怎么样的
答:父类静态代码块->子类静态代码块->父类代码块(代码块的顺序)->父类的构造方法->子类代码块(代码块的顺序)->子类的构造方法
10.抽象类里可以存在什么方法或代码块
答:
11.java中的hashMap的key为类对象时则该类需要满足什么条件
答:需要重写hashCode()方法和他的equals()
- 从源码可知,插入元素的时候是先算出hashCode,如果hashCode相同的话,表明对象是存储在同一位置
- 需要再调用equals()方法,如果equals()相同,则替换元素
- 如果调用equals()方法不同时,则把元素放到桶上
12.ArrayList和linkedList的区别
答:
13.String, StringBuffer与StringBulider之间的区别和使用场景
答:String 字符常量,StringBuffer字符变量(线程安全),StringBuilder字符变量(线程不安全)
String适用于不常变的
14.error和exception有什么区别
答:
15.悲观锁和乐观锁的区别,怎么实现
答:
- 悲观锁:每次拿数据都认为别人会修改,所以每次拿数据都会加上锁,实现:开启锁机制或者开启事务
- 乐观锁:认为每次拿数据都不会被别人修改,不用上锁,但是在更新数据的时候会去判断数据是否被修改过,实现一般使用版本号或者时间戳
16.如何快速找出两个集合的交集和并集
答:
String[] arrayA = new String[] { "1", "2", "3", "4"};
String[] arrayB = new String[] { "3", "4", "5", "6" };
List<String> listA = Arrays.asList(arrayA);
List<String> listB = Arrays.asList(arrayB);
//1、并集 union
System.out.println(CollectionUtils.union(listA, listB));
//输出: [1, 2, 3, 4, 5, 6]
//2、交集 intersection
System.out.println(CollectionUtils.intersection(listA, listB));
//输出:[3, 4]
//3、交集的补集(析取)disjunction
System.out.println(CollectionUtils.disjunction(listA, listB));
//输出:[1, 2, 5, 6]
//4、差集(扣除)
System.out.println(CollectionUtils.subtract(listA, listB));
//输出:[1, 2]
17.关于Java中length、length()、size()的区别
答: length是数组的属性,length()是字符串的方法,size()是集合的一个方法
18.HashMap和ConcurrentHashMap区别,ConcurrentHashMap线程安全吗,如何保证线程安全的?并简述java多线程内存模型
答:
19.Spring的AOP是什么, 实现原理是什么
答:
21.如何找出二叉树任意节点的前驱节点和后继节点
答: