1.笼统类和接口的差异
笼统类能够有详细的办法和特点;接口只能有笼统办法和不变常量(static final)。
笼统类能够有私有的办法;接口没有私有办法。
笼统类主要来笼统类别;接口主要来笼统功用。
笼统类只能够单一承继;接口能够多承继;
笼统类和接口的笼统办法有必要被类悉数完成,不然承继者是笼统类。
2.多线程的完成办法
承继Thread类(Thread是Runnable的完成类)。
完成Runnable接口(终究交给Thread来履行)。
完成Callable接口,用FutureTask包装(终究交给Thread来履行)。
完成Callable接口(交给线程池ExcutorService来履行,Future类获取可堵塞的线程成果)。
运用SpringBoot注解@EnableAsync@Async来履行异步操作。
3.volatile
java关键字,具有3重意义,可见性,原子性,有序性。
可见性表明某一线程对变量的操作关于其它线程都是可见的。线程写操作直接更新主内存,线程读操作会侦听作业内存和主内存的值,不一致置作业内存失效,读取主内存的变量值。
原子性表明对变量的操作不会操作一半停止,其他线程会等候当时线程操作结束再进行对变量的操作,是Syschronize的缩小版。
有序性表明变量前的操作必定在变量前,变量后的操作必定在变量后。编译器和cpu为了进步履行功率,都会对指令进行重排序,关于多线程来说,重排序会使得成果不行预期,在变量前后设置内存屏障有用的约束了编译器对变量的重排序,让每个线程都得到相同得成果。A8站源码交易平台
4.ThreadLocal
jdk1.2就有得线程类,1.5扩展为泛型。ThreadLocal为每个运用它得线程供给了独立的变量副本,所以每个线程都能够运用它独立的变量副本,而不会影响其他线程。ThreadLocal类供给了一个静态内部类ThreadLocalMap,K值为线程id,value为变量,用空间交流时刻的线程变量安全办法。
比较线程同享,是同一个线程同一时刻只能有一个对变量进行操作,是时刻换空间。
变量不安全而且不需求进行交互的时分运用TreadLocal。
5.HashMap和HashTable,以及ConCurrentHashMap,差异原理
HashMap不是线程安全的。
HashTable关于新增或删减映射结构是线程安全的,单纯更改映射值需求对变量吵醒额定安全封装。
Collections.synchronizedMap来包装HashMap确保线程安全。
ConCurrentHashMap 高性能的线程安全HashMap计划,在jdk1.7之前运用分段锁机制,并发功率受控于哈希表分段的数量,1.8之后选用数组+链表+红黑树结构,选用CAS(比较交流)和synchronized完成。
6.左衔接,右衔接,内连A8站源码交易平台
select * from A as a left join B as b on a.age=b.age (暂时表数据是A一切数据+B满意条件的数据)
select * from A as a right join B as b on a.age=b.age (暂时表数据是B一切数据+A满意条件数据)
select * from A as a inner join B as b on a.age=b.age (暂时表数据是A&B满意条件数据)
7.tcp和udp的差异
有衔接和无衔接(TCP需求进行3次握手,UDP直接进行数据传输)
TCP要求系统资源较多
UDP程序结构比较简单
TCP流形式,UDP数据报形式
TCP确保数据正确性,UDP或许丢包
TCP确保数据正确性,UDP不确保
8.List,Set,Map差异
LIST是可重复调集 承继Collection接口,完成类有ArrayList,LinkedList,Vector。ArrayList和Vector是线性动态数组结构,查询功率高,相关于ArrayList,Vector是线程安全的,查询功率较低。LinkedList是双向链表数据结构,只能依照序号索引进行前后遍历,查询功率较低,但刺进时只需求记住前后项即可,刺进功率较高。
Set时不行重复调集,承继Collection接口,完成类有HashSet,TreeSet。
HashSet内部由hash表支撑,不确保set元素的迭代次序。TreeSet依照天然元素进行排序或许依照创立set时的comparator进行排序。
Map是独自的接口,完成类有HashMap,HashTable,TreeMap,LinkedHashMap。
HashMap和HashTable内部键值对是无序的且依照哈希办法进行排序的存储办法,不同的是HashTable是线程安全的,键和值不允许为null。TreeMap依据红黑树的排序办法完成,按key排序,默许升序。LinkedHashMap是先进先出栈。A8站源码交易平台
9.hash表和HashCode
Hash表(散列表)是一种数据存储结构,能够依据Key值直接定位目标的数据存储方位,并找出目标的值。
HashCode是java中支撑散列数据结构的一种办法。HashCode相同的目标,不必定持平,equals判别持平的目标HashCode必定持平。
10.排序和算法的时刻复杂度&空间复杂度
冒泡排序:O(n2) O(1)
刺进排序:O(n2) O(1)
挑选排序:O(n2) O(1)
二叉树排序:O(n2) O(n)
快速排序: O(n2) O(log2n)~O(n)
堆排序: O(n*log2n) O(1)
希尔排序:O O(1)
次序查找:O(n)
二分查找:O(logn)
二叉排序树查找:O(logn)
哈希表法:O(1)
分块查找:O(1)
11.日志输出都有哪些结构,log4j日志结构有哪些优势
common-log、log4j、log4j2、slf4j。
log4j能够界说日志等级、指定输出到不同的目的地,如控制台、数据库、文件,不同的目的地界说不同的日志等级,让代码中的日志输出更灵敏,更有用。