Java面试核心技术精讲
2020-11-20 13:57:54 0 举报
AI智能生成
Java面试核心技术精讲
作者其他创作
大纲/内容
Java平台
Java平台语言特点
书写一次,到处运行
垃圾收集
解释执行,也存在部分热点代码的编译执行
Java类库
java虚拟机
工具
Java基础
Java异常
Exception 是程序正
常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理
常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理
可检查
不检查
Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如
JVM 自身)处于非正常的、不可恢复状态
JVM 自身)处于非正常的、不可恢复状态
OutOfMemoryError
谈谈final、finally、 finalize
Immutable
引用
强引用
软引用
弱引用
幻象引用
String、StringBuffer、StringBuilder
String
不可变对象,拼接时会创建新对象
StringBuffer
线程安全
StringBuilder
非线程安全
动态代理
反射实现
字节码操作机制
Sprig aop
JDK Proxy(针对接口)
cglib(可以是接口也可以是类)
应用场景
子主题
Java基本数据类型
自动装箱
自动拆箱
缓存值
Java集合类型
Vector
线程安全的动态数组
1倍扩容
ArrayList
应用更加广泛的动态数组实现,它本身不是线程安全的
扩容0.5b倍
LinkedList
双向链表,所以它不需要像上面两种那样调整容量,它
也不是线程安全的。
也不是线程安全的。
SET
TreeSet
自然顺序访问
HashSet
不保证有序
LinkedHashSet
Map
Hashtable
线程安全
不支撑key和value为null
HashMap
非线程安全
支持 null 键和值等
数据存储
数组+链表
TreeMap
数据存储
红黑树
ConcurrentHashMap
并发实现
分段锁机制
IO操作
java.io 包
java.net
java.nio 包
基础知识
synchronous/asynchronous
blocking/non-blocking
多路复用
利用了单线程轮询事件的机制,通过高效地定位就绪的 Channel,来决定
做什么,仅仅 select 阶段是阻塞的,可以有效避免大量客户端连接时,频繁线程切换带来
的问题,应用的扩展能力有了非常大的提高。
做什么,仅仅 select 阶段是阻塞的,可以有效避免大量客户端连接时,频繁线程切换带来
的问题,应用的扩展能力有了非常大的提高。
图解
子主题
同步阻塞模式
所以需要多线程以实现多任务处
理
理
图解
接口与抽象
接口
接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到 API 定义和实现分离的目
的
的
不能实例化
不能包含任何非常量成员,任何 field 都是隐含着 public static
final 的意义
final 的意义
没有非静态方法实现,也就是说要么是抽象方法,要么是静态方法
抽象类大多用于抽取相关 Java 类的共用方法实现或者是共同成员变量
设计模式
创建型模式
工厂模式
单例模式
构建器模式
原型模式
结构型模式
桥接模式
适配器模式
装饰者模式
代理模式
组合模式
外观模式
享元模式
行为型模式
策略模式
解释器模式
命令模式
迭代器模式
模板方法模式
访问者模式
Java进阶
synchronized 和 ReentrantLock 有什么区别
synchronized
是 Java 内建的同步机制
ReentrantLock
重入锁
可以比较对锁的作用进行细粒度控制
线程安全几个问题
原子性
可见性
有序性
线程状态
新建
就绪
等待
终止
阻塞
锁死
子主题
调查锁死
利用 jstack 等工具获取线程栈
超时释放
子主题
Java并发包
CountDownLatch
允许一个或多个线程等待某些操作完成
CyclicBarrier
一种辅助性的同步结构,允许多个线程等待到达某个屏障
Semaphore
Java 版本的信号量实现
各种线程安全的容器
各种并发队列实现
强大的 Executor 框架
Java并发类库提供的线程池
Executors 目前提供了 5 种不同的线程池创建配置
newCachedThreadPool
newFixedThreadPool
newSingleThreadExecutor
结构
子主题
线程池大小的选择
CPU 核的数目 N 或者 N+1
AtomicInteger
Java虚拟机
程序计数器
Java 虚拟机栈
当前帧
堆
方法区
这也是所有线程共享的一块内存区域,用于存储所谓的
元(Meta)数据,例如类结构信息,以及对应的运行时常量池、字段、方法代码等
元(Meta)数据,例如类结构信息,以及对应的运行时常量池、字段、方法代码等
运行时常量池
本地方法栈
图解
垃圾回收的算法
引用计数算法
优化思路
运行时(runtime)优化
即时编译器(JIT)优化
Java应用安全
SQL 注入攻击
操作系统命令注入
XML 注入攻击
Java应用开发扩展
MySQL支持的事务隔离级别,以及悲观锁和乐观锁
ACID
子主题
锁
Spring bean
生命周期
作用域
Singleton
这是 Spring 的默认作用域,也就是为每个 IOC 容器创建唯一的一个 Bean
实例。
实例。
Prototype
针对每个 getBean 请求,容器都会单独创建一个 Bean 实例
web容器下的作用域
Request,为每个 HTTP 请求创建单独的 Bean 实例
Session,很显然 Bean 实例的作用域是 Session 范
0 条评论
下一页