# java 面试题目 {#java-面试题目}
本文总结常见的 java 面试题目。
提示
本文当前的内容已过时, 没有跟上时代的步伐,后续会抽时间更新。深表歉意!
# 1. java 基础 {#_1-java-基础}
# 1.1 hashtable hashmap 区别 {#_1-1-hashtable-hashmap-区别}
# 1.2 arraylist linklist 区别 {#_1-2-arraylist-linklist-区别}
# 1.3 写一个单例模式 {#_1-3-写一个单例模式}
# 1.4 写个 ajax 请求的示例 {#_1-4-写个-ajax-请求的示例}
# 1.5 如何统计在线用户数 {#_1-5-如何统计在线用户数}
# 1.6 对类的封装和继承的理解? {#_1-6-对类的封装和继承的理解}
# 2. java 高级 {#_2-java-高级}
# 2.1 对线程安全的理解 {#_2-1-对线程安全的理解}
# 2.2 如何保证线程安全 {#_2-2-如何保证线程安全}
# 2.3 多线程有哪些锁?每种锁的用法 {#_2-3-多线程有哪些锁-每种锁的用法}
# 2.4 创建线程有哪些方式,区别是 {#_2-4-创建线程有哪些方式-区别是}
# 2.5 如何取得线程的返回值 {#_2-5-如何取得线程的返回值}
# 2.6 如何解决线程的死锁 {#_2-6-如何解决线程的死锁}
# 2.7 jvm 内存模型的理解?jvm 如何管理内存释放的? {#_2-7-jvm-内存模型的理解-jvm-如何管理内存释放的}
# 2.8 jvm 类加载方式? {#_2-8-jvm-类加载方式}
# 2.9 想在程序异常退出前先做些异常处理,如何实现? {#_2-9-想在程序异常退出前先做些异常处理-如何实现}
# 2.10 用过哪些设计模式吗? {#_2-10-用过哪些设计模式吗}
# 2.11 http 方法有哪些?区别?restful 接口如何设计? {#_2-11-http-方法有哪些-区别-restful-接口如何设计}
# 2.12 这段代码的时间复杂度? {#_2-12-这段代码的时间复杂度}
# 2.13 接口和抽象类的区别? {#_2-13-接口和抽象类的区别}
# 2.14 多态性表现在哪些方面? {#_2-14-多态性表现在哪些方面}
# 2.15 实现集合接口的有哪些类?区别是? {#_2-15-实现集合接口的有哪些类-区别是}
# 2.16 socket 开发的步骤 {#_2-16-socket-开发的步骤}
# 2.17 用过的版本控制系统有哪些?区别是? {#_2-17-用过的版本控制系统有哪些-区别是}
# 2.18 用过的项目构建工具有哪些?区别是? {#_2-18-用过的项目构建工具有哪些-区别是}
# 2.19 有看过 spring 源码吗? {#_2-19-有看过-spring-源码吗}
# 3. spring {#_3-spring}
# 3.1 如何理解 spring 事务的隔离性和传播性? {#_3-1-如何理解-spring-事务的隔离性和传播性}
# 3.2 如何理解 spring? {#_3-2-如何理解-spring}
# 3.3 springmvc 的工作原理 {#_3-3-springmvc-的工作原理}
# 3.4 如何写自定义 filter {#_3-4-如何写自定义-filter}
# 3.5 spring 容器实例是单例吗? {#_3-5-spring-容器实例是单例吗}
# 3.6 spring 控制事务有哪些方式? {#_3-6-spring-控制事务有哪些方式}
# 3.7 springboot 和 springmvc 的区别? {#_3-7-springboot-和-springmvc-的区别}
# 3.8 对 springcloud 的熔断器如何理解? {#_3-8-对-springcloud-的熔断器如何理解}
# 3.9 对 springboot 和 spring cloud 的理解? {#_3-9-对-springboot-和-spring-cloud-的理解}
# 4. 数据库 {#_4-数据库}
# 4.1 mysql 有几种关联查询,区别? {#_4-1-mysql-有几种关联查询-区别}
# 4.2 如果某条 sql 语句性能较差,你该如何优化? {#_4-2-如果某条-sql-语句性能较差-你该如何优化}
# 4.3 如何设计数据库,会遵从哪些规则? {#_4-3-如何设计数据库-会遵从哪些规则}
# 4.4 有 2 个实体表以及 1 个关系表。实体表数据量大,导致关系表数据量更大,那么查询关系数据会很慢,如何解决? {#_4-4-有-2-个实体表以及-1-个关系表。实体表数据量大-导致关系表数据量更大-那么查询关系数据会很慢-如何解决}
# 4.5 mysql 索引类型有哪些?区别?mysql 索引的实现原理? {#_4-5-mysql-索引类型有哪些-区别-mysql-索引的实现原理}
# 4.6 dao 层用过哪些框架?hibernate 和 mybatis 区别有哪些? {#_4-6-dao-层用过哪些框架-hibernate-和-mybatis-区别有哪些}
# 5. linux {#_5-linux}
# 5.1 如何查看 cpu,内存和磁盘的当前运行状况? {#_5-1-如何查看-cpu-内存和磁盘的当前运行状况}
# 5.2 要从众多的日志文件中检索 error 类的日志,如何做? {#_5-2-要从众多的日志文件中检索-error-类的日志-如何做}
# 5.3 awk 和 sed 用过吗?怎么用? {#_5-3-awk-和-sed-用过吗-怎么用}
# 5.4 如何通过一条命令把本地文件传输到远端服务器上?如果本机和服务器不在同一网段呢? {#_5-4-如何通过一条命令把本地文件传输到远端服务器上-如果本机和服务器不在同一网段呢}
# 5.5 部署程序的具体步骤是? {#_5-5-部署程序的具体步骤是}
# 6. 运维和架构 {#_6-运维和架构}
# 6.1 对微服务的理解? {#_6-1-对微服务的理解}
# 6.2 对 dubbo 框架的理解?它用的是什么序列化方式? {#_6-2-对-dubbo-框架的理解-它用的是什么序列化方式}
# 6.3 对负载均衡和高可用的理解? {#_6-3-对负载均衡和高可用的理解}
# 6.4 docker 和虚拟机的区别? {#_6-4-docker-和虚拟机的区别}
# 6.5 docker 服务挂掉可能的原因有哪些? {#_6-5-docker-服务挂掉可能的原因有哪些}
# 6.6 如何同步服务器之间的数据 {#_6-6-如何同步服务器之间的数据}
# 6.7 rsync 和 scp 的区别 {#_6-7-rsync-和-scp-的区别}
# 7. nosql {#_7-nosql}
# 7.1 用过哪些缓存数据库? {#_7-1-用过哪些缓存数据库}
# 7.2 redis 支持哪些数据类型 {#_7-2-redis-支持哪些数据类型}
# 7.3 redis 支持事务吗 {#_7-3-redis-支持事务吗}
# 8. 其他 {#_8-其他}
# 8.1 了解消息队列?区别是? {#_8-1-了解消息队列-区别是}
# 8.2 kafka 有哪些用途?kafka 是否丢消息,如何解决? {#_8-2-kafka-有哪些用途-kafka-是否丢消息-如何解决}
# 8.3 什么是 oss,和普通存储的区别? {#_8-3-什么是-oss-和普通存储的区别}
# 8.4 写数据到 oss 的同时,能自动生成目录吗? {#_8-4-写数据到-oss-的同时-能自动生成目录吗}
# 8.5 oss 的 bucket 如何创建? {#_8-5-oss-的-bucket-如何创建}
# 8.6 遇到过哪些问题,你是如何解决的? {#_8-6-遇到过哪些问题-你是如何解决的}
# 8.7 你是如何提升自身业务能力和技术能力的? {#_8-7-你是如何提升自身业务能力和技术能力的}
# 8.8 你最擅长的技术是什么? {#_8-8-你最擅长的技术是什么}
# 8.9 你的职业规划是? {#_8-9-你的职业规划是}
# 8.10 你这一生最幸福的事情是?最痛苦的事情是?兴趣爱好有哪些? {#_8-10-你这一生最幸福的事情是-最痛苦的事情是-兴趣爱好有哪些}
# 8.11 画下你现在所做项目的架构图 {#_8-11-画下你现在所做项目的架构图}