面试题day14
中兴
-
equals和==的区别
==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值。
equals()是一个方法,只能比较引用数据类型。
-
hashcode的作用,不重写会怎样
未重写hashCode方法时,它的作用主要是根据当前对象返回一个整型的hash值,不同对象调用hashCode返回的值往往是不一样的。
重写了equals方法,不重写hashCode方法时,可能会出现equals方法返回为true,而hashCode方法却返回不同的结果。即使equals判断为true,但是他们保存的位置在底层数组上时不一样的,不会触发HashSet的去重功能,
-
常用的Java集合有哪些
list set map
-
ArrayList和LinkedList的区别
数组和双向链表
多读少写 多写少读
占用空间不同
空参构造,不初始化数组长度,在第一次添加数据时,初始化数组长度为10。
添加一个元素,如果数组所需最小容量(size+1)大于数组长度就会触发扩容,扩容更新容量(1.5*size)为原来的1.5倍
- 更新容量小于最小容量
- 使用最小容量扩容
- 更新容量小于最大安全容量
- 最小容量大于最大安全容量,使用最大容量扩容
- 最小容量小于最大安全容量,使用最大安全容量扩容
- 更新容量小于最小容量
-
List和Set的区别
list可以插入多个null元素,而set只允许插入一个null元素;
list容器是有序的,而set容器是无序的;
list方法可以允许重复的对象,而set方法不允许重复对象等等。
-
为什么要线程安全,举例子,
数据库脏读的例子,i++的例子
-
怎么实现线程安全
synchronized lock
线程本地变量
线程安全类
-
多线程了解吗,为什么要多线程。如何启动一个线程,start和run的区别
单独调用run()方法,是同步执行;通过start()调用run(),是异步执行。
-
wait和sleep的区别
属于不同的两个类,sleep()方法是线程类(Thread)的静态方法,wait()方法是Object类里的方法。
sleep()方法不会释放锁,wait()方法释放对象锁。
sleep()方法可以在任何地方使用,wait()方法则只能在同步方法或同步块中使用。
sleep()使线程进入阻塞状态(线程睡眠),wait()方法使线程进入等待队列(线程挂起),也就是阻塞类别不同
-
会Linux吗,如果查询文件内较大的一些文件夹用什么指令
用find+size
-
知道单例模式吗,会不会写最基本的单例
属性私有、方法静态私有、构造方法静态私有
-
了解Java的框架吗,spring之类的
兴业数金
-
因为自我介绍里有提到自己做的项目,感觉是根据项目问了一些具体功能实现
-
HTTP和HTTPS的区别?
端口、ssl
-
Java中一般怎么实现线程同步?
synchronized lock
线程本地变量
线程安全类
信号量
-
Java中常见的exception了解过吗?常见的异常可以说两个吗?
NullPointerException ClassCastException
-
设计模式了解过吗?
代理模式、工厂模式
-
AoP和IoC
动态代理、控制反转
原生动态代理,cglib
-
你知道AoP用到哪些技术吗?
JDK-Proxy java动态代理
CGLIB-Code Generation Library