一、java基础
1.final修饰方法、类、成员变量的特点
2.集合框架 ArrayList,HashMap,ConcurrentHashMap(这三个问到的频率最高)
知识点:底层数据结构,知道哪些是线程安全的,线程不安全的,最好阅读一下源码,构造方法有几个,默认参数。(jdk1.8和之前的版本区别)
ConcurrentHashMap 为什么是安全的?看一下put方法;能说出来细节,锁加在什么位置,hash冲突怎么 处理;扩容以后存储顺序位置会发生什么变化。
3.多线程 Lock和Synchronized,join和yield
知识点:两者之间的区别(进阶版:lock的底层实现原理AbstractOwnableSynchronizer,synchronized底层monitor对象)公平锁和非公平锁, Synchronized加在静态方法上和非静态方法上用的锁是什么,补充CAS知识点
4.atomic包下面的AtomicInteger等(保证原子性),volatile保证可见性(指令重排序、内存屏障),ThreadLocal
5.线程池有几种,区别,详细了解一下构造方法的各个参数。进阶:实现线程池的思路
6.java IO和NIO的区别
7.java反射机制,在哪儿用到了
8.深克隆和浅克隆
二、数据结构
1.算法:冒泡排序(至少掌握一种排序算法)、二分法查找
2.手写一个栈 先进后出
3.二叉树、红黑树
三、框架
1.Spring:AOP,IOC 最好能翻阅spring源码,用到的设计模式,隔离级别,传播属性
2.Mybatis中的$和#的区别
3.dubbo:工作原理,集群容错,负载均衡
四、数据库
1.mysql innodb引擎特点;索引B+tree,sql优化,sql分析方法;
2.redis 数据类型,主从原理,持久化方式,事务;
五、jvm
1.gc算法:标记整理、复制、压缩
2.堆、栈、方法区
六、调优
1.tomcat NIO,线程池。
七、线上问题分析方法
1.top命令,jstat,jmap等
八、计算机网络
1.三次握手、四次挥手能画出图,以及各个状态代表的意义
2.http和https
3.TCP和UDP