封装、继承、多态。
2 . 程序设计的6大原则:
-
单一职责原则
-
里氏替换原则
-
依赖倒置原则
-
接口隔离原则
-
迪米特法则
-
开闭原则
了解这6大设计原则是非常有必要的,它能指导你的程序整个结构的设计和规范。要想提高你的代码质量,请熟记这几个原则。在我们设计类、方法、接口的时候,请遵循这些原则。
3 . 设计模式
-
单例模式 :double check 双重加锁方式、静态内部类方式、枚举方式。
-
构造器模式
-
模板方法模式
-
装饰器模式
-
观察者模式
-
责任链模式
-
策略模式
23种设计模式就不一一列举了,不管你是工作了5年还是工作了1年,学习一下设计模式吧,这有助于打开你的编程思维。
4 . Java 字符串相关
Java 字符串相关的三个类:String
、StringBuilder
、StringBuffer
,你知道他们的区别吗?这也是面试中比较常问的,如果你还不知道?那就去查查资料吧。
5 . Java 线程池
线程池方面,JDK 为我们内置了几种线程池:
-
**newFixedThreadPool:**newFixedThreadPool,创建固定大小的线程池,poolCoreSize和maxPoolSize 相等,到达coreSize,则将新的任务放到缓存队列,有线程执行完毕,直接去取。
-
**newSingleThreadExecutor:**newSingleThreadExecutor,创建一个单线程的线程池,核心池的大小和最大池大小都为1.
-
**newCacheThreadPool:**newCacheThreadPool,无大小限制的线程池,提交一个任务就创建一个线程执行。
如果默认的几种线程池还不能满足你的需求,那就试一试自定义线程池吧!自定义线程池继承ThreadPoolExecutor。
6 . Java 集合
集合是Java中用得最多的了吧,你也面试的必问题之一,对于Java集合,你的脑袋里要熟记它的整个框架图:
Collection
(1) List:
-
LinkedList
-
ArrayList
-
Vector
(2) Set
-
HashSet
-
TreeSet
Map:
-
HashMap
-
TreeMap
-
HashTable
我们需要知道每个容器的特性,以及它们的扩容方式(这个很重要)。根据我们的数据大小、特定场景、业务逻辑来选择合适的容器。
7 . Java 内存模型
Java 内存模型这一块非常重要,因为它涉及到我们程序的性能,我们需要知道,内存是如何分配的,成员变量、静态变量、局部变量、对象等各自分配到哪一个区:
-
栈内存
-
堆内存