这篇文章的目的是督促自己不断学习,让自己有更明确的提升自己的方向。从技能树和面试要点的提纲来看,我觉得比抓看什么更有目的性,更有毅力。世界瞬息万变,我们必须时刻准备和完善自己,才能使自己更具竞争力。一、Java技能树1、基本语法这包括static、final、transient等关键字的作用,foreach循环的原理等等。比如在面试的时候,面试官问你static关键字有什么作用。如果你回答静态修改变量和修改方法,面试官会认为你合格。如果你回答静态块,你会认为你很好。如果你回答静态内部类,面试官会认为你合格。很好,回答静态导入包会让你满意,因为看得出来你很热衷于研究技术。2.集合需要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现原理。当然,如果能掌握CopyOnWrite容器和Queue就更好了。还需要了解ConcurrentHashMap的锁分段技术,ConcurrentHashMap的读取是否需要加锁,why,ConcurrentHashMap的迭代器是强一致性迭代器还是弱一致性迭代器3.设计模式了解常用的优缺点使用的设计模式。能画出常用设计模式的UML图。4、多线程Thread和Runnable的区别和联系,一个线程启动多次会发生什么,线程有哪些状态。如果有Thread1、Thread2、ThreadD3、Thread4四个线程,分别统计C、D、E、F盘的大小,所有线程都统计完交给Thread5汇总,应该怎么实现?常用的线程池有几种?这些线程池有什么区别和联系?线程池的实现原理是什么?synchronized和ReentrantLock的区别、synchronized锁的常用方法和锁的静态方法、死锁的原理和排查方法等。5、JDK源码要想拿高薪,一定要看JDK源码。总结比较重要的源码:List、Map、Set实现类的源码;ReentrantLock和AQS的源代码;CAS机制以及??如何使用CAS机制实现AtomicInteger;线程池的实现原理;Object类中的方法以及每个方法的作用。6、数据库union和unionall的区别,leftjoin,几种索引及其区别,数据库性能优化。7.数据结构与算法分析数组和链表是基础。栈和队列稍微深一点,但不难。树木非常重要。比较重要的树是AVL树和红黑树。他们的具体实现你不需要了解,但是你必须知道什么是二叉搜索树,什么是平衡树,AVL树和红黑树的区别。8.Java虚拟机Java虚拟机内存布局GC算法和几种垃圾收集器和类加载机制,即双亲委派模型Java内存模型happens-before规则volatile关键字使用规则9.Web分布式中的一些问题Session的几种实现方式Session和Cookie的区别和联系以及Session的实现原理。get/post的区别,forward/redirection的区别,HTTPS一致性哈希算法的实现原理2、Java面试题1Java基础1.1Java基本语法面向对象特性java中四种修饰符的局限性重载和重载是什么抽象类和接口的区别?Java基本数据类型int和Integer有什么区别?说说&和&&的区别。final、finally、finalize的区别。Object类中的方法equals和==。List和Map的区别Arraylist和LinkedList的区别ArrayList和Vector的区别是2的N次方的大小HashMap、HashTable、ConcurrentHashMap的区别1.3JavaIO和NIO什么是位(Bit),什么是位一个字节(Byte),什么是字符(Char),它们的长度是多少,又是什么?java中有几种流类型字符流和字节流有什么区别什么是java序列化,java序列化如何实现?IO和NIO的区别ByteBuffer和StringBuffer有什么区别什么是内存映射缓冲区什么是直接缓冲区vs.非直接缓冲区有什么区别JDK1.7版本中存在NativeNIOepollbug2多线程2.1线程的基本概念线程和进程的区别线程和进程的区别线程的创建方式有哪些Callable和Future线程生命周期的理解ThreadLocal原理分析sleepwait和notify的区别notify和notifyAll的区别sleep(),join(),yield()有什么区别2.2线程池为什么要使用线程池线程池的几种实现线程池的实现原理线程池的停止方法2.3Locksynchronized关键字的用法,其优缺点synchronized和lock的区别volitile关键字的作用,CAS的原理概念以及悲观锁和乐观锁的理解可重入锁的使用和实现3数据库数据库锁,行锁物性MySQL索引注意事项数据库索引原理常用存储MySQL数据库引擎4算法排序算法B+树红黑树5框架BeanFactory和ApplicationContext有什么区别SpringBean生命周期SpringSingleton实现原理SpringIOC如何实现SpringAOPSpringAOP实现原理动态代理(cglib和JDK)SpringFrameworkM中使用了哪些设计模式VC设计思路SpringMVC运行流程SpringMVCController如何处理参数6网络计算机网络模型TCP、UDP区分三次握手,四次握手,为什么四次握手长连接和短连接连接池适合长连接还是短连接https原理PS:这个是之前面试过程中遇到比较多的问题,没看懂。我觉得比较重要,也参考了网上别人的一些面试题。欢迎补充。
