1、java中==和equals和hashCode的区别
2、int、char、long各占多少字节数
4、2、8
3、int与integer的区别
4、对java多态的理解
Java中多态的理解
多态可以说是建立在继承的基础上的,在多态的向上转型的情况中,无法调用子类中重载的方法,但是可以调用重写的方法。
真正概念(仔细理解一下):指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
5、String、StringBuffer、StringBuilder区别
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。
String:不可变字符序列
StringBuffer:可变字符序列、效率低、线程安全
StringBuilder:可变字符序列、效率高、线程不安全
小结:
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
String,StringBuffer与StringBuilder的区别
https://www.jb51.net/article/78057.htm
6、什么是内部类及其用处
可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。
1.成员内部类
2.局部内部类
3.匿名内部类
4.静态内部类
Java内部类详解
7、抽象类和接口区别、抽象类的意义、抽象类与接口的应用场景、抽象类是否可以没有方法和属性、接口的意义
抽象类:抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了子类的随意性。
继承是一个 "是不是"的关系,而 接口 实现则是 "有没有"的关系
深入理解Java的接口和抽象类
8、泛型中extends和super的区别
9、父类的静态方法能否被子类重写
no,只能继承,不能重写
10、进程和线程的区别
11、final,finally,finalize的区别
12、序列化的方式,及两种序列化的差别
13、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
可以继承,但是不可以重写
14、为什么要有静态内部类
https://blog.csdn.net/flyfeifei66/article/details/82686086
15、闭包和局部内部类的区别
16、java-string转换成integer的方式及原理
17、简述下集合
collection接口是集合类的根接口,被继承的两个类包括set和list,Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。
Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key,但是可以包含相同的value。
terator所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含以下三种方法:
1.hasNext()是否还有下一个元素。
2.next()返回下一个元素。
3.remove()删除当前元素。
接口 | 子接口 | 是否有序 | 是否允许元素重复 |
---|---|---|---|
Collection | 否 | ||
List | ArrayList | 是 | 是 |
LinkedList | 是 | 是 | |
Vector | 是 | 是 | |
Set | AbstractSet | 否 | 否 |
HashSet | 否 | 否 | |
TreeSet | 是(用二叉排序树) | 否 | |
Map | AbstractMap | 否 | 使用key-value来映射和存储数据,key必须唯一,value可以重复 |
HashMap | 否 | 否 | |
TreeMap | 是(用二叉排序树) | 使用key-value来映射和存储数据,key必须唯一,value可以重复 |
18、一个线程可以开启多少handle,开启时应该注意什么
一个线程可以开启多个handle,但是一个只会共用一个looper,并且使用过程,应该注意handle的通信要带上各自的target,以便区分
常用数据结构简介
1、并发集合
https://blog.csdn.net/yuruixin_china/article/details/82082195
2、集合类以及集合框、数据结构
https://blog.csdn.net/weixin_42280517/article/details/81586001
面试大厂回来,我狠补了一把算法和数据结构
3、List,Set,Map的区别
4、List和Map的实现方式以及存储方式
5、Java中HashMap的实现原理\数据结构
6、ConcurrentHashMap实现原理及源码分析
ConcurrentHashMap实现原理及源码分析
高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
7、HashTable实现原理
8、HashMap与HashSet的区别
http://www.importnew.com/6931.html
1、HashSet底层是采用HashMap实现的。HashSet 的实现比较简单,HashSet 的绝大部分方法都是通过调用 HashMap 的方法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。
2、HashMap的key就是放进HashSet中对象,value是Object类型的。
3、当调用HashSet的add方法时,实际上是向HashMap中增加了一行(key-value对),该行的key就是向HashSet增加的那个对象,该行的value就是一个Object类型的常量
9、Java如何判断HashSet和HashMap中相同元素
https://f543711700.iteye.com/blog/800929
10、集合Set实现Hash怎么防止碰撞
https://blog.csdn.net/zeb_perfect/article/details/52574915
11、ArrayList和LinkedList区别及使用场景
https://blog.csdn.net/u012216131/article/details/82500925
12、数组和链表
https://blog.csdn.net/m0_37631322/article/details/81777855
13、深拷贝和浅拷贝
http://www.cnblogs.com/xingzc/p/9646923.html