Java架构直通车——Java基础面试考点清单

基础

  1. 强引用、弱引用、虚引用、软引用
  2. final关键字的作用 (方法、变量、类)
  3. 泛型、泛型继承、泛型擦除
  4. jdk ServiceLoader
  5. LinkedList、LinkedHashMap、LRU
  6. 装饰者模式、代理模式、责任链模式、工厂模式、适配器模式、建造者模式、单例模式、模板模式、观察者模式…
  7. 关于精度损失问题:int、long 超过最大值
  8. 关于注解:元注解的种类、继承java.lang.Annotation、注解的基础类型、注解的常用方法
  9. 关于ClassLoader,类加载器,双亲委派模型

J.U.C

  1. 线程池参数说明,线程池的线程回收、shutdown
  2. 线程池的生命周期?
  3. 线程池的核心模型Worker对象的运作流程是怎样的?
  4. 线程池的拒绝策略有哪4种?
  5. 线程池的提交,execute与submit有什么区别?在实际开发中需要注意哪些问题?
  6. threadlocal原理,数据结构
  7. 并发集合类了解哪些?
    • ConcurrentHashMap
    • CopyOnWrite集合、原理、锁机制
    • ConcurrentLinkedQueue、LinkedTransferQueue、ArrayBlockingQueue、PriorityBlockingQueue、SynchronousQueue、DelayQueue
  8. AQS 原理:
    1. 独占 & 共享
    2. state & CHL队列
  9. 锁:
    1. Synchronized、ReentrantLock、RWLock、Condition、LockSupport、StampedLock、
    2. 概念:CAS 自旋、重入、偏向
  10. volatile:
    1. 多线程共享 & 阻止指令重排序
    2. jvm的逃逸分析 & Tlab & 消除伪共享 & UNsafe &
  11. atomic:
    • CAS的缺点,自旋、ABA问题
  12. atomic 原子性、Reference、referenceArray、longadder

jvm虚拟机

  1. 虚拟机内存模型
  2. 新生代(Eden S0 S1)、老年代 、MetaSpace (比例)
  3. 垃圾回收算法(引用计数、标记压缩、清除、复制算法、分区)、垃圾收集器
  4. GC停顿、吞吐量,进入老年代阈值、大对象回收问题等
  5. jvm性能调优、参数配置
  6. 常用命令:jstat、jmap、jstack等
  7. 内存溢出分析:堆内、堆外 (含义、如何设置)
  8. CPU飙升:死锁、线程阻塞
  9. 关于GC: minor major full
    • stw,安全点等

数据结构&算法

  1. 数组、链表、树、队列…
  2. 关于时间复杂度,时间换空间转换案例
  3. 关于排序、冒泡、快排、递归、二分搜索、位运算

Spring

  1. Spring生命周期,流程梳理
  2. Spring扩展点作用
  3. Spring IOC AOP 基本原理
  4. 动态代理
  5. BeanPostProcessor 作用?
  6. ApplicationContextAware 的作用和使用?
  7. BeanNameAware与BeanFactoryAware的先后顺序?
  8. InitializingBean 和 BeanPostProcessor 的after方法先后顺序?
  9. ApplicationListener监控的Application事件有哪些?
  10. Spring模块装配的概念,比如@EnableScheduling @EnableRetry @EnableAsync,@Import注解的作用?
  11. ImportBeanDefinitionRegistrar 扩展点用于做什么事情?
  12. ClassPathBeanDefinitionScanner 的作用?
  13. NamespaceHandlerSupport 命名空间扩展点的作用?
  14. 如何实现动态注入一个Bean?
  15. 如何把自定义注解所在的Class 初始化注入到Spring容器?
  16. BeanDefinition指的是什么,与BeanDefinitionHolder的区别,Spring如何存BeanDefinition实例?
  17. ASM 与 CGlib
  18. Spring的条件装配,自动装配

RPC通信框架

Dubbo

  1. Dubbo的Spi机制?
  2. Dubbo的核心模型 invoker、invocation、filter
  3. Dubbo的隐式传递?
  4. Dubbo的泛化调用?
  5. Dubbo的export与importer时机?
  6. Dubbo的服务调用过程?
  7. Dubbo的负载均衡策略?
  8. Dubbo的集群容错?

网络通信

IO / NIO

  1. IO NIO区别?
  2. 多路复用的概念,Selector
  3. Channel的概念、Bytebuf的概念,flip、position…
  4. FileChannel 如何使用?
  5. RAF使用,seek、skip方法

Netty

  1. 关于Netty的Reactor实现?
  2. Netty的ByteBuf有哪些?
  3. 内存与非内存Bytebuffer的区别与使用场景?
  4. 池化与非池化buffer的区别与使用场景?
  5. 关于Netty的请求Buffer和响应Buffer?
  6. Netty的ChannelPipeline设计模式?
  7. Netty的核心option参数配置?
  8. Netty的ChannelInboundHandlerAdapter和SimpleChannelInboundHandler关系?
  9. Netty的EventLoop核心实现?
  10. Netty的连接管理事件接口有哪些常用方法(ChannelDuplexHandler)?
  11. Netty的编解码与序列化手段
  12. Netty的FastThreadLocal实现?
  13. Netty中应用的装饰者 和 观察者模式在哪里体现?

MQ

  1. API使用,常用生产消费模型,集群架构搭建
  2. 常见问题,消息可靠性投递、幂等性保障
  3. 概念、原理、存储、消息投递、通信机制、性能相关优化
  4. MQ常见的作用于目的、服务解耦、削峰填谷等

RocketMQ
Kafka
RabbitMQ
ActiveMQ

缓存

  1. 内存缓存
  2. 堆外内存缓存 回收释放
  3. 缓存穿透、雪崩、热点Key、大Key、无底洞问题,缓存更新与淘汰、缓存与数据库的一致性

Redis

  1. Redis的幂等性
  2. Redis的分布式锁实现
  3. Redis的原子性,Redis的特点
  4. Redis集群相关问题、一致性hash、slot概念等
  5. 什么是 Redis?
  6. .Redis 的数据类型?
  7. 使用 Redis 有哪些好处?
  8. Redis 相比 Memcached 有哪些优势?
  9. Memcached 与 Redis 的区别都有哪些?
  10. Redis 是单进程单线程的吗?为何它那么快那么高效?
  11. 一个字符串类型的值能存储最大容量是多少?
  12. Redis 的持久化机制是什么?各自的优缺点?
  13. Redis 常见性能问题和解决方案有哪些?
  14. Redis 过期键的删除策略?
  15. Redis 的回收策略(淘汰策略)?
  16. 为什么Redis 需要把所有数据放到内存中?
  17. Redis 的同步机制了解么?
  18. Pipeline 有什么好处,为什么要用 Pipeline?
  19. 是否使用过 Redis 集群,集群的原理是什么?
  20. Redis 集群方案什么情况下会导致整个集群不可用?
  21. Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
  22. Jedis 与 Redisson 对比有什么优缺点?
  23. Redis 如何设置密码及验证密码?
  24. 说说 Redis 哈希槽的概念?
  25. Redis 集群的主从复制模型是怎样的?
  26. Redis 集群会有写操作丢失吗?为什么?
  27. Redis 集群之间是如何复制的?
  28. Redis 集群最大节点个数是多少?
  29. Redis 集群如何选择数据库?
  30. 怎么测试 Redis 的连通性?
  31. 怎么理解 Redis 事务?
  32. Redis 事务相关的命令有哪几个?
  33. Redis key 的过期时间和永久有效分别怎么设置?
  34. Redis 如何做内存优化?
  35. Redis 回收进程如何工作的?
  36. 都有哪些办法可以降低 Redis 的内存使用情况呢?
  37. Redis 的内存用完了会发生什么?
  38. 一个 Redis 实例最多能存放多少的 keys?List、Set、Sorted Set他们最多能存放多少元素?
  39. MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证Redis 中的数据都是热点数据?
  40. Redis 最适合的场景是什么?
  41. 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
  42. 如果有大量的 key 需要设置同一时间过期,一般需要注意什么?
  43. 使用过 Redis 做异步队列么,你是怎么用的?
  44. 使用过 Redis 分布式锁么,它是什么回事?
  45. 如何预防缓存穿透与雪崩?

Mybatis

  1. mybatis 中 #{}和 ${}的区别是什么?

  2. mybatis 有几种分页方式?

  3. RowBounds 是一次性查询全部结果吗?为什么?

  4. mybatis 逻辑分页和物理分页的区别是什么?

  5. mybatis 是否支持延迟加载?延迟加载的原理是什么?

  6. 说一下 mybatis 的一级缓存和二级缓存?

  7. mybatis 和 hibernate 的区别有哪些?

  8. mybatis 有哪些执行器(Executor)?

  9. mybatis 分页插件的实现原理是什么?

  10. mybatis 如何编写一个自定义插件?

其他技术

Hystrix
Sentinel
高可用服务中间件
Zookeeper / Curator
Nginx
Haproxy
LVS
Haproxy
数据库存储&调度
Sharding-JDBC
ElasticJob
调度平台相关:DAG、airflow等
搜索相关度
ELK ,数据库加速、主搜(算法)
Logback、Slf4j2

Solr & Lucene

发布了385 篇原创文章 · 获赞 326 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/No_Game_No_Life_/article/details/103989207