JAVA面经
JAVA面经
kafka 各组件之间的关系,broker,consumer,topic,consumer group,partition 等
kafka的对于同一个topic 的offset是否只会有一个
spark streaming的原理
redis 各种数据结构的使用场景
mysql索引什么情况下触发
spark 和flink 的区别对比
- Ddos攻击
- java域的关键字以及区别
- hashmap数据结构以及如何计算hashcode,以及地址冲突了怎么办?
- 手撕arraylist实现
- 泛型以及泛型擦除,编译时还是运行时,擦除之后是什么?(object)
- content provider
- https的uri以及过程
- handler、looper、message关系,looper一直运行吗?如何唤醒?关闭屏幕的话handler还在吗?
- anr是什么,原因,如何监控?
- 内存泄漏以及handler 中的内存泄漏
- fragment和activity关系以及优点如何使用生命周期
- . hashmap数据结构和hashtable区别,如何实现hashmap线程安全
- wait sleep区别
- treemap Hashmap区别
- 设计模式具体,以及单例模式的实现方式有哪些,手撕单例模式
- activity生命周期
- ZK如何实现分布式锁,ZK如何执行写流程,ZK的fastElection
- .一个需要:传入一个map,每个key对应的类型都有自己的校验流程,如何设计代码(要求代码维护起来方便),如何实现并发校验?(答的线程池)当一个流程失败,如何将线程池队列中的该流程的任务剔除?
- Redis数据结构
- HashMap (5)
- hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移?
- 什么情况下用HashMap,什么情况用ConcurrentHashMap?
- CHM(3)
- ConcurrentHashMap 在Java7和Java8中的区别?为什么Java8并发效率更好
- ZK如何实现配置中心?Watch机制如何实现(这个和Redis的订阅推送机制差别很大)?
- Redis和Zk如何实现分布式锁?为什么Redis要用lua脚本方式实现?
- redis数据结构?
- redis数据淘汰机制
- 如果Redis有1亿个key,使用keys命令是否会影响线上服务?
Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么 - JVM内存结构,CMS细节
- Java GC机制?GC Roots有哪些?
- AtomicInteger怎么实现原子修改的?
- 三大特性
- 继承的子类异常和父类异常
- hashmap底层
- 高并发:多线程的方式 什么时候用多线程
- 介绍一下SSM
- 线程池Redis底层数据结构
- Redis的hashmap和java的hashmap的区别
- Redis的set的时间复杂度
- Thread 和 Runable的区别
- 类加载机制
- G1和CMS的差别
- 电商项目中秒杀系统实现流程,怎么解决超卖(答 redis son分布式信号量)
- redis son信号量底层原理(答lua脚本),lua脚本怎么保证原子性(不会)
- redis 持久化(提到了RDB持久化笨重会丢失数据,AOF实时性强一点但也会丢失数据)
- redis 持久化消息时宕机了导致分布式信号量没来得及持久化,恢复后信号量的值数据不一致怎么解决(想了一会,面试官提示消息队列,就回答了 redis 恢复后将数据和消息队列的持久化进行比较)
- redis 基本数据类型(中途在zset答了跳表),跳表怎么实现的(说了底层数据结构list, node, level,查找过程)
- JVM运行时数据区介绍一下
- JVM哪些东西是线程独享的(PC计数器,Java虚拟机栈所有)
- JVM堆中的划分,比例(8:1:1),为什么(答复制 算法 效率高,大部分对象存活时间短,所以sur vivo r占比较少)
- JVM怎么判断哪些对象需要回收(可达性分析,GC Roots)
- JUC有看过源码吗?synchronized和ReentrantLock区别(重量级锁底层实现不一样,公平锁和非公平锁实现)
- 公平锁和非公平锁哪个效率高?(这个想了一会,答了非公平锁,公平锁把当前线程直接放队列,非公平锁cas成功就获得锁,少了几次线程切换,解释到中途面试官就打断了,继续问)
- java基本数据类型
- ArrayList和LinkedList区别?你如何理解动态数组中的动态?扩容的底层原理与过程?那么扩容这个过程的时间复杂度?
Java 知识
基础语法:
进阶
框架知识
SpringMVC 视频学习网站
SpringBoot 视频学习网站
Mybatis 视频学习网站
spring + mybatis 我的图解
Spring data jap 有时间就去了解下(尚硅谷)
tomcat 有时间就去了解下
SpringCloud 有时间就去了解下(尚硅谷)
MybatisPlus 有时间就去了解下(尚硅谷)
终极
SpringCloud 相关的技术(微服务直接的调用原理、缓存一致性、秒杀、接口幂等性都知识)
一、Java基础 44 道
-
解释下什么是面向对象?面向对象和面向过程的区别?
-
面向对象的三大特性?分别解释下?
-
JDK、JRE、JVM 三者之间的关系?
-
重载和重写的区别?
-
Java 中是否可以重写一个 private 或者 static 方法?
-
构造方法有哪些特性?
-
在 Java 中定义一个不做事且没有参数的构造方法有什么作用?
-
Java 中创建对象的几种方式?
-
抽象类和接口有什么区别?
-
静态变量和实例变量的区别?
-
12、short s1 = 1;s1 = s1 + 1;有什么错?那么 short s1 = 1; s1 += 1;呢?有没有错误?
-
Integer 和 int 的区别?
-
装箱和拆箱的区别
-
switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
-
16、final、finally、finalize 的区别
-
== 和 equals 的区别?
-
两个对象的 hashCode() 相同,则 equals() 也一定为 true 吗?
-
为什么重写 equals() 就一定要重写 hashCode() 方法?
-
& 和 && 的区别?
-
Java 中的参数传递时传值呢?还是传引用?
-
Java 中的 Math.round(-1.5) 等于多少?
-
如何实现对象的克隆?
-
深克隆和浅克隆的区别?
-
什么是 Java 的序列化,如何实现 Java 的序列化?
-
什么情况下需要序列化?
-
Java 的泛型是如何工作的 ? 什么是类型擦除 ?
-
什么是泛型中的限定通配符和非限定通配符 ?
-
List 和 List 之间有什么区别 ?
-
Java 中的反射是什么意思?有哪些应用场景?
-
反射的优缺点?
-
Java 中的动态代理是什么?有哪些应用?
-
怎么实现动态代理?
-
static 关键字的作用?
-
super 关键字的作用?
-
字节和字符的区别?
-
String 为什么要设计为不可变类?
-
String、StringBuilder、StringBuffer 的区别?
-
String 字符串修改实现的原理?
-
String str = “i” 与 String str = new String(“i”) 一样吗?
-
String 类的常用方法都有那些?
-
final 修饰 StringBuffer 后还可以 append 吗?
-
Java 中的 IO 流的分类?说出几个你熟悉的实现类?
-
字节流和字符流有什么区别?
-
BIO、NIO、AIO 有什么区别?
二、Java异常 9 道
-
finally 块中的代码什么时候被执行?
-
finally 是不是一定会被执行到?
-
try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
-
try-catch-finally 中那个部分可以省略?
-
Error 和 Exception 的区别?
-
运行时异常与受检异常有何异同?
-
throw 和 throws 的区别?
-
常见的异常类有哪些?
-
主线程可以捕获到子线程的异常吗?
三、Java集合 24 道
-
Java 中常用的容器有哪些?
-
ArrayList 和 LinkedList 的区别?
-
ArrayList 实现 RandomAccess 接口有何作用?为何 LinkedList 却没实现这个接口?
-
ArrayList 的扩容机制?
-
Array 和 ArrayList 有何区别?什么时候更适合用 Array?
-
HashMap 的实现原理/底层数据结构?JDK1.7 和 JDK1.8
-
HashMap 的 put 方法的执行过程?
-
HashMap 的 get 方法的执行过程?
-
HashMap 的 resize 方法的执行过程?
-
HashMap 的 size 为什么必须是 2 的整数次方?
-
HashMap 多线程死循环问题?
-
HashMap 的 get 方法能否判断某个元素是否在 map 中?
-
HashMap 与 HashTable 的区别是什么?
-
HashMap 与 ConcurrentHashMap 的区别是什么?
-
HashTable 和 ConcurrentHashMap 的区别?
-
ConcurrentHashMap 的实现原理是什么?
-
HashSet 的实现原理?
-
HashSet 怎么保证元素不重复的?
-
LinkedHashMap 的实现原理?
-
Iterator 怎么使用?有什么特点?
-
Iterator 和 ListIterator 有什么区别?
-
Iterator 和 Enumeration 接口的区别?
-
fail-fast 与 fail-safe 有什么区别?
-
Collection 和 Collections 有什么区别?
四、Java并发 42 道
-
并行和并发有什么区别?
-
线程和进程的区别?
-
守护线程是什么?
-
创建线程的几种方式?
-
Runnable 和 Callable 有什么区别?
-
线程状态及转换?
-
sleep() 和 wait() 的区别?
-
线程的 run() 和 start() 有什么区别?
-
在 Java 程序中怎么保证多线程的运行安全?
-
Java 线程同步的几种方法?
-
Thread.interrupt() 方法的工作原理是什么?
-
谈谈对 ThreadLocal 的理解?
-
在哪些场景下会使用到 ThreadLocal?
-
说一说自己对于 synchronized 关键字的了解?
-
如何在项目中使用 synchronized 的?
-
说说 JDK1.6 之后的 synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗?
-
谈谈 synchronized 和 ReenTrantLock 的区别?
-
synchronized 和 volatile 的区别是什么?
-
谈一下你对 volatile 关键字的理解?
-
说下对 ReentrantReadWriteLock 的理解?
-
说下对悲观锁和乐观锁的理解?
-
乐观锁常见的两种实现方式是什么?
-
乐观锁的缺点有哪些?
-
CAS 和 synchronized 的使用场景?
-
简单说下对 Java 中的原子类的理解?
-
atomic 的原理是什么?
-
说下对同步器 AQS 的理解?
-
AQS 的原理是什么?
-
AQS 对资源的共享模式有哪些?
-
AQS 底层使用了模板方法模式,你能说出几个需要重写的方法吗?
-
说下对信号量 Semaphore 的理解?
-
CountDownLatch 和 CyclicBarrier 有什么区别?
-
说下对线程池的理解?为什么要使用线程池?
-
创建线程池的参数有哪些?
-
如何创建线程池?
-
线程池中的的线程数一般怎么设置?需要考虑哪些问题?
-
执行 execute() 方法和 submit() 方法的区别是什么呢?
-
说下对 Fork和Join 并行计算框架的理解?
-
JDK 中提供了哪些并发容器?
-
谈谈对 CopyOnWriteArrayList 的理解?
-
谈谈对 BlockingQueue 的理解?分别有哪些实现类?
-
谈谈对 ConcurrentSkipListMap 的理解?
五、Java JVM 42 道
-
说一下 Jvm 的主要组成部分?及其作用?
-
谈谈对运行时数据区的理解?
-
堆和栈的区别是什么?
-
堆中存什么?栈中存什么?
-
为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?
-
Java 中的参数传递时传值呢?还是传引用?
-
Java 对象的大小是怎么计算的?
-
对象的访问定位的两种方式?
-
判断垃圾可以回收的方法有哪些?
-
垃圾回收是从哪里开始的呢?
-
被标记为垃圾的对象一定会被回收吗?
-
谈谈对 Java 中引用的了解?
-
谈谈对内存泄漏的理解?
-
内存泄露的根本原因是什么?
-
举几个可能发生内存泄漏的情况?
-
尽量避免内存泄漏的方法?
-
常用的垃圾收集算法有哪些?
-
为什么要采用分代收集算法?
-
分代收集下的年轻代和老年代应该采用什么样的垃圾回收算法?
-
什么是浮动垃圾?
-
什么是内存碎片?如何解决?
-
常用的垃圾收集器有哪些?
-
谈谈你对 CMS 垃圾收集器的理解?
-
谈谈你对 G1 收集器的理解?
-
说下你对垃圾回收策略的理解/垃圾回收时机?
-
谈谈你对内存分配的理解?大对象怎么分配?空间分配担保?
-
说下你用过的 JVM 监控工具?
-
如何利用监控工具调优?
-
JVM 的一些参数?
-
谈谈你对类文件结构的理解?有哪些部分组成?
-
谈谈你对类加载机制的了解?
-
类加载各阶段的作用分别是什么?
-
有哪些类加载器?分别有什么作用?
-
类与类加载器的关系?
-
谈谈你对双亲委派模型的理解?工作过程?为什么要使用
-
怎么实现一个自定义的类加载器?需要注意什么?
-
怎么打破双亲委派模型?
-
有哪些实际场景是需要打破双亲委派模型的?
-
谈谈你对编译期优化和运行期优化的理解?
-
为何 HotSpot 虚拟机要使用解释器与编译器并存的架构?
-
说下你对 Java 内存模型的理解?
-
内存间的交互操作有哪些?需要满足什么规则?