1、Java基本的数据类型,精度问题
二进制的小数无法精确的表达十进制小数,计算机在计算十进制小数的过程中要先转换为2进制进行计算,这个过程中出现了误差。Java工具类DecimalFormat、String.format、BigDecimal可以简单解决保留几位小数的问题。
参考链接:https://blog.csdn.net/qq_40393000/article/details/82748711
http://www.cnblogs.com/chenrenshui/p/6128444.html
码出高效P7-9
2、Equals和==的区别
对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址。
对于equals方法,注意:equals方法不能作用于基本数据类型的变量,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
参考链接:https://www.cnblogs.com/dolphin0520/p/3592500.html
3、异常
参考链接:
https://www.cnblogs.com/zsh-blogs/p/10459035.html
4、集合
集合分为四大类:List、Queue、Map、Set。
对于List集合,是线性数据结构的主要表现,List集合的遍历结果是稳定的。最常用的是ArrayList和LinkedList。ArrayList是容量可以改变的非线程安全集合。内部使用数组进行存储。LinkedList本质是双向链表。包含3个重要成员:size、first、last。LinkedList的优点在于可以将零散的内存单元通过附加引用的方式关联起来,形成按链路顺序查找的线性结构,内存利用率高。
对于Queue,是一种先进先出的数据结构,BlockingQueue在高并发编程中,经常被作为Buffer(数据缓存区)使用。
对于Map,使用key-value键值对作为存储元素实现的哈希结构,HashMap是线程不安全的,Hashtable因为性能瓶颈已经被淘汰了,而在多线程的编程中,使用线程安全的ConcurrentHashMap。TreeMap是默认按key升序排列。
对于Set,是不允许出现重复的集合类型。最常用的是HashSet、TreeSet、LinkedHashSet。HashSet底层使用HashMap来实现,但它不保证集合元素的顺序。TreeSet使用TreeMap实现LinkedHashSet继承自HashSet,内部使用链表维护元素的插入顺序。
参考链接:
码出高效P153-154
5、序列化
内存中的数据对象只有转换为二进制流才可以进行数据持久化和网络传输。将数据对象转换为二进制流的过程称为序列化,反之则为反序列化。常见的序列化方式有三种:
(1)Java原生序列化。实体类通过实现Serializable接口来实现,这个接口没有任何方法,只起到标识作用。兼容性最好,但不支持跨语言,性能一般。一定要显式的定义serialVersionUID属性值。
(2)Hessian序列化。是一种支持动态类型、跨语言、基于对象传输的网络协议。比Java原生高效。Hessian会把复杂对象所有属性存储在一个Map中进行序列化。所以在父类、子类存在同名成员变量的情况下,Hessian序列化时,先序列化子类,然后序列化父类,因此序列化的结果会导致子类同名对象变量被父类值覆盖。
(3)JSON序列化。轻量级数据交换格式,将对象转换为Json字符串,可读性好,方便调试。
参考链接:
码出高效P64-65
6、多线程
synchronized、volatile
参考链接:
https://www.cnblogs.com/zsh-blogs/p/10461606.html
https://www.cnblogs.com/zsh-blogs/p/10461558.html
7、TCP/UDP区别
(1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
(2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
(3)TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
(4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
(5)TCP首部开销20字节;UDP的首部开销小,只有8个字节
(6)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
参考链接:
https://www.cnblogs.com/xiaomayizoe/p/5258754.html
8、常用设计模式及其应用
单例模式、工厂模式、策略模式、观察者模式、迭代器模式
参考链接:
https://blog.csdn.net/kefengwang/article/details/81430694
9、MySQL
索引
参考链接:
https://mp.weixin.qq.com/s/5IQtJsm4hMiMOf46mVqDqQ
原文:https://www.cnblogs.com/zsh-blogs/p/10752987.html