关于专业需要点亮的技能
1. 基本语法
static,final,transient,volatile等关键字
2.集合
List, Map, Set 底层实现原理
ArrayList, LinkedList, Hashtable, HashMap, ConcurrentHashMap,HashSet的实现原理
加分项:
CopyOnWrite容器和Queue
关于ConcurrentHashMap可以衍生出很多问题:
(1)ConcurrentHashMap的锁分段技术
(2)ConcurrentHashMap的读是否要加锁,为什么
(3)ConcurrentHashMap的迭代器是一致性的迭代器还是弱一致性的迭代器
3.设计模式
一般掌握常用的几种设计模式就可以了,涉及到的方面有:
(1)你的项目上都用了哪些设计模式,如何使用
(2)了解常用设计模式的优缺点
(3)能画出常用设计模式的UML图
4.多线程
Thread和Runnable的区别和联系,多次start一个线程会怎么样,线程有哪些状态。
举一个面试例题:
假如有Thread1,Thread2,Thread3,Thread4四条线程分别统计C,D,E,F四个盘的大小,所有线程统计完毕后都交给Thread5线程去做汇总,应当如何实现。
关于线程池:
- 常用的线程池有几种,这几种线程池有什么区别和联系。
- 线程池的实现原理是怎么样的。
- 根据一些具体的场景来判断使用什么样的线程池
- 多线程同步,锁。
- synchronized和ReentrantLock的区别,synchronized锁普通方法和锁静态方法,死锁的原理及排查方法。
5.IO
阻塞IO和Socket IO
- 阻塞/非阻塞的区别
- 同步/异步的区别
- 理解阻塞IO,非阻塞IO,多路复用IO,异步IO这四种模型
- Socket IO如何与上述四种模型关联
- NIO的原理,属于那种IO模型
- NIO的三大组成
加分项:Netty和Mina,目前Netty问的较多。
6.JDK源码
总结下比较重要的源码:
(1)List,Map,Set实现类的源代码
(2)ReentrantLock,AQS的源代码
(3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的。
(4)线程池的实现原理
(5)Object类中的方法以及每个方法的作用
7.框架
根据一些场景来描述如何使用框架。
一些框架中的问题:
例如Spring初始化Bean的时候要做一些事情该如何操作,Bean销毁时要做一些事情该怎么做,Mybatis中$和#的区别
8.数据库
数据库性能的优化,建议把SQL基础和SQL优化学习一下。
9.数据结构和算法分析
树结构挺重要的,数据库的索引就是采用树结构实现的。
算法没事还是可以刷一刷leetCode的,没有坏处。
10.Java虚拟机
- Java虚拟机的内存布局
- GC算法及几种垃圾收集器
- 类加载机制,也就是双亲委派模型
- Java内存模型
- happens-before规则
- volatile关键字使用规则
11.Web方面的一些问题
- session的几种实现方式
- session和cookie的区别和联系,session的实现原理
- 对Filter,Servlet,Listener的原理
- get/post的区别,forward/重定向的区别,HTTPS的实现原理
- 一致性Hash算法
补充
- SOA技术
- RPC技术
网友评论