- static
- final(String类分析)
- transient(transient小记)
- foreach循环原理(foreach循环原理)
- volatile底层实现(volatile原理)
- equals和hashcode(在Java中正确地使用equals()和hashCode()方法,Java中的equals()和hashcode()之间关系 java提高篇(十三)-----equals()方法总结 如何在JAVA中避免EQUALS方法的隐藏陷阱)
- string,stringbuffer和stringbuilder(Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别,Java:String、StringBuffer和StringBuilder的区别,浅谈 Java 字符串(String, StringBuffer, StringBuilder),JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?, Java中的substring真的会引起内存泄露么?)
- 伪泛型(Java 泛型总结(一):基本用法与类型擦除, 【Java】泛型中 extends 和 super 的区别?, 泛型的PECS原则)
- 自动装箱(Java中的自动装箱与拆箱,java自动装箱拆箱总结)
- Try-with-resources(Java 7中的Try-with-resources)
- 序列化 反序列化(serialVersionUID作用, JAVA序列化, 序列化和反序列化, Java序列化)
- interface 和 abstract class 区别
- 变长参数(Java可变参数 Java 中的变长参数)
- 枚举详解(Java enum的用法详解, Java枚举详解, 通过枚举enum实现单例设计, 枚举单例模式如何防止反射攻击, Java 单例模式的两种高效写法)
- Null详解(Java中有关Null的9件事)
- Java 8 默认方法(Java 8 默认方法(Default Methods))
- List
- ArrayList(【集合框架】JDK1.8源码分析之ArrayList(六), Java集合干货系列-(一)ArrayList源码解析)
- LinkedList(Java 容器源码分析之 LinkedList, JDK1.8源码分析之LinkedList(七))
- Hashtable(Java8 - HashTable源码)
- HashMap(HashMap源码解析,Java 8系列之重新认识HashMap)
- HashMap怎么判断两个元素不是同一个(equals 和 hashcode)
- 多线程操作后果(疫苗:JAVA HASHMAP的死循环,HashMap多线程并发问题分析)
- rehash(Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结)
- ConcurrentHashMap(Java ConcurrentHashMap Best Practices)
- 锁分段技术(ConcurrentHashMap分析)
- 读是否加锁,为什么(探索 ConcurrentHashMap 高并发性的实现机制)
- 迭代器是强一致性还是弱一致性(为什么ConcurrentHashMap是弱一致的)
- null值(java各常用集合类是否接受null值)
- TreeMap(Java提高篇(二七)-----TreeMap)
- Set
- HashSet
- CopyOnWrite容器(Java中的Copy-On-Write容器)
- Queue
- collection包结构(Java集合框架概述:Collection(List, Set, Queue)和Map)
- 你的项目中用到了哪些设计模式,如何使用
- 知道常用设计模式的优缺点(设计模式Java版, 十种设计模式示例归纳)
- 能画出常用设计模式的UML图(常用设计模式介绍及 UML 图讲解)
- 说一下你知道的设计模式,XX设计模式写一下代码,如果需要XX,怎么优化
- 代理模式 AOP
- 单例模式(如何正确地写出单例模式)
Concurrency(Java并发性和多线程介绍目录)
- ConcurrentHashMap(ConcurrentHashMap源码分析--Java8, ConcurrentHashMap源码分析(JDK8版本), jdk1.8的HashMap和ConcurrentHashMap,Java并发编程总结4——ConcurrentHashMap在jdk1.8中的改进)
- 并发怎么控制性能
- 用什么数据结构实现(ConcurrentHashMap源码分析整理)
- 并发编程模式(Java程序性能优化)(多线程设计模式总结, 网络爬虫中的那些多线程设计模式, )
- Thread和Runnable的区别和联系(Runnable VS Thread 及其资源共享问题)
- 多次start一个线程会怎样(Java 线程简介)
- 线程有哪些状态(JAVA线程间的状态转换, Java多线程学习)
- 线程池
- 常用的线程池有几种,这几种线程池有什么区别和联系(java自带线程池和队列详细讲解, Java线程池分析)
- 线程池的实现原理(从使用到原理学习Java线程池, 几种线程池的实现算法分析 )
- 判断什么场景该使用什么样的线程池比较合适
- 多线程同步(40个Java多线程问题总结)
- 锁
- synchronized和ReentrantLock的区别(ReentrantLock和synchronized两种锁定机制, ReentrantLock源码, JDK 5.0 中更灵活、更具可伸缩性的锁定机制)
- synchronized锁普通方法和锁静态方法(静态方法加锁,和非静态方法加锁区别)
- 死锁的原理及排查方法(Java 程序死锁问题原理及解决方案, )
- 假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?(java.util.concurrent下就有现成的类可以使用)(Java的几个同步辅助类, Java并发编程:CountDownLatch、CyclicBarrier和Semaphore)
- Java的wait(), notify()和notifyAll()使用小结(Java的wait(), notify()和notifyAll()使用小结, Java进阶(三)多线程开发关键技术)
- 多线程和多进程(多进程与多线程的乱七八糟的事情, 多进程单线程模型与单进程多线程模型之争, 为什么要了解进程与线程的区别,了解二者的区别有什么意义呢?)
- 进程间通信方式(线程间的通信、同步方式与进程间通信方式)
- 自旋锁和互斥锁 自旋锁原理 什么时候不能用自旋(自旋锁和互斥锁)
- 死锁的查看和避免(Java如何查看死锁?, JAVA死锁和避免死锁, Java 程序死锁问题原理及解决方案, Java死锁范例以及如何分析死锁)
- 守护线程和用户线程的区别(Java线程和多线程(六)——守护线程)
- LinkedBlockingQueue(Java多线程-工具篇-BlockingQueue,BlockingQueue,Java并发阻塞队列(put和take、offer和poll、drainTo)的使用)
- poll(WebMagic中QueueScheduler放使用add,取使用带有synchronized的poll,TODO:poll没有阻塞的特性,但为什么要加sync)
- take
- AtomicInteger
- ReentrantLock和Condition(TODO:java线程等待/通知模型)
- ExecutorService
- ConcurrentHashMap
- ScheduledThreadPoolExecutor(Java线程池源码分析二(ScheduledThreadPoolExecutor), Executor框架延时执行任务及周期性执行任务的方法介绍)
- CountDownLatch, CyclicBarrier, Phaser(Java进阶(四)线程间通信剖析)
- 阻塞IO
- 非阻塞IO
- 多路复用IO
- 异步IO (Java AIO-异步通信)
- Socket IO如何和这四种模型相关联
- NIO
- NIO的原理(NIO使用及原理分析)
- NIO属于哪种IO模型(
NIO并不是严格意义上的非阻塞IO而应该属于多路复用IO) - NIO的三大组成(Java NIO系列教程)
- NIO会阻塞在Selector的select方法上
- Netty框架
- 五中IO模型和原理(Java NIO:浅析I/O模型, 也谈BIO | NIO | AIO (Java版))
- String的hashCode()方法是怎么实现的
- List、Map、Set实现类的源代码
- ReentrantLock、AQS的源代码(AbstractQueuedSynchronizer的介绍和原理分析)
- AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的
- 线程池的实现原理
- Object类中的方法以及每个方法的作用
- JDK默认消息中间件的api,JMS(kafka:一个分布式消息系统)
- Arrays and Strings(leetcode习题分类汇总-Array篇)
- Linked Lists
- Stacks and Queues
树
- 二叉查找树
- 平衡树
- B+树(数据库的索引,为什么要使用这个数据结构)
- AVL树 红黑树 区别
- 红黑树(彻底搞懂红黑树)
- 堆(常见排序算法 - 堆排序 (Heap Sort), 数据结构系列——堆)
- 图
- Bit Manipulation
- Mathematics and Probability
- Recursion and Dynamic Programming
- Sorting and Searching
- 三匹马,找跑得第二快的(冒泡到快排)
- jdk Arrays.sort() (Java 容器 & 泛型:四、Colletions.sort 和 Arrays.sort 的算法, 快速排序—三路快排 vs 双基准, JDK的快速排序算法实现DualPivotQuicksort)
- 算法分析
- Collection.sort方法使用的是哪种排序算法(TimSort 增强型的归并排序)
- 经验: 一步一步优化答案, 重要的是过程
- string contains(为什么java String.contains 没有使用类似KMP字符串匹配算法进行优化?)
- Java实现tail(Java高效实现Tail -f)
- Java重写equals(Java中equals()与hashCode()的原理与设计
- 冒泡排序(白话经典算法系列之一 冒泡排序的三种实现)
- 动态规划(动态规划:从新手到专家)
- Java虚拟机的内存布局(java虚拟机的内存布局及对象加载, Java内存区域与内存溢出异常)
- GC算法及几种垃圾收集器(JVM 垃圾回收器工作原理及使用实例介绍, 垃圾收集器与内存分配策略)
- 类加载机制,也就是双亲委派模型(深入探讨 Java 类加载器)
- Java内存模型(深入理解Java内存模型,Jvm内存模型)
- happens-before规则(happens-before俗解, Java内存访问重排序的研究)
- volatile关键字使用规则(正确使用 Volatile 变量, Java内存模型与Volatile关键字)
- 参数调优(Tomcat中JVM内存溢出及合理配置)
- 调优工具
- OOM
- 四种引用类型(强引用、弱引用、软引用、虚引用)
- finalize(Java避免使用finalizer方法)
- GC在什么时候,对什么东西,做了什么事情(一个面试官对面试问题的分析)
- union和union all的区别(union和union all 的区别)
- left join(关于 MySQL LEFT JOIN 你可能需要了解的三点, 从一个MySQL left join优化的例子加深对查询计划的理解)
- 性能优化(
SQL基础和SQL优化) - 范式和反范式(解释一下关系数据库的第一第二第三范式, 高性能MySQL:范式和反范式)
- 慢查询(MySQL索引原理及慢查询优化)
- 关系型 MySQL (CA)
- 非关系型 Redis MongoDB (CP)
- Dynamo (AP)
- 行存储和列存储(大数据存取的选择:行存储还是列存储?)
- Hibernate
- 性能分析
- 一级二级缓存
- 四个性质ACID
- 【常问】隔离级别(MySQL事务隔离级别)
- 原理(浅析Mysql InnoDB存储引擎事务原理, MySQL InnoDB单机事务原理(一))
- 实现方式(MySQL索引背后的数据结构及算法原理)
- 索引优化问题(a, b, c列的index怎么建,联合索引)(一个mysql多列索引的问题,MySQL索引原理及慢查询优化,mysql索引和优化)
- 查看索引(如何查看数据库或表的索引?)
读锁写锁- 乐观锁 (mysql乐观锁总结和实践)
- 原理(Mysql数据库事务的隔离级别和锁的实现原理分析)
- MVCC实现原理(InnoDB多版本(MVCC)实现简要分析)
- 加锁处理分析(MySQL 加锁处理分析 InnoDB 事务/锁/多版本 实现分析)
- 死锁的处理(MySQL中的锁(表锁、行锁) mysql死锁(deadlock)分析及解决)
- 锁的类型(Mysql InnoDB锁和死锁)
- Innodb中的事务隔离级别和锁的关系(Innodb中的事务隔离级别和锁的关系,InnoDB的锁和事务隔离级别,Innodb 中 RR 隔离级别能否防止幻读?,MySQL的InnoDB的幻读问题)
- 只有单线程,高效
- 引擎
- InnoDB和MyISAM的区别(MySQL存储引擎介绍,MySQL存储引擎InnoDB与Myisam的六大区别,MySQL存储引擎MyISAM与InnoDB的主要区别对比,MySQL存储引擎中的MyISAM和InnoDB,MySQL存储引擎——MyISAM vs InnoDB)
- 水平切分和垂直切分(分布式) 分表问题([MySQL]MySQL分区与传统的分库分表, mysql 分库分表的方法)
- mongo和mysql的对比(MongoDB 与 MySQL 对比, mongodb与mysql相比的优缺点, MySQL与MongoDB的区别)
- 两台服务器之间数据库通信问题,如果有网络超时,故障,如何处理(以2个银行之间转账为例),如何保持实时性(原子性和一致性, CAP,BASE)(分布式系统的事务处理,分布式系统事务一致性解决方案,保证分布式系统数据一致性的6种方案)
- 谈谈分布式Session的几种实现方式(常用的四种)
- 讲一下Session和Cookie的区别和联系以及Session的实现原理([]谈谈分布式Session的几种实现方式,Session和Cookie的区别和联系以及Session的实现原理](http://aoyouzi.iteye.com/blog/2310193))
Servlet(Servlet 工作原理解析)
- web.xml里面的内容(使用 实现原理)
- Filter
- Servlet
- Listener
- get/post的区别
- forward/重定向的区别
- HTTPS的实现原理
- 协议
- 输入网址enter发生了什么(当···时发生了什么?)
分布式(谈谈业务中使用分布式的场景)
- CAP BASE(CAP原则(CAP定理)、BASE理论,如何正确理解CAP理论?,CAP理论十二年回顾:"规则"变了)
- Spring(25个经典的Spring面试问答)
- ioc/aop 使用/实现(java反射简单实现注入, 深入解析Java反射(2) - invoke方法, Java深度历险(七)——Java反射与动态代理, Java反射之 getMethod() 与invoke的使用, java动态代理(JDK和cglib))
- 支持哪些事务,怎么支持的(代理模式)
- 设计模式
- Spring bean的生命周期(Spring Bean生命周期)
- Spring bean的作用域(Bean 的作用域)
- Spring AOP的实现原理(AOP和IOC的概念和实现细节以及举例你在项目中的的使用场景)(Spring AOP 实现原理与 CGLIB 应用,Spring Ioc实现机制——简析,关于 Spring AOP (AspectJ) 你该知晓的一切)
- 画一下Spring的Bean工厂实现的UML图
- 循环引用问题(令人混淆的Spring环境的循环依赖)
- 注解(spring注解原理剖析与实现,详解 Spring 3.0 基于 Annotation 的依赖注入实现)
- Spring分发请求的过程(Spring MVC请求流程和Spring MVC DispatcherServlet)
- 事务传播 隔离级别(从代理到Spring事务3-Spring事务, Spring事务源码分析(一)Spring事务入门, spring事务-说说Propagation及其实现原理, Spring 事务管理高级应用难点剖析: 第 1 部分)
- spring与线程(Spring与线程)
- Tomcat
- 源码
- 责任链模式
- 一个简单servlet容器实现代码博主抄的《how tomcat works》
- 涉及到的设计模式(Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析)
- pipline逐级调用valve时发生错误如何处理(tomcat架构分析(valve机制))
- BIO和NIO(tomcat bio nio apr 模式性能测试与个人看法)
- 用到的线程池细节(线程池的原理,tomcat线程池策略)
- 负载均衡
- 一致性hash(MemCache超详细解读, 一致性Hash算法,Java代码实现的深入研究)
- SOA和RPC(面向服务体系,大型分布式架构 Dubbo) (RPC-client异步收发核心细节?)
- 消息队列原理 消息队列如何保证可靠(消息队列设计精要)
- 大型网站系统与Java中间件实践(大型网站系统与Java中间件实践)
- 高并发 10w并发量(秒杀系统架构分析与实战)
- 安全
- https(HTTPS背后的加密算法, 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理,Java 和 HTTP 的那些事(四) HTTPS 和 证书, HTTPS 协议详解, 详解https是如何确保安全的?)
- 加密算法(Notes on Cryptography Ciphers)
- TLS(TLS 握手优化详解, SSL/TLS原理详解)
- SQL注入 XSS漏洞(总结 XSS 与 CSRF 两种跨站攻击, Spring Security Web应用入门环境搭建, 理解CSRF(跨站请求伪造))
- 阿里中间件(阿里中间件团队介绍)
- 序列化(Java序列化)
- 服务器并发模型 nginx(NGINX的并发模型, nginx并发模型与traffic_server并发模型简单比较, NGINX引入线程池 性能提升9倍, Apache和Nginx比较, apache与nginx对比)
- Kafka(kafka数据可靠性深度解读, Kafka文件存储机制那些事)
- j2ee数据分层(J2EE(四)- po,vo,bo,pojo,dto,dao区别)
- 单点登陆(Single sign in)
- 秒杀系统
- MyBatis中$和#的区别(mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译)
- 基本概念(实时计算系统Storm学习笔记)
- 通信(【源码分析】storm拓扑运行全流程源码分析)
- 序列化使用kryo(序列化)
- thrift(Thrift序列化/反序列化方法对比)
- disrupter(【系统架构】聊聊Disruptor)
- tcp/ip tcp和udp的区别和联系 tcp消息重发 time wait(Linux下套接字详解(一)----TCP/UDP的区别与联系)
- tcp拥塞控制, 怎么判断拥塞(TCP 的那些事儿(下))
- 延时 网络抖动
- tcp粘包(TCP粘包与拆包——基于Netty)
- 长连接(面试时如何优雅的谈论HTTP/1.0/1.1/2.0)
- 服务端推送(Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE)
- HTTP和TCP 全双工 or 半双工(http协议和websocket协议的区别)
- x86有哪些寄存器你用过
- 死锁, 有没有碰到过死锁, 如何判断死锁, 代码如何规避, 银行家算法
- 进程与线程的区别(进程,线程 ->iOS 多线程 runloop)
- 管程概念(管程)
- linux怎么看内存占用 Cache Buffer区别 (Ubuntu 使用top/free查看内存占用大的原因, Linux下查看内存使用情况方法总结)
- 什么时候切到swap分区(虚拟内存) (linux swap交换分区说明/管理)
- 红黑树 红黑树的插入算法