面试问题:
1.两个对象如何进行比较,需要实现什么方法?
equals和== 区别
object类中equals默认方法和==相同,比较的都是地址值,只有当我们重写了equals方法,通常重写后比较的是内容。
hashCode的作用及与equals的关系
hashCode的作用是用来获取hash码的,也称作散列码,实际返回值为int型数值,用于确认对象在哈希表中位置。hashcode只有在创建某个类的散列表的时候有用,根据hashcode确定对象在散列表中位置。
java中常见的散列表类有hashmap,hashset hashtable。
两个对象equals相等时,hashcode不一定相等。
注意: hashset存储数据时,判断重复是根据equals相等并且hashcode相等,则为同一个对象,否则两个对象属性相同,都会被存储。
引申出几个经常在面试中问到的问题:
1、两个对象,如果a.equals(b)==true,那么a和b是否相等?
相等,但地址不一定相等。
2、两个对象,如果hashcode一样,那么两个对象是否相等?
不一定相等,换句话说hashcode相等,对应的键值对可能不同,也就是hash冲突。判断两个对象是否相等,需要判断equals是否为true。
2.Synchronized修饰静态方法和普通方法的区别?
修饰静态方法的锁为class锁,当前类锁。
修饰普通方法的为this锁,对象锁。
3.单例模式 饿汉式懒汉式优缺点?
饿汉式
4.动态代理及静态代理分别怎样实现?
5.volatile关键字用法?
6.线程如何实现安全?
7.HashMap插入重复Key值问题
8.concurrent并发包
9.线程池有几种、都有哪些参数?
9.Mysql索引底层数据结构与算法?
10.mysql引擎?
11.mysql与oracle区别?
12.Spring 的切面编程AOP如何实现 注入切面程序
13.jdk 1.8特性
14.maven布控
15.事务隔离级别
16.前后端跨域如何解决
17.冒泡 二分排序思想
18.怎样保证redis数据与数据库一致?
19.mybatis底层如何实现?
20.RabbitMQ的六种工作模式?
21.java锁分哪几种?
22.maven生命周期
23.ThreadLocal
还没有整理完全,后期有时间更新。