Skip to content

Commit 9ec4bd2

Browse files
committed
1 parent 0b774d8 commit 9ec4bd2

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
一、Java基础
2+
3+
基础部分
4+
5+
Java Collections相关,主要是List,Set,Map和Queue
6+
7+
[2] 了解的常用实现及其用法(能按照需要使用ArrayList和LinkedList,HashSet和HashMap的特性,在什么情况下使用过Queue)
8+
9+
[3] 了解线程安全的实现,有使用经验(比如用过CopyOnWriteList,ConcurrentHashMap和ConcurrentLinkedQueue以及为什么要用它)
10+
11+
[4] 能大概说出线程安全的集合类的具体实现方法(比如CopyOnWriteList,ConcurrentHashMap和ConcurrentLinkedQueue的实现)
12+
13+
[5] 在源码层面上研究过类的实现(比如看过jdk6里的CopyOnWriteList,ConcurrentHashMap和ConcurrentLinkedQueue的代码,看过一部分,能说出一点就行)
14+
15+
Java内存模型
16+
17+
[2] 知道volatile怎么用,Atomic类的用法
18+
19+
[3] CAS是什么;能写出用double check locking实现的线程安全的单例
20+
21+
[4] 了解happen-before规则(能利用此规则分析代码是否线程安全)
22+
23+
[5] 了解Java里的类是怎么保存的。Object的头部都有什么。什么是false-sharing,最好举例,如果研究过LMAX的disruptor更好
24+
25+
Java多线程开发
26+
27+
[2] 基本的锁synchronized, Lock, Condition的用法。ThreadLocal的实现(Map)
28+
29+
[3] 了解线程池参数意义;知道怎么分析线程异常的情况(例如cpu占用过高,可利用top命令找出线程id,再利用jstack定位stacktrace)
30+
31+
[4] 了解其他线程同步的类的用法,比如CountdownLatch,Exchanger,Barrier,Semaphore等
32+
33+
[5] 知道怎么用wait和notify来控制线程同步(java monitor基础);了解AbstractQueuedSynchronizer原理
34+
35+
JVM
36+
37+
[2] jdk6的hotspot堆的结构。了解两个survivor区
38+
39+
[3] 了解常用GC算法的特点,能讲清楚CMS算法的过程,有根据不同应用程序调优jvm参数的经验(比如对于网络程序,知道调整survivor ratio的大小)
40+
41+
[4] 熟悉常用GC算法的应用场景及优缺点,能根据不同的需求进行选型
42+
43+
[5] 了解垃圾回收生命周期,具体可考察Strong, Soft, Weak和Phantom引用的区别,以及都有什么作用(主要区别在于被GC的时间不同。Soft比Weak更不eager被GC。Weak和Phantom的区别在于入ReferenceQueue的时候不同);或者知道线程safepoint,能指出哪些执行语句能达到safepoint
44+
45+
网络
46+
47+
[2] 对http 协议有一定熟悉,知道get与post的区别,对http的header常见参数了解一些
48+
49+
[3] 知道socket的用法。对于nio,知道怎么用socket.select和socket.accept写出一个基本的socket服务(大概伪代码写出来就行)
50+
51+
[4] 如果用过Netty,能说出netty的基本概念(事件驱动,channel的几种状态,channel pipeline等。如果熟悉netty3,了解boss和worker;如果熟悉netty4,了解eventloop);如果没用过netty,说说用过的网络IO框架
52+
53+
[5] 了解常见io模型:bio,nio,aio,对tcp调优有经验,或者有c100k规模的网络程序的开发经验
54+
55+
开源框架相关
56+
57+
[2] 能说出使用过的开源框架的概念和原理,和一些经验
58+
59+
[4] 看过开源框架的代码
60+
61+
[5] 自己有开源框架或者深度参与过
62+
63+
其他
64+
65+
[2] 对jdk 源码看过部分类的实现 如String, HashMap等
66+
67+
[3] 能列举出一些常用的设计模式在生产中的一些应用场景
68+
69+
[4] java里类加载的机制(能说出delegate或者双亲委派就行);了解String pool;Integer -128~128的缓存
70+
71+
[5] 对java 虚拟机规范以及java 语言特性有深入了解
72+
73+
二、服务器相关
74+
75+
LINUX
76+
77+
[2] 熟练使用tail、less等。
78+
79+
[3] 熟练使用grep、find、sed、awk等基本用法。了解文件权限规则。
80+
81+
[4] 编写过功能相对复杂的shell 脚本,例如 日志处理,启动shell脚本等
82+
83+
三、存储
84+
85+
存储
86+
87+
[2] 了解mongodb、mysql、redis、hbase 使用方式,大概知道相关存储的一些使用场景
88+
89+
[3] 对redis 存储方式aof、rdb等有一些了解,熟悉mysql 读写分离、一主多从等架构方式,对常用mysql proxy 选型有一定了解。
90+
91+
[4] 对分布式存储集群有一定了解,对b+tree, LSM 等存储方式有一定了解,能列出常见mysql、redis、hbase、mongo存储的利弊
92+

0 commit comments

Comments
 (0)