跳到主内容
返回博客
Ernest Chen
7 分钟

Java 基础知识点归纳

面向对象

  • 怎么理解什么是面向对象?

  • 怎么理解 Java 中封装、继承、多态?

  • 为什么需要接口?

  • 接口和抽象类的区别?

  • Object 有哪些方法?9 个

  • Object 中 hashcode 是干什么?

  • Collection 集合容器迭代器 Itertor 是什么?

  • “==”和 equals 区别?

  • hashcode 和 equals 有什么联系

  • 浅拷贝和深拷贝是什么 区别?

  • Java 反射?

  • Java 异常有哪些?

  • Java 的 error 有哪些?


Java 有哪些容器?(每个容器底层需要理解掌握 + 应用场景)

  • HashMap 底层是怎样的?jdk1.7 和 1.8 有什么区别

  • HashMap 怎么扩容的?

  • HashMap 在扩容的时候插入元素会怎样?

  • 为什么 HashMap 在多线程下会出现线程安全问题 - 死循环?

  • ConcurrentHashMap 怎么实现线程安全的?jdk1.7 和 1.8

  • LinkedHashMap 底层是怎样的,怎么实现有序插入?


进程和线程的区别?ps:协程是什么

  • 进程的通信方式有哪些?哪个比较高效,为什么?

  • 线程的通信方式有哪些?(线程通信指的是线程互斥同步)

  • 线程有哪些状态?每个状态具体操作是?

  • 如何创建线程?

  • 继承 Thread 和实现 Runnable 区别

  • 实现 Runnable 和 Callable 有什么区别

  • 线程池有哪些?

  • 线程池有哪些参数,每个代表什么?

  • 线程池的拒绝策略有哪些?

  • 线程池工作机制,每一步是怎样的?

  • 有哪些阻塞队列?分别作用?

  • CyclicBarrier、CountDownLatch、Semaphore 的用法

  • start 和 run 的区别?

  • wait 和 sleep 的区别?

  • 如何解决多线程并发问题?加锁有哪些?

  • synchronized 和 ReentrantLock 的区别

  • 什么是 CAS、AQS 应用场景有哪里?

  • CountDownLatch 是什么?

  • ThreadLocal 是什么?(线程本地变量/存储)

  • Java 内存模型是怎样的?

  • Volatile 是解决什么问题?

  • Volatile 和 Synchronized 区别

  • synchronized 怎么优化加锁过程?锁升级、锁消除过程

  • 什么是 AQS?(AbstractQueuedSynchronizer)

  • 什么是乐观锁、悲观锁?


Java 虚拟机

  • 运行时数据区域<图> 各个区域分别的指责是什么?
  • 垃圾回收?在哪些区域 GC?
  • 如何判断一个对象是否可回收?
  • GCRoot 包含哪些内容?
  • 方法区的回收有哪些对象
  • 垃圾回收算法有哪些?分别是怎样 GC 过程?分代收集算法指的是?
  • 垃圾收集器有哪些?重点 CMS 和 G1 收集器(concurrent mark sweep)
  • 回收策略:什么时候会发生 YoungGC / FullGC(场景)(考虑 Eden、Survivor)
  • 什么时候会发生 FullGC?(Concurrent Mode Failure)(具体使用场景会是怎样会)
  • 内存分配策略有哪些?对象分配优先在哪?如果是大对象尼?
  • 是不是一收集完就开始 GC?为什么
  • 类加载机制是怎样?每个步骤分别指责是?
  • 类加载器有哪些?(三种)
  • 什么是双亲委派模型?作用是什么?(可以加上自定义类加载器 extends ClassLoader 重写 findClass 方法)(ClassNotFoundException)
  • 什么 NIO

Spring

  • Spring 和 SpringBoot 的区别
  • Spring 的 IOC 和 AOP
  • 依赖注入 DI 有哪些
  • Spring 的实现事务的方式有哪些
  • Spring 的事务传播级别有哪些
  • Spring 的事务隔离级别有哪些
  • @Autowird 怎么注入(类型 名称)
  • Spring 中有哪些设计模式?分别有哪些
  • Spring 的单例模式是严格的单例模式吗?为什么
  • 有哪些方法可以实现单例模式?
  • Spring 的三级缓存了解吗

数据库

  • 数据库的事务特性?(四个)
  • 事务并发一致性问题有哪些?分别过程是怎样?(丢失修改)
  • 怎么分别解决并发一致性问题?
  • 事务隔离级别有哪些?
  • 什么是 MVCC?怎么解决并发一致性问题
  • MVCC 解决了哪两种隔离级别?
  • undo 日志用来干嘛?biglog 日志?redo 日志?
  • 如何解决幻读问题?(在 X 隔离级别使用 XX 和 XX)
  • Net-Key Lock 包含什么?
  • 快照读和当前读的区别?
  • 数据库三范式指的哪些?
  • select where group by having
  • inner join left join right join
  • between order by 顺序
  • SQL 优化有哪些?(结构优化 + 查询优化)
  • MySQL 主从复制怎样实现?
  • 为什么读写分离?
  • 为什么需要分库分表?
  • 怎样分库分表?
  • 行级锁和表级锁?(基于索引)

索引

  • MySQL 索引底层怎么实现的?
  • 为什么使用 B+ 树而不是二叉搜索树或者红黑树?
  • 聚簇索引和非聚簇索引是什么?
  • 自适应哈希索引?
  • 联合索引?最左匹配原则?
  • 索引优化有哪些?(哪些情况下索引会失效?)
  • 索引的优点有哪些?
  • 索引使用条件,是不是越多越好?为什么
  • 查询性能优化方式有哪些?
  • innoDB 和 MyISAM 有什么区别?
  • MySQL 数据类型有哪些(tinyint、smallInt、mediumInt、int、bigInt)[8,16,24,32,64 位]
  • int(11)数字代表什么?

Redis 的五大基本类型

  • 键都是字符串,值是不同的对象类型
  • Redis 的过期键删除策略有哪些(三种)分别是怎样,优缺点
  • Redis 的持久化机制会有哪些(两种)分别是怎样的,优缺点
  • 如果一边执行持久化机制,一边执行过期删除策略,redis 会是怎样的操作行为?
  • Redis 的 AOF 是怎样实现?
  • AOF 重写是怎样的?
  • AOF 重写期间服务器进行命令处理,导致数据不一致怎么办?
  • 为什么 Redis 支持高并发量,速度快?
  • Redis 单线程是指的是什么单线程?
  • Redis 分片有了解吗?
  • Redis 怎么实现主从复制?
  • Redis 的内存淘汰策略有哪些?
  • Redis 中会出现哪些问题?(雪崩、击穿、穿透)
  • 如何保证 redis 和 DB 数据一致性问题?

RocketMQ

  • RocketMQ 怎么实现这么高的吞吐量的?
  • RocketMQ 怎么保证消息不丢失?
  • RocketMQ 怎么保证消息不重复消费?
  • RocketMQ 怎么保证消息的有序性?

补充

  • Java 的序列化有哪些?
  • 关于 spring 的问题补充
  • rocketMQ 的问题补充
  • mySQL 的问题
  • Redis 的问题补充
  • bitmap
  • topK 的问题
  • 场景设计题目补充

SQL 和算法