一、Java
1、Java基础
基本数据类型,变量,修饰符,运算符,元注解,JIT编译器,Java三大特性,继承,重写,重载,抽象类,接口,反射机制,内部类,常量池技术,异常,IO流,泛型,序列化和反序列化等。(每个点最好都吃透,包括原理,底层实现等)
2、Java集合
List:ArrayList,LinkedList,CopyOnWriteArrayList等;
Map:HashMap,LinkedHashMap,ConcurrentHashMap,Hashtable,TreeMap等;
Set:HashSet、TreeSet、LinkedHashSet等;
(各自的区别,底层关键源码,put,get,扩容方法)
- HashMap和Hashtable的区别
- 为什么HashMap线程不安全
- Java集合中的快速失败(fast-fail)机制
- 安全失败机制
- HashMap在1.7和1.8之间的变化
- HashMap的初始容量,加载因子,扩容增量?
- 解决Hash冲突的方法
- 哪些类适合作为HashMap的键?
- Iterator和ListIterator的区别
- 数组和集合List之间的转换
3、并发编程
(1)进程与线程
- 进程与线程的区别
- 线程共享进程的哪些部分
- 并行与并发
- 同步与异步
- 创建线程的方法
- Java的线程调度
- Java中的线程状态
- 线程中常用方法
- 正确地终止线程
- sleep 和 wait 的区别
- join,yield方法
- 守护线程
- 线程安全
- 死锁,活锁,锁死,线程饥饿
- 手写2个线程同步取票代码
- 手写生产者消费者线程代码
(2)锁
- 原子性,可见性与有序性
- AQS
- synchronized
- volatile
- ReentrantLock
- ReadWriteLock
(3)线程池
- 线程池的状态
- 线程池的构造方法的7个参数
- 线程池优势
- 线程池的排队策略
- 线程池的线程异常处理
- 常见的线程池类型
- 常见的线程池阻塞队列
- 工具类CountDownLatch和CyclicBarrier
- ThreadLocal
- Atomic原子类(了解)
4、JVM
这块内容看书吧《深入Java虚拟机》
补充:
- new对象,经历了哪些步骤
- 如何破坏双亲委派机制
5、Java面试题
- StringBuffer与StringBuilder的区别?
- equals()和“==”的区别
- equals()和HashCode()关系
- java和c++的区别
- Java中类的初始化顺序
- Java语言的平台无关性是如何实现的
- 从JVM角度讲讲i++,++i,i=i++
- restful接口和普通http接口有什么区别?
- 代码:使用多线程,交替输出abab
- 为什么java不支持多继承,却支持多实现
- String为什么设置为不可变的?
- 什么是字节码?作用?
- 为什么等待和通知是在 Object 类而不是 Thread 中声明的?
- 用代码实现实现死锁,并恢复
× Object方法之finalize()+
× java的实例一定是分配在堆上的吗?
× 创建对象的4种方式
× Java8的新特性
× java实现同步的几种方式
× 多线程执行时为什么调用的是start()方法而不是run()方法
× 方法A中调用方法B,方法B中调用方法A,会出现什么问题
× 有个整形全局变量a=0,线程一进行a自增,线程二进行a自减,问最后的结果是0吗?
二、MySql
- 索引的类别,底层实现,优化(索引覆盖、最左前缀、索引失效、索引下推)
- 哪些列上适合创建索引
- 哪些列不适合建立索引?
- 其他常见的存储引擎
- 逻辑架构
- 日志模块
- 事务
- 锁机制
- SQL语句
- 查询优化
- 主从复制
- MVCC
- id自增和uuid的选择
三、计算机网络
- OSI七层协议模型
- TCP/IP协议(包括TCP协议,UDP协议,IP协议的报头字段,ARP)
- 三次握手以及四次挥手
- 为什么连接的时候是三次握手,关闭的时候却是四次握手?
- 为什么TIME_WAIT状态需要经过2MSL?
- 为什么不能用两次握手进行连接?
- 如果已经建立了连接,但是客户端突然出现故障了怎么办?
- 滑动窗口
- TCP和UDP协议的区别?
- TCP和UDP相比,如何保证可靠性
- UDP如何实现可靠传输
- TCP粘包问题
- UDP协议的应用?
- TCP/IP协议中的数据包分片与重组功能
- TCP传输数据流程
- 累计确认机制,超时重传机制,流量控制,拥塞控制
- HTTP(请求,响应的头字段,方法的区别,code,)
- cookie和session的区别
- SSL协议
- HTTP1.0,HTTP1.1以及HTTP2.0协议的区别
- 从浏览器中输入一个网址,会发生什么
- HTTPS加密过程
- HTTPs和HTTP的区别
- HTTP缓冲机制
- web攻击(XSS,CSRF以及SSRF,SQL注入)
- ping命令来自什么协议
四、操作系统
1、存储管理
- 物理地址和逻辑地址
- 虚拟内存
- 非连续存储
- linux(内核态,用户态,系统调用,库函数,shell)
- 用户态和内核态的切换
- 如何判断当前是用户还是内核态.
- 系统如何将一个信号通知到进程
2、进程管理
- 进程状态,切换
- 僵尸进程,孤儿进程
- 进程之间常见通信方式
- 线程同步方式
- 进程调度
- Linux五种IO模型
- select、poll、epoll的区别
- 加密
- 数字签名,数字证书
五、设计模式
除了23中设计模式之外,还要知道《生产者消费者模式》