开端之前,先说一下我十分推荐的一种学习办法:

带着问题学习或许预备面试。

别的,预备面试的小伙伴,必定要根据本身情况制定好复习计划! 并且,你最好还要时不时自测一下,对着一些面试常见的问题进行自问。

最近,我剖析了上百份大中小厂的面经,整理了 Java 面试中最最最常问的一些问题!小伙伴们能够对照着这篇文章学习或许预备面试。

内容会持续完善,欢迎你在评论区说出你遇到的高频面试题!

以下一切问题的答案能够参考(大部分都能找到):JavaGuide(「Java 学习+面试攻略」一份包括大部分 Java 程序员所需求掌握的核心常识。预备 Java 面试,首选 JavaGuide!)。

Java

根底

  1. Java 中的几种根本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
  2. String 、 StringBufferStringBuilder 的差异是什么? String 为什么是不可变的?
  3. String s1 = new String("abc");这段代码创立了几个字符串方针?
  4. == 与 equals?hashCode 与 equals ?
  5. 包装类型的缓存机制了解么?
  6. 主动装箱与拆箱了解吗?原理是什么?
  7. 深复制和浅复制差异了解吗?什么是引用复制?
  8. 谈谈对 Java 注解的了解,处理了什么问题?
  9. Exception 和 Error 有什么差异?
  10. Java 反射?反射有什么缺点?你是怎样了解反射的(为什么结构需求反射)?
  11. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
  12. 内部类了解吗?匿名内部类了解吗?
  13. BIO,NIO,AIO 有什么差异?

参考答案:Java 根底常见面试题总结

Java 调集结构

  1. 说说 List,Set,Map 三者的差异?三者底层的数据结构
  2. 有哪些调集是线程不安全的?怎样处理呢?
  3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
  4. HashMap 和 Hashtable 的差异?HashMap 和 HashSet 差异?HashMap 和 TreeMap 差异?
  5. HashMap 的底层完成
  6. HashMap 的长度为什么是 2 的幂次方
  7. ConcurrentHashMap 和 Hashtable 的差异?
  8. ConcurrentHashMap 线程安全的具体完成办法/底层具体完成

参考答案:Java 调集常见面试题总结

jvm

  1. jvm 内存结构
  2. jvm 调优参数
  3. 什么是类加载?何时类加载?类加载流程?
  4. 知道哪些类加载器。类加载器之间的联系?
  5. 类加载器的双亲派遣了解么? 结合 Tomcat 说一下双亲派遣(Tomcat 怎样打破双亲委托机制?…)。
  6. 为什么需求双亲派遣
  7. Java 内存模型
  8. 栈中寄存什么数据,堆中呢?
  9. 大方针放在哪个内存区域
  10. 堆区怎样分类
  11. 废物收回有哪些算法
  12. GC 的全流程
  13. GC 中老年代用什么收回办法?

参考答案:

  • Java 内存区域详解(重点)
  • JVM 废物收回详解(重点)
  • 类文件结构详解
  • 类加载进程详解
  • 类加载器详解(重点)

多线程

  1. 线程和进程的差异。
  2. 什么是上下文切换?
  3. 什么是线程死锁?怎样避免死锁?
  4. 乐观锁和悲观锁了解么?
  5. 说说 sleep() 办法和 wait() 办法差异和共同点?
  6. Java 线程池有哪些参数?堵塞行列有几种?回绝战略有几种?新线程添加的流程?
  7. 完成 Runnable 接口和 Callable 接口的差异。
  8. 讲一下 JMM(Java 内存模型)。volatile 关键字处理了什么问题?说说 synchronized 关键字和 volatile 关键字的差异。
  9. AQS 原理了解么?AQS 组件有哪些?
  10. 用过 CountDownLatch 么?什么场景下用的?

参考答案:Java 并发常见面试题总结

数据库

MySQL

根底

  1. 非联系型数据库和联系型数据库的差异?
  2. 业务的四大特性了解么?
  3. MySQL 业务阻隔级别?默许是什么级别?
  4. 乐观锁与悲观锁的差异?
  5. MySQL 数据库两种存储引擎的差异?

索引

  1. 为什么索引能进步查询速度?
  2. 集合索引和非集合索引的差异?非集合索引必定回表查询吗?
  3. 索引这么多长处,为什么不对表中的每一个列创立一个索引呢?(运用索引必定能进步查询性能吗?)
  4. 索引底层的数据结构了解么?Hash 索引和 B+树索引好坏剖析
  5. B+树做索引比红黑树好在哪里?
  6. 最左前缀匹配准则了解么?
  7. 什么是掩盖索引

进阶

  1. 一条 SQL 语句在 MySQL 中怎样履行的?
  2. explain 指令了解么?
  3. 简略说一下 SQL 调优思路。
  4. 简略说一下大表优化的思路。
  5. 分库分表了解么?为什么要分库分表?有哪些常见的分库分表东西(sharding-jdbcTShardingMyCAT…)?

参考答案:

  • MySQ 常见面试题总结
  • 读写别离和分库分表详解

Redis

  1. 分布式缓存常见的技术选型计划有哪些?说一下 Redis 和 Memcached 的差异和共同点
  2. 说一下有缓存情况下查询数据和修改数据的流程。
  3. Redis 有哪些数据结构?SDS 了解么?
  4. Redis 内存满了怎样办?
  5. Redis 内存淘汰算法除了 LRU 还有哪些?
  6. Redis 给缓存数据设置过期时刻有啥用? Redis 是怎样判别数据是否过期的呢?
  7. Redis 业务了解么?(Redis 能够经过 MULTI,EXEC,DISCARD 和 WATCH 等指令来完成业务功用)
  8. 缓存穿透和缓存雪崩问题了解么?有哪些处理办法?
  9. 怎样根据 Redis 完成分布式锁?

参考答案:

  • 缓存根底常见面试题总结
  • Redis 常见面试题总结

网络

  1. OSI 与 TCP/IP 各层的结构与功用,都有哪些协议?为什么网络要分层?
  2. 计算机网络的一些常见状况码
  3. ping 所运用的协议
  4. TCP 的三次握手与四次挥手的内容? TCP 为什么衔接是三次握手而断开是四次握手?
  5. TCP 与 UDP 的差异及运用场景
  6. TCP 是怎样确保传输的可靠性
  7. 一次完好的 HTTP 恳求所经的过程
  8. HTTP 协议了解么?HTTP 是根据 TCP 仍是 UDP 的?
  9. HTTP 报文的内容简略说一下! HTTP 恳求报文和响应报文中有哪些数据?
  10. HTTP 和 HTTPS 的差异了解么?
  11. HTTP 恳求有哪些常见的状况码?
  12. HTTP 长衔接和短衔接了解么?
  13. Cookie 和 Session 的联系
  14. URI 和 URL 的差异是什么?

参考答案:计算机网络常见面试题总结

操作体系

  • 进程和线程的差异
  • 进程有哪几种状况?
  • 进程间的通讯办法
  • 线程间的同步的办法
  • 进程的调度算法
  • 什么是死锁?死锁的四个必要条件,处理死锁的办法
  • 常见的内存管理机制,快表和多级页表
  • 分页机制和分段机制的共同点和差异
  • CPU 寻址了解吗?为什么需求虚拟地址空间?
  • 虚拟内存(Virtual Memory)
  • 页面置换算法

参考答案:操作体系常见面试题总结

算法和数据结构

算法

  1. LRU 算法了解吗?你能完成一个吗?
  2. 写排序算法(快排、堆排)
  3. 运用数组完成一个栈
  4. 运用数组完成一个行列
  5. 完成一个链表、反转链表、
  6. ……

数据结构

  1. 数组 vs 链表
  2. 栈的运用场景
  3. 行列的分类、运用场景
  4. 红黑树的特点、红黑树 vs 二叉查找树
  5. 哈希表、哈希表运用场景
  6. 布隆过滤器了解吗?
  7. ……

体系规划

规划形式

  1. 何为规划形式?有哪些常见的规划形式?
  2. 单例形式了解么?说一下单例形式的运用场景。手写一个单例形式的完成。
  3. 观察者形式了解么?说一下观察者形式的运用场景。
  4. 工厂形式了解么?说一下工厂形式的运用场景。
  5. 责任链形式了解么?哪些开源项目(Netty、MyBatis …)中用到了责任链形式?怎样用的?
  6. SOLID 准则了解么?简略谈谈自己关于单一职责准则和开闭准则的了解。
  7. 阅读 Spring 源码的时候什么规划形式最让你影响深刻?能简略讲讲吗?

参考答案:规划形式常见面试题总结

常见结构

Spring

  1. 什么是 Spring 结构?
  2. 罗列一些重要的 Spring 模块?
  3. 谈谈自己关于 Spring IoC 和 AOP 的了解
  4. Spring Bean 的生命周期说一下
  5. Spring 中的 bean 的效果域有哪些?
  6. 拦截器和过滤器了解么?
  7. Spring 动态署理默许用哪一种
  8. hibernate 和 mybatis 差异
  9. Spring Boot 和 Spring 的差异
  10. 说出运用 Spring Boot 的首要长处
  11. 什么是 Spring Boot Starter?
  12. 介绍一下@SpringBootApplication 注解
  13. Spring Boot 的主动装备是怎样完成的?
  14. Spring Boot 支持哪些嵌入式 web 容器?

参考答案:Spring 常见面试题总结

Netty

  1. BIO,NIO 和 AIO 有啥差异?
  2. Netty 是什么?为啥不直接用 NIO 呢?
  3. 为什么要用 Netty?Netty 运用场景了解么?
  4. 介绍一下 Netty 的核心组件?
  5. Bootstrap 和 ServerBootstrap 了解么?
  6. NioEventLoopGroup 默许的结构函数会起多少线程?
  7. Netty 线程模型了解么?
  8. 什么是 TCP 粘包/拆包?有什么处理办法呢?
  9. Netty 长衔接、心跳机制了解么?

参考答案:Netty 常见面试题总结

权限认证

  1. 认证 (Authentication) 和授权 (Authorization)的差异是什么?
  2. 什么是 Cookie ? Cookie 的效果是什么?怎样在服务端运用 Cookie ?
  3. Cookie 和 Session 有什么差异?怎样运用 Session 进行身份验证?
  4. 假如没有 Cookie 的话 Session 还能用吗?
  5. 为什么 Cookie 无法防止 CSRF 进犯,而 token 能够?
  6. 什么是 Token?什么是 JWT?怎样根据 Token 进行身份验证?
  7. 什么是 OAuth 2.0?
  8. 什么是 SSO(单点登录)?

参考答案:

  • 认证授权根底概念详解
  • JWT 根底概念详解
  • JWT 身份认证优缺点剖析
  • 权限体系规划详解

分布式

分布式理论

  • CAP & BASE 理论详解
  • Paxos 算法详解
  • Raft 算法详解

RPC

RPC 根底:

  1. 了解 RPC 吗?有哪些常见的 RPC 结构?
  2. 假如让你自己规划 RPC 结构你会怎样规划?
  3. 服务之间的调用为啥不直接用 HTTP 而用 RPC?

参考答案:RPC 根底常见面试题总结

Dubbo:

  1. Dubbo 了解吗?
  2. Dubbo 的作业原理了解么?注册中心扮演了什么角色?注册中心挂了能够持续通讯吗?
  3. Dubbo 的负载均衡战略了解么?
  4. Dubbo 的 spi 机制了解么?带来了啥好处?

参考答案:Dubbo 常见面试题总结

分布式 ID

  1. 何为 ID?
  2. 何为分布式 ID?
  3. 一个合格的分布式 ID 需求满意什么要求?
  4. 分布式 ID 常见的生成办法有哪些?(数据库主键自增、数据库的号段形式、UUID、SNOWFLAKE 等等)

参考答案:分布式 ID 常见面试题总结

API 网关

  • 什么是网关?
  • 网关能提供哪些功用?
  • 有哪些常见的网联体系?

参考答案:API 常见面试题总结

分布式锁

根据 Redis 完成分布式锁:

  • 怎样根据 Redis 完成一个最简易的分布式锁?
  • 为什么要给锁设置一个过期时刻?
  • 怎样完成锁的高雅续期?
  • 怎样完成可重入锁?
  • Redis 怎样处理集群情况下分布式锁的可靠性?

根据 ZooKeeper 完成分布式锁:

  • 怎样根据 ZooKeeper 完成分布式锁?
  • 为什么要用暂时次序节点?
  • 为什么要设置对前一个节点的监听?
  • 怎样完成可重入锁?

高并发

音讯行列

  1. 为什么要用音讯行列?
  2. 对比一下常见的音讯行列?
  3. 怎样确保音讯不被重复消费?
  4. 怎样确保音讯消费的次序性?

CDN(内容分发网络)

  • 什么是 CDN ?
  • CDN 的作业原理是什么?

参考答案:CDN(内容分发网络)详解

读写别离和分库分表

  • 什么是读写别离?
  • 主库和从库的数据存在延迟的问题怎样处理?
  • 怎样完成读写别离?主从复制原理是什么?
  • 什么是分库?什么是分表?什么情况下需求分库分表?
  • 常见的分片算法有哪些?
  • 分库分表会带来什么问题呢?
  • 分库分表后,数据怎样迁移呢?

参考答案:读写别离和分库分表详解

体系规划/场景题

  1. 假如有 10 亿个数,只要一个重复,内存只能放下 5 亿个数,怎样找到这个重复的数字?
  2. 怎样规划一个秒杀体系(服务端、数据库、分布式)?分布式体系的规划?
  3. 有一个服务器专门接纳很多恳求,怎样规划?
  4. 假如让你自己规划 RPC 结构你会怎样规划?
  5. 怎样快速呈现一个 stackoverflow 过错?
  6. 怎样规划一个秒杀体系?
  7. 怎样规划一个微博 Feed 流/信息流体系?
  8. 怎样规划一个短链体系?

项目阅历

  1. 说说你的项目中的亮点有哪些?
  2. 项目用户人数有多少?最大在线人数多少?
  3. 画一下你的项目的架构图。
  4. 项目中遇到的困难有哪些?怎样处理的?
  5. xx某块的数据库表是怎样规划的?

HR面

  1. 个人介绍
  2. 平常的兴趣爱好
  3. 对咱们公司的了解
  4. 三个词形容自己
  5. 职业规划
  6. 平常的学习办法
  7. 大学里做过比较有意义的作业
  8. 手里还有哪些 offer
  9. 挑选作业的理由排序(薪资、加班情况之类的)。

经验总结

  1. 学完了某个常识点之后,你能够去看看对应的八股文和常识点总结(javaguide.cn/)。
  2. 多面试,不要害怕失利,多总结经验。
  3. 尽早预备,不论是找作业前、面试前仍是面试后。
  4. 假如是求职方针是中小厂、国企的话,算法相对来说不是那么重要。
  5. 假如你的学历比较一般的话,分外注意要把重心放在自己的项目阅历上。
  6. 熟悉自己的简历。
  7. 电话和视频面试很平常,面试前提前预备一下。
  8. 复盘!!!不管是面试失利仍是成功,都要养成复盘的好习惯。