常问的一些知识点
- Java基础
接口和抽象类
面向对象
封装
继承
多态
Java数据类型
基本数据类型:byte short int long char float double
引用数据类型:数据的引用在栈中,但是它指向的对象在堆中。
多线程
Java线程的几种状态
新建
就绪(可执行)
运行
阻塞(等待阻塞、同步阻塞、其他阻塞)
死亡
两种线程创建方式:继承Thread类、实现Runnable接口(推荐)
I/O
TCP&UDP
TCP基于连接(三次握手、四次挥手),UDP无连接
TCP流模式,UDP数据报模式
TCP保证数据正确,UDP可能丢包
TCP保证数据顺序,UDP不保证
TCP效率低,UDP效率高
重写、重载、重构
访问修饰符(public default protected private)
volatile 保证下一个读操作在上一个写操作之后
ThreadLocal 修饰变量,为每个使用该变量才线程提供独立的变量副本。
一致性hash算法 把服务器节点和需要存储的数据的键使用同意的hash函数进行映射,并把这个hash空间构成一个环
- 集合类
线程不安全:ArrayList HashSet LinkedList(双向链表) HashMap
ConccurentHashMap
Collection接口
List接口 有序,元素可重复
Vector 线程安全
ArrayList 线程不安全,动态增大或减小容量(如何实现?)
LinkedList 基于双向链表实现
Set接口 无序,元素不可重复
HashSet 不保存元素加入顺序,根据元素的hash码存放
LinkedHashSet 根据元素的hash码存放,同时用链表保存加入顺序
TreeSet 用红黑树对加入的对象排序存放,放入的对象须可排序,实现Camparable
Map接口 键值对,键用set存放
Hashtable实现类 线程安全,key&value不许为null,效率低
HashMap实现类 线程不安全,key&value可以为null,效率高。不保证映射顺序,不保证顺序永久不变
TreeMap实现类 使用红黑树对键排序存放
- 设计模式
工厂模式(普通工厂方法、多个工厂方法、静态工厂方法)
单例模式
原型模式
建造者模式
外观模式
代理模式(AOP)
策略模式
观察这模式
命令模式
状态模式
- Servlet生命周期
- http
get&post
rest
session&cookie
*分布式session
- String StringBuffer StringBuilder
- Spring
IOC
AOP(代理模式,应用)
Bean的生命周期
- JVM生命周期
启动
运行
消亡
- JVM内存结构
方法区
Java堆
栈
本地方法栈
- GC
引用计数
标记清除
标记整理
分代收集
- JVM调优