为何我建议1-3年的Java程序员仔细看看这篇文章
此文的目的是为了督促自己去不断学习,让自己有更明确的方向去提升自己。以技能树为基础,以面试要点为大纲,我觉得比抓住什么看什么要更有目的,更能坚持下去。世界瞬息万变,我们要时刻准备着、时刻提高着自己,才能使自己更具有竞争力。 一、Java技能树1、基本语法这包括static、final、transient等关键字的作用,foreach循环的原理等等。比如面试的时候面试官问你static关键字有哪些作用,如果你答出static修饰变量、修饰方法面试官会认为你合格,答出静态块,会认为你不错,答出静态内部类会认为你很好,答出静态导包会对你很满意,因为能看出你非常热衷研究技术。 2、集合集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现原理,当然能掌握CopyOnWrite容器和Queue是再好不过的了。 还需要了解ConcurrentHashMap的锁分段技术,ConcurrentHashMap的读是否要加锁,为什么,ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器 3、设计模式知道常用设计模式的优缺点。 能画出常用设计模式的UML图。 4、多线程Thread和Runnable的区别和联系、多次start一个线程会怎么样、线程有哪些状态。 假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现? 常用的线程池有几种?这几种线程池之间有什么区别和联系?线程池的实现原理是怎么样的? synchronized和ReentrantLock的区别、synchronized锁普通方法和锁静态方法、死锁的原理及排查方法等等。 5、JDK源码要想拿高工资,JDK源码不可不读,总结一下比较重要的源码: List、Map、Set实现类的源代码; ReentrantLock、AQS的源代码; AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的; 线程池的实现原理; Object类中的方法以及每个方法的作用。 6、数据库union和union all的区别、left join、几种索引及其区别,数据库性能的优化。 7、数据结构和算法分析数组、链表是基础,栈和队列深入一些但也不难,树挺重要的,比较重要的树AVL树、红黑树,可以不了解它们的具体实现,但是要知道什么是二叉查找树、什么是平衡树,AVL树和红黑树的区别。 8、Java虚拟机
9、Web方面的一些问题
1 Java 基础1.1 Java 基础语法
1.2 Java 常用集合
1.3 Java IO 和 NIO
2 多线程2.1 线程的基本概念
2.2 线程池
2.3 锁
3 数据库
4 算法
(编辑:ASP站长网) |