作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能。然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 万,而自己却囊中羞涩。于是你也想看看新机会,找个新平台,好好发展。
但是面试的时候,当那个笑眯眯的面试官问出那些你再熟悉不过的 Java 问题时,你只是感觉似曾相识,却怎么也回答不到点上。比如 HashMap 的工作原理,再或者 volatile 的使用场景。
这个时候,你可能会怀疑自己的能力,也痛恨为什么当初自己没有好好复习。
该新版文档在 Github 上上传一个星期已经收获 30K+star 的 Java 核心面试神技(这参数,质量多高就不用我多说了吧)非常全面,包涵 Java 基础、Java 集合、JavaWeb、Java 异常、OOP、IO 与 NIO、反射、注解、多线程、JVM、MySQL、MongoDB、Spring 全家桶、计算机网络、分布式架构、Redis、Linux、git、前端、算法与数据结构、MyBatis、RocketMQ、Netty、Dubbo、Zookeeper、分布式缓存、数据结构等等内容非常丰富,已经帮很多人拿下互联网一线公司的 offer。下面我来跟大家一起分享一下。
JavaOOP 什么是 B/S 架构?什么是 C/S 架构Java 都有哪些开发平台?什么是 JDK?什么是 JRE?Java 语言有哪些特点面向对象和面向过程的区别什么是数据结构?Java 的数据结构有哪些?什么是 OOP?类与对象的关系?Java 中有几种数据类型 Java 集合/泛型 ArrayList 和 linkedList 的区别HashMap 和 HashTable 的区别Collection 包结构,与 Collections 的区别泛型常用特点 (待补充)说说 List,Set,Map 三者的区别Array 与 ArrayList 有什么不一样?Map 有什么特点集合内存放于 Java.util 包中, 主要有几 种接口什么是 list 接口说说 ArrayList(数组) Java 异常 Java 中异常分为哪两种?异常的处理机制有几种?如何自定义一个异常try catch fifinally,try 里有 return,finally 还执行么?Excption 与 Error 包结构Thow 与 thorws 区别Error 与 Exception 区别?error 和 exception 有什么区别 Java 中的 IO 与 NIO Java 中 IO 流?Java IO 与 NIO 的区别常用 io 类有哪些字节流与字符流的区别阻塞 IO 模型非阻塞 IO 模型多路复用 IO 模型信号驱动 IO 模型异步 IO 模型JAVA NIO Java 反射 除了使用 new 创建对象之外,还可以用什么方法创建对象?Java 反射创建对象效率高还是通过 new 创建对象的效率高?java 反射的作用哪里会用到反射机制?反射的实现方式:实现 Java 反射的类:反射机制的优缺点:Java 反射 API反射使用步骤(获取 Class 对象、调用对象方法)获取 Class 对象有几种方法利用反射动态创建对象实例 Java 序列化 什么是 java 序列化,如何实现 java 序列化?保存(持久化)对象及其状态到内存或者磁盘序列化对象以字节数组保持-静态成员不保存序列化用户远程对象传输Serializable 实现序列化writeObject 和 readObject 自定义序列化策略序列化 ID序列化并不保存静态变量Transient 关键字阻止该变量被序列化到文件中序列化(深 clone 一中实现) 多线程 &并发JAVA 并发知识库
Java 中实现多线程有几种方法继承 Thread 类实现 Runnable 接口。ExecutorService、 Callable、 Future 有返回值线程基于线程池的方式4 种线程池如何停止一个正在运行的线程notify()和 notifyAll()有什么区别?sleep()和 wait() 有什么区别?volatile 是什么?可以保证有序性吗? JVM java 中会存在内存泄漏吗,请简单描述。64 位 JVM 中,int 的长度是多数?Serial 与 Parallel GC 之间的不同之处?32 位和 64 位的 JVM,int 类型变量的长度是多数?Java 中 WeakReference 与 SoftReference 的区别?JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?JRE、JDK、JVM 及 JIT 之间有什么不同?解释 Java 堆空间及 GC? Mysql 数据库存储引擎InnoDB(B+树)TokuDB( Fractal Tree-节点带数据)Memory数据库引擎有哪些InnoDB 与 MyISAM 的区别索引常见索引原则有数据库的三范式是什么第一范式(1st NF - 列都是不可再分) Redis 什么是 Redis?Redis 与其他 key-value 存储有什么不同?Redis 的数据类型?使用 Redis 有哪些好处?Redis 相比 Memcached 有哪些优势?Memcache 与 Redis 的区别都有哪些?Redis 是单进程单线程的?一个字符串类型的智能存储最大容量是多少?Redis 持久化机制缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 Memcached Memcached 是什么,有什么作用?memcached 服务在企业集群架构中有哪些应用场景?Memcached 服务分布式集群如何实现?Memcached 服务特点及工作原理是什么?简述 Memcached 内存管理机制原理?memcached 是怎么工作的?memcached 最大的优势是什么?memcached 和 MySQL 的 querymemcached 和服务器的 local cache(比如 PHP 的 APC、mmap 文件等)相比,有什么优缺点?memcached 的 cache 机制是怎样的?memcached 如何实现冗余机制? MongoDB mongodb 是什么?mongodb 有哪些特点?你说的 NoSQL 数据库是什么意思?NoSQL 与 RDBMS 直接有什么区别?为什么要使用和不使用 NoSQL 数据库?说一说 NoSQL 数据库的几个优点?NoSQL 数据库有哪些类型?MySQL 与 MongoDB 之间最基本的差别是什么?你怎么比较 MongoDB、CouchDB 及 CouchBase?MongoDB 成为最好 NoSQL 数据库的原因是什么?journal 回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?分析器在 MongoDB 中的作用是什么?名字空间(namespace)是什么? Spring 不同版本的 Spring Framework 有哪些主要功能?什么是 Spring Framework?列举 Spring Framework 的优点。Spring Framework 有哪些不同的功能?Spring Framework 中有多少个模块,它们分别是什么?什么是 Spring 配置文件?Spring 应用程序有哪些不同组件?使用 Spring 有哪些方式?什么是 Spring IOC 容器?什么是依赖注入? Spring Boot 什么是 Spring Boot?为什么要用 SpringBootSpring Boot 有哪些优点?Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?运行 Spring Boot 有哪几种方式如何理解 Spring Boot 中的 Starters?如何在 Spring Boot 启动的时候运行一些特定的代码?Spring Boot 需要独立的容器运行吗?Spring Boot 中的监视器是什么?如何使用 Spring Boot 实现异常处理? Spring Cloud 什么是 Spring Cloud?使用 Spring Cloud 有什么优势?服务注册和发现是什么意思?Spring Cloud 如何实现?负载平衡的意义什么?什么是 Hystrix?它如何实现容错?什么是 Hystrix 断路器?我们需要它吗?什么是 Netflix Feign?它的优点是什么?什么是 Spring Cloud Bus?我们需要它吗?什么是微服务什么是服务熔断?什么是服务降级 RabbitMQ 什么是 rabbitmq为什么要使用 rabbitmq使用 rabbitmq 的场景如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息?如何避免消息重复投递或重复消费?消息基于什么传输?消息如何分发?消息怎么路由?如何确保消息不丢失?使用 RabbitMQ 有什么好处? Dubbo 为什么要用 Dubbo?Dubbo 的整体架构设计有哪些分层?默认使用的是什么通信框架,还有别的选择吗?服务调用是阻塞的吗?一般使用什么注册中心?还有别的选择吗?默认使用什么序列化框架,你知道的还有哪些?服务提供者能实现失效提出是什么原理?服务上线怎么不影响旧版本?如何解决服务调用链过长的问题?说说核心的配置有哪些? MyBatis 什么是 Mybatis?Mybaits 的优点MyBatis 框架的缺点MyBatis 框架适用场合MyBatis 与 Hibernate 有哪些不同?#{}和 ${}的区别是什么?当实体类中的属性名和表中的字段名不一样 ,怎么办 ?模糊查询 like 语句该怎么写?通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?如何获取自动生成的(主)键值? ZooKeeper 什么是 Zookeeper?Zookeeper 如何保证了分布式一致性特性?ZooKeeper 提供了什么?Zookeeper 文件系统ZAB 协议?四种类型的数据节点 ZnodeZookeeper Watcher 机制 -- 数据变更通知客户端注册 Watcher 实现服务端处理 Watcher 实现客户端回调 Watcher 数据结构 栈(stack)队列(queue)链表(Link)散列表(Hash Table)排序二叉树前缀树红黑树B-TREE位图 Elasticsearch elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。elasticsearch 的倒排索引是什么elasticsearch 索引数据多了怎么办,如何调优,部署elasticsearch 是如何实现 master 选举的详细描述一下 Elasticsearch 索引文档的过程详细描述一下 Elasticsearch 搜索的过程?Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法lucence 内部结构是什么?Elasticsearch 是如何实现 Master 选举的?Elasticsearch 中的节点(比如共 20 个),其中的 10 个选了一个 master,另外 10 个选了另一个 master,怎么办? Kafka Kafka 是什么partition 的数据文件(offset, MessageSize, data)数据文件分段 segment(顺序读写、分段命令、二分查找)负载均衡(partition 会均衡分布到不同 broker 上)批量发送压缩(GZIP 或 Snappy)消费者设计Consumer Group如何获取 topic 主题的列表生产者和消费者的命令行是什么? 微服务 微服务架构有哪些优势?微服务有哪些特点?设计微服务的最佳时间是什么?微服务架构如何运作?微服务架构的优缺点是什么?单片,SOA 和微服务架构有什么区别?在使用微服务架构时,您面临哪些挑战?SOA 和微服务架构之间的主要区别是什么?微服务有什么特点? Linux 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?怎么查看当前进程?怎么执行退出?怎么查看当前路径?怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当Ls 命令执行什么功能? 可以带哪些参数,有什么区别?查看文件有哪些命令列举几个常用的 Linux 命令你平时是怎么查看日志的?建立软