看书:Java程序员面试宝典
java基础
Java基础:
面向对象思想:类与对象、继承、接口、多态、static、final、内部类
Error、Exception及其分类
String,字符串常量,变量,存在哪里,实现原理,StringBuffer和StringBuilder,java7以前String循环拼接问题
集合:HashMap、LinkedList与ArrayList的区别,扩容机制、TreeMap、HashTable、等等
IO:各种流
反射机制、动态代理等
还有很多。。。。。。
怎么快速复习?-----Java8API+各种博客、技术文档
一:JVM
- 内存模型以及分区,对象创建时的内存布局
- 判断一个对象是否存活:引用计数和可达性分析
- GC的三种收集方法
- 垃圾收集器有哪些?重点CMS和G1
- 新生代、老年代、永久代、Eden区、Survivor1、Survivor2
- Minor GC和Full GC的区别
- 分配担保机制
- 类的加载过程
- 类加载器的分类
- 双亲委派模型
- 静态分派和动态分派
- 字节码指令用于方法调用:invokevirtual、invokeinterface、invokespecial、invokestatic
java类的加载机制、流程
JVM内存划分、java1.8之后与之前的区别
垃圾回收、分代回收机制
调优、各种参数
内存泄漏,现象,原因,解决方法 jmap、jstack等
二:并发
- 什么是死锁,场景,避免和解决
- CVS操作
- 什么是线程,线程生命周期
- java如何使用多线程(Runnable和Thread)
- 什么是守护线程
- 如何安全终止线程,stop,resume,suspend及其缺点
- volatile关键字,是否保证原子性,优缺点
- join的使用
- ThreadLocal原理
- synchronized关键字和wait,notify,notifyAll
- Lock接口,可重入锁ReentrantLock、读写锁ReadWriteLock
- ReentrantLock与synchronized的区别
- ConcurrentHashMap的实现原理以及与SynchronizedMap的区别
- 阻塞队列的实现原理
- CountDownLatch、CyclicBarrier、Semaphore
- 线程池原理
- Executor框架与FutureTask
- 单例模式的多种写法(DCL重要)
- 生产者与消费者模型
- 分割线
- 线程和进程 并发和并行 时间片抢占、java共享内存模型
- synchronized、wait、notify
- lock
- volatile
- 原子型(atomic)变量
- java1.5以后引入的并发包
- 乐观锁与悲观锁、互斥锁、自旋锁
- 可重入锁
- 线程池,参数,原理,执行机制,阻塞队列(BlockingQuene)
三:设计模型
一、设计模式七大基本原则(了解)
二、常用设计模式
工厂模式
单例模式
适配器模式
装饰者模式
代理模式
观察者模式
迭代器模式
策略模式
桥接模式
外观模式
原型模式
框架
不要介意用没用过框架,在会用的基础上,重点要掌握实现原理
Spring 的IOC、AOP原理,Bean生命周期,Bean的配置(单例还是多例)
Struts已经过时,可以不看
一些orm框架原理(hibernate,mybatis)
如何复习:自己动手搭一个demo
开放性题目
例如300G的随机数进行排序这种题目
开拓技术眼界,走向架构师之路
- 1.由阿里双十一引发的思考?
分布式系统架构 - 2.各种中间件:
rpc:原理,Hessian、Dubbo、Thrift、HSF
消息中间件:JMS、kafka、RocketMQ、RabbitMQ
缓存:Redis,Memcached
分库分表:TDDL - 3.可以发展的技能:
Hadoop,MR,Spark Storm等大数据分析技术
1.8以后的函数式编程
ELK(ElasticSearch + LogStash + Kibana)
容器云(Docker)