接下来会做一个系列, 分类说明关于Java项目研发和架构工作需要了解的问题

Java语法

Java语法专题1: 类初始化的构造顺序

https://www.cnblogs.com/milton/p/15804995.html

  • 描述一下多级继承中类的构造顺序
  • 给定两段代码, 分别是父类和子类, 写出(或选择)正确的输出

Java语法专题2: 类变量的初始化顺序

https://www.cnblogs.com/milton/p/15805741.html

  • 描述一下多级继承中字段初始化顺序
  • 描述一下多级继承中类变量初始化顺序
  • 写出运行以下代码时的控制台输出

Java多线程

Java多线程专题1: 并发, 并行, 原子操作

https://www.cnblogs.com/milton/p/15805970.html

  • 什么是多线程并发和并行?
  • 什么是线程安全问题?
  • 什么是共享变量的内存可见性问题?
  • 什么是Java中的原子性操作?
  • 为什么long型赋值不是原子操作
  • 什么是Java中的CAS(Compare And Swap)操作, AtomicLong实现原理
  • CAS底层是怎么实现的?
  • 什么是Java指令重排序?

Java多线程专题2: JMM(Java内存模型)

https://www.cnblogs.com/milton/p/15805976.html

  • Java中Synchronized关键字的内存语义是什么?
  • Java中Volatile关键字的内存语义是什么?
  • JDK各版本对volatile的处理有什么不同
  • double-checked locking 问题
  • 什么是伪共享(False Sharing),为何会出现, 以及如何避免?

Java多线程专题3: Thread和ThreadLocal

https://www.cnblogs.com/milton/p/15805979.html

  • 进程, 线程, 协程的区别
  • 讲讲ThreadLocal 是什么
  • ThreadLocal 使用场景
  • ThreadLocal 作为变量的线程隔离是如何实现的?
  • ThreadLocal 实现原理是什么?
  • 说说 InheritableThreadLocal 的实现原理?
  • InheritableThreadLocal 如何弥补 ThreadLocal 不支持继承的特性?
  • ThreadLocalRandom 如何利用 ThreadLocal 的原理来解决 Random 的局限性?
  • Spring 框架中如何使用 ThreadLocal 实现 request scope 作用域 Bean?

Java多线程专题4: 锁的基础实现 AQS

https://www.cnblogs.com/milton/p/15807753.html

  • 谈谈对AQS(AbstractQueuedSynchronizer)的理解

Java多线程专题5: JUC, 锁

https://www.cnblogs.com/milton/p/15807796.html

  • 什么是可重入锁、公平锁、非公平锁、独占锁、共享锁
  • 什么是乐观锁、悲观锁
  • 讲讲 ReentrantLock 原理?
  • Semaphore 的内部实现是怎样的?
  • 谈谈读写锁 ReentrantReadWriteLock 原理?
  • StampedLock 锁原理的理解?
  • 分析下JUC 中倒数计数器 CountDownLatch 的使用与原理?
  • CountDownLatch 与线程的 Join 方法区别是什么?
  • 讲讲对JUC 中回环屏障 CyclicBarrier 的使用?
  • CyclicBarrier内部的实现与 CountDownLatch 有何不同?
  • 常见异步的手段有哪些?

Java多线程专题6: Queue和List

https://www.cnblogs.com/milton/p/15807851.html

  • CopyOnWriteArrayList 如何通过写时拷贝实现并发安全的 List?
  • 随机数生成器 Random 类如何使用 CAS 算法保证多线程下新种子的唯一性?
  • 谈下对基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理的理解?
  • ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全?
  • 基于链表的阻塞队列 LinkedBlockingQueue 原理
  • 阻塞队列LinkedBlockingQueue 内部是如何使用两个独占锁 ReentrantLock 以及对应的条件变量保证多线程先入队出队操作的线程安全?
  • ArrayBlockingQueue
  • ArrayBlockingQueue和LinkedBlockingQueue的区别

JVM

JVM专题1: 类和类加载机制

https://www.cnblogs.com/milton/p/15807907.html

  • Java对象的结构
  • Java 类加载过程?
  • 描述一下 JVM 加载 Class 文件的原理机制?
  • 什么是类加载器?
  • 类加载器有哪些?
  • 什么是类加载器双亲委派模型?
  • 什么是tomcat类加载机制?

JVM专题2: JVM内存结构

https://www.cnblogs.com/milton/p/15807975.html

  • Java 内存分配
  • JVM 内存结构
  • JVM 内存划分
  • 一个堆大小为2G的JVM可能占用的内存
  • Java 8 中的常量池、字符串池、包装类对象池
  • Java 堆的结构是什么样子的?
  • 说说各个区域的作用?
  • 什么是堆中的永久代(Perm Gen space)?
  • Java 中会存在内存泄漏吗, 简述一下?
  • Java Stack 栈结构
  • 深拷贝和浅拷贝

JVM专题3: GC 垃圾回收

https://www.cnblogs.com/milton/p/15808085.html

  • 什么是GC? 为什么要有 GC?
  • 简述一下 Java 垃圾回收机制?
  • 如何判断一个对象是否存活?
  • 垃圾回收的优点和原理, 并考虑 2 种回收机制?
  • 垃圾回收器的基本原理是什么?
  • 垃圾回收器可以马上回收内存吗? 有什么办法主动通知虚拟机进行垃圾回收?
  • 在 Java 中, 对象什么时候可以被垃圾回收?
  • 简述Minor GC 和 Major GC?
  • Java 中垃圾收集的方法有哪些?
  • System.gc() 和 Runtime.gc() 会做些什么?
  • 什么是分布式垃圾回收DGC, 它是如何工作的?
  • 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
  • 讲讲你理解的性能评价及测试指标?
  • jstack如何使用
  • 常用的性能优化方式有哪些?
  • 什么是GC调优?

Spring

Spring专题1: 静态代理和动态代理

https://www.cnblogs.com/milton/p/15808130.html

  • 为什么需要代理模式?
  • 讲讲静态代理模式的优点及其瓶颈?
  • 对Java 接口代理模式的实现原理的理解?
  • 如何使用 Java 反射实现动态代理?
  • Java 接口代理模式的指定增强?
  • 谈谈对Cglib 类增强动态代理的实现?
  • 讲解JDK 动态代理和 CGLIB 代理原理以及区别?

Spring专题2: DI,IOC 控制反转和依赖注入

https://www.cnblogs.com/milton/p/15808166.html

  • Bean的作用域
  • 怎么理解面向切面编程的切面?
  • 讲解OOP与AOP的简单对比?
  • 讲解Spring 框架中如何基于 AOP 实现的事务管理?
  • 谈谈对控制反转的设计思想的理解?
  • 怎么理解 Spring IOC 容器?
  • Spring IOC 怎么管理 Bean 之间的依赖关系, 怎么避免循环依赖?
  • 对Spring IOC 容器的依赖注入的理解?
  • 说说对Spring IOC 的单例模式和高级特性?
  • BeanFactory 和 FactoryBean 有什么区别?
  • BeanFactory 和 ApplicationContext 又有什么不同?
  • Spring 在 Bean 创建过程中是如何解决循环依赖的?
  • 谈谈Spring Bean 创建过程中的设计模式?

数据库和存储

MySQL专题1: 字段和索引

https://www.cnblogs.com/milton/p/15856842.html

  • Float、Decimal 存储金额的区别?
  • Datetime、Timestamp 存储时间的区别?
  • CHAR, VARCHAR, BINARY, VARBINARY 存储字符的区别?
  • MySQL 有哪些存储引擎? 都有什么区别?
  • MySQL 几种存储引擎的应用场景?
  • MySQL索引类型有?
  • 对比一下B+树索引和 Hash索引
  • 聚簇索引和非聚簇索引的区别?
  • 非聚集索引中的聚集索引键
  • B+tree 如何进行优化? 索引遵循哪些原则?
  • 还有什么其他的索引类型, 各自索引有哪些优缺点?
  • 如何管理 MySQL索引?
  • 对Explain 结果中参数的理解?
  • 索引与锁有什么关系?

最新文章

  1. a==null和a.equals("null")的区别
  2. ylbtech-LanguageSamples-Yield
  3. jQuery两句话实现HTML转义与反转义
  4. 用终端直接在桌面生成text文件
  5. EasyUI兼容IE问题
  6. Java设计模式04:常用设计模式之建造者模式(创建型模式)
  7. cocos2dx 字体BMFont,Atlas
  8. eclipse git 一个错误:the current branch is not configured for pull No value for key branch.xxx.merge found
  9. 为什么说http协议是无状态的?
  10. Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)
  11. vue-cli3.0 flexible&px2rem 解决第三方ui组件库样式问题
  12. 浅析 Scala 构造器
  13. Android各版本特性
  14. CSS圆环百分比DEMO
  15. TimerTask的run()方法里面如何调用service层里面的方法
  16. spring boot(一):Hello World
  17. Android之StrictMode
  18. MySQL复制以及调优
  19. 循序渐进学.Net Core Web Api开发系列【5】:文件上传
  20. SDNnet PX Programmming Language

热门文章

  1. 【LeetCode】210. Course Schedule II 解题报告(Python)
  2. 倍福CX5120嵌入式控制器使用教程
  3. Linux学习笔记-韩顺平
  4. 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款
  5. Android studio 报错 Unable to resolve dependency for ‘:app@releaseUnitTest/compileClasspath‘:
  6. MySQL客户端mysql常用命令
  7. 【Warrior刷题笔记】力扣169. 多数元素 【排序 || 哈希 || 随机算法 || 摩尔投票法】详细注释 不断优化 极致压榨
  8. CSS过渡、CSS动画
  9. Hadoop常用命令及基本概念
  10. nginx高并发配置详解