基础问题
linux和⽹络基础
(1)linux系统内核态和⽤户态是什么,有什么区别?
(2)BIO、NIO、AIO都是什么,有什么区别?
(3)TCP和UDP的区别?
(4)详细叙述TCP3次握⼿,TCP和HTTP的区别,其中字节⾯试官问的最细,他会具体问TCP底层的3
次握⼿的具体实现逻辑,第三次握⼿如果失败会怎样。
建议把TCP关闭时的4次挥⼿也看看,敖丙的⽂章就有,看了⾄少表⾯的东⻄难不倒你们,由于这个是
最基础的问题,如果回答不好,⾯试官的印象分就你懂得。
(5)rpc和http的区别,你知道有什么rpc框架。
(6)https相对http都实现了什么加密⽅式,是对称加密还是⾮对称加密?
(7)⽤linux命令怎么做分组求和,怎么把字符串根据分隔符变成数组(这⾥建议⼤家读读敖丙的linux
命令篇)
JVM基础
(1)简要介绍⼀下JVM虚拟机(这个问题不是把JVM分成JMM,类加载和GC来问,⼀定要想好怎么描
述JVM) (2)简述⼀次GC的过程(Minor gc和Major gc过程还记得么)
(3)JMM是什么?
(4)JVM共享内存都有什么,什么是堆外内存?
(5)GC区域,垃圾回收算法,垃圾回收器,G1、CMS、ParNew等垃圾回收器的简介和之间的区别。
(6)类加载过程(5个过程最好能研究明⽩,因为还涉及到栈帧、局部表量表、操作数栈、动态链接和
⽅法出⼝等知识,去看⼀下敖丙的⽂章就明⽩了)
(7)⼀个ArrayList的两个对象的getClass()得到的结果相同么(理解类加载和Class类类型)
(8)死锁怎么查问题(-XX:+PrintGCDetails) (9)Gc⽇志得会看,尤其问到怎么查OOM问题的时候,你应该知道使⽤jconsole,jstat,jmap,
jvisualvm等的⼯具来查看gc状态,看看是不是年轻代设置太⼩了导致major gc频繁或者内存泄露了。
JAVA基础和多线程基础
(1)synchronized在JDK6做了哪些优化,synchronized和lock的区别
(2)懒汉单例⽤duble check是线程安全的么,为什么要加volatile
(3)Volatile有什么⽤,什么是CAS
(4)什么是happens before原则
(5)什么是AQS
(6)线程sleep和wait的区别,线程join是什么意思
(7)Java都有哪⼏种锁(敖丙的⽂章)
(8)线程池分⼏种类型,其中的coreSize、maxSize、存活时间、等待队列、拒绝策略要清楚
(9)Java乐观锁的实现(CAS+⾃旋)
(10)阻塞队列的实现,⾄少⾃⼰会实现2种阻塞队列的⽅法(单锁,多锁, ReentrantLock,
Condition) (11)CountDownLatch、CyclicBarrier、Semaphore区别,使⽤场景
(12)HashMap是线程安全的么,底层怎么实现的(get,set,resize),JDK1.8之前和之后做了哪些
修改,如果要使得插⼊kv有序需要使⽤哪种HashMap(linkedHashMap,TreeMap),
ConcurrentHashMap线程安全是怎么实现的(JDK1.8前后实现不同)
(13)ArrayList和linkedList的区别,栈和队列的区别。Queue和Deque区别
(14)Netty,Jetty实现原理。
(15)Java 静态代理、动态代理
(16)Forkjoin模型
(17)Java回调
(18)协程和线程的区别
(19)JDK1.8有什么新特性,了解函数式编程么(不了解的看看guava)
数据结构算法和设计模式
(1)设计模式⼀般引申⾃项⽬或者⼯具底层实现,所以需要懂⼀些⽐较常⻅的设计模式,⼯⼚、单
例、观察者、命令、适配器、代理等等
(2)算法主要是查找和排序,所以⾄少要会⼿写主流的排序算法和查找算法
(3)LSM树是怎么实现的。和mysql的B+树有什么区别(LSM树是hbase和levelDB的底层存储的结
构,不懂不应该)
(4)⼆叉树,平衡查找⼆叉树,红⿊树等
(5)栈,数组,链表,队列,双端队列,跳跃表(redis zset)等
spring系列
(1)AOP,IOC概念
(2)Spring cloud组件介绍,具体问的⽐较多的是hytrix和eureka,hytrix主要问怎么实现限流和降级
(线程池和信号量),两种实现⽅式有什么区别,具体熔断时的配置;eureka主要介绍和zookeeper的
区别,以及注册流程
(3)Spring boot配置很多都注解化了,所以常⽤的注解要知道
(4)过滤器和Spring拦截器的区别
消息中间件AMQP
看敖丙的⽂章就够了
redis缓存相关
看敖丙的⽂章就够了
(这两段没笑死我)
其他类型
(1)单点登录系统怎么做(SSO系统)
(2)为什么选择cassandra⽽不是hbase,两者有什么区别



