java SE
问题一:Java中是引用传递还是值传递?
值传递: 将方法实际参数值复制到另一个变量,然后复制的对象被传递,这就是为什么它被称为“值传递”
引用传递:将实际参数 的引用传递给该方法,这就是为什么它被引用称为“传递”的原因。
答案: java通过引用来操作对象,并且所有Object类型的变量都是引用一个地址。但是,java传递方法参数并不是引用传递,而是值传递。
问题二:JAVA中的深克隆和浅克隆
浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。
深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。
问题三:java8 --新的时间函数
原因:java.util.Date和SimpleDateFormatter都不是线程安全的,而LocalDate和LocalTime和最基本的String一样,是不变类型,不但线程安全,而且不能修改。
问题四java8:java 8.Lambda表达式 和 Stream 流和函数式接口
推荐简书:https://www.jianshu.com/p/15ac2e9dc90f
在 Java 中,Lambda 表达式是对象,他们必须依附于一类特别的对象类型——函数式接口(functional interface)
()- > {} :函数式接口是只包含一个抽象方法声明的接口
问题四:方法的重载和重写的区别

问题五:静态代码块的执行时机以 及他的内容会执行几次
静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次;
非静态代码块,在创建对象的时候(即new一个对象的时候)执行,每次创建对象都会执行一次
问题六:复合索引的优点和注意事项:
https://www.cnblogs.com/Alex80/p/9716426.html
1:普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定---》“先出现先执行”
2:
构造代码块:直接在类中定义且没有static修饰没有名字的{}代码称为构造代码块。
构造代码块在每次创建对象时都会被调用,并且构造代码块的执行次序优先于类构造函数。
3:
下面是一道


题的答案:

解析:静态>代码>构造方法,有一个前提:(静态的东西只加载一次)
下边是SE的东西:
所以StringBuilder不能用于对同一对象的多线程操作。不过一般对字符串的操作,并不会用到多线程,所以绝大多数时候,用StringBuilder即可。
String、 StringBuilder 和 StringBuffer的区别
为什么说StringBuffer是线程安全的?:StringBuffer中的方法都加了synchronized关键字

说一下Collection集合【如下图】

1:ArrayList和Linkedist和Vector的区别:
(1)ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
(2)对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
(3)对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 这一点要看实际情况的。若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。
2:HashTable和HashMap的区别

单例:
单例模式分为懒汉式单例和饿汉式单例
懒汉式单例:类加载时不初始化
饿汉式单例:类加载时就完成初始化,所以类加载比较慢,但是获取对象的速度比较快。

下面是一道面试题:

result:Exception in thread "main" java.util.ConcurrentModificationException
hashMap 中 key和value交换

HashTable 和ConcurrentHashMap的区别:
推荐博客:https://blog.csdn.net/zhanglei082319/article/details/87888250
HashMap 的底层原理:
https://blog.csdn.net/zhanglei082319/article/details/87872156
HashMap的面试题:
HashMap中的index下标值的计算:
index = [(hashCode)^ (HashCode>>>16) ] / 数组的长度
java 8.Lambda表达式
最出名的一个出错误:
Java中ArrayList循环遍历并删除元素的陷阱【还很重要】
map中的getOrDefault()方法;
java中Collection与Collections的区别