java 面试题目(java高级架构)

 

 

 

 

 

 

 

 

题目信息

java基础:

1. Java 基础

  1. JDK 和 JRE 有什么区别?
  2.  == 和 equals 的区别是什么?
  3.  两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
  4. final 在 java 中有什么作用?
  5.  java 中的 Math.round(-1.5) 等于多少?
  6. 深拷贝和浅拷贝的区别
  7.  String 属于基础的数据类型吗?
  8. java 中操作字符串都有哪些类?它们之间有什么区别?
  9.  String str="i"与 String str=new String(“i”)一样吗?
  10. 如何将字符串反转?
  11. String 类的常用方法都有那些?
  12.  抽象类必须要有抽象方法吗?
  13.  普通类和抽象类有哪些区别?
  14.  抽象类能使用 final 修饰吗?
  15.  接口和抽象类有什么区别?
  16. java 中 IO 流分为几种?
  17.  BIO、NIO、AIO 有什么区别?
  18. Files的常用方法都有哪些?
  19. 在java中守护线程和本地线程区别   java 73题以及答案 (1~73题均有答案)
  20. 线程与进程的区别?    java 73题以及答案 (1~73题均有答案)
  21. 什么是多线程中的上下文切换?   java 73题以及答案 (1~73题均有答案)
  22. 死锁与活锁的区别,死锁与饥饿的区别?   java 73题以及答案 (1~73题均有答案) 
  23. Java中用到的线程调度算法是什么?  java 73题以及答案 (1~73题均有答案)
  24. 什么是线程组,为什么在Java中不推荐使用?  java 73题以及答案 (1~73题均有答案) 
  25. 为什么使用Executor框架?  java 73题以及答案 (1~73题均有答案) 
  26. 在Java中Executor和Executors的区别?  java 73题以及答案 (1~73题均有答案)
  27. 什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?    java 73题以及答案 (1~73题均有答案) 
  28. Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它有什么优势?  java 73题以及答案 (1~73题均有答案)
  29. 什么是Executors框架?  java 73题以及答案 (1~73题均有答案)
  30. 什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?    java 73题以及答案 (1~73题均有答案)
  31. 什么是Callable和Future?  java 73题以及答案 (1~73题均有答案)
  32. 什么是FutureTask?使用ExecutorService启动任务。  java 73题以及答案 (1~73题均有答案)
  33. 什么是并发容器的实现?  java 73题以及答案 (1~73题均有答案)
  34. 多线程同步和互斥有几种实现方法,都是什么?  java 73题以及答案 (1~73题均有答案)
  35. 什么是竞争条件?你怎样发现和解决竞争?  java 73题以及答案 (1~73题均有答案)
  36. 你将如何使用thread dump?你将如何分析Thread dump?  java 73题以及答案 (1~73题均有答案)
  37. 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?  java 73题以及答案 (1~73题均有答案)
  38. Java中你怎样唤醒一个阻塞的线程?  java 73题以及答案 (1~73题均有答案)
  39. 在Java中CycliBarriar和CountdownLatch有什么区别?  java 73题以及答案 (1~73题均有答案)
  40. 什么是不可变对象,它对写并发应用有什么帮助?  java 73题以及答案 (1~73题均有答案)
  41. 什么是多线程中的上下文切换?  java 73题以及答案 (1~73题均有答案)
  42. Java中用到的线程调度算法是什么?  java 73题以及答案 (1~73题均有答案)
  43. 什么是线程组,为什么在Java中不推荐使用?  java 73题以及答案 (1~73题均有答案)
  44. 为什么使用Executor框架比使用应用创建和管理线程好?  java 73题以及答案 (1~73题均有答案)
  45. java中有几种方法可以实现一个线程?  java 73题以及答案 (1~73题均有答案)
  46. 如何停止一个正在运行的线程?  java 73题以及答案 (1~73题均有答案)
  47. notify()和notifyAll()有什么区别?  java 73题以及答案 (1~73题均有答案)
  48. 什么是Daemon线程?它有什么意义?  java 73题以及答案 (1~73题均有答案)
  49. java如何实现多线程之间的通讯和协作?  java 73题以及答案 (1~73题均有答案)
  50. 什么是可重入锁(ReentrantLock)?  java 73题以及答案 (1~73题均有答案)
  51. 当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的其它方法?  java 73题以及答案 (1~73题均有答案)
  52. 乐观锁和悲观锁的理解及如何实现,有哪些实现方式?  java 73题以及答案 (1~73题均有答案)
  53. SynchronizedMap和ConcurrentHashMap有什么区别?  java 73题以及答案 (1~73题均有答案)
  54. CopyOnWriteArrayList可以用于什么应用场景?  java 73题以及答案 (1~73题均有答案)
  55. 什么叫线程安全?servlet是线程安全吗?  java 73题以及答案 (1~73题均有答案)
  56. volatile有什么用?能否用一句话说明下volatile的应用场景?  java 73题以及答案 (1~73题均有答案)
  57. 为什么代码会重排序?  java 73题以及答案 (1~73题均有答案)
  58. 在java中wait和sleep方法的不同?  java 73题以及答案 (1~73题均有答案)
  59. 一个线程运行时发生异常会怎样  java 73题以及答案 (1~73题均有答案)
  60. 如何在两个线程间共享数据?  java 73题以及答案 (1~73题均有答案)
  61. Java中notify 和 notifyAll有什么区别?  java 73题以及答案 (1~73题均有答案)
  62. 为什么wait, notify 和 notifyAll这些方法不在thread类里面?  java 73题以及答案 (1~73题均有答案)
  63. 什么是ThreadLocal变量?  java 73题以及答案 (1~73题均有答案)
  64. Java中interrupted 和 isInterrupted方法的区别?  java 73题以及答案 (1~73题均有答案)
  65. 为什么wait和notify方法要在同步块中调用?  java 73题以及答案 (1~73题均有答案)
  66. 为什么你应该在循环中检查等待条件?  java 73题以及答案 (1~73题均有答案)
  67. Java中的同步集合与并发集合有什么区别  java 73题以及答案 (1~73题均有答案)
  68. 什么是线程池? 为什么要使用它?  java 73题以及答案 (1~73题均有答案)
  69. 怎么检测一个线程是否拥有锁?  java 73题以及答案 (1~73题均有答案)
  70. 你如何在Java中获取线程堆栈?  java 73题以及答案 (1~73题均有答案)
  71. JVM中哪个参数是用来控制线程的栈堆栈小的?  java 73题以及答案 (1~73题均有答案)
  72. Thread类中的yield方法有什么作用?  java 73题以及答案 (1~73题均有答案)
  73. Java中ConcurrentHashMap的并发度是什么?  java 73题以及答案 (1~73题均有答案)
  74. Java中Semaphore是什么?  java 73题以及答案 (1~73题均有答案)
  75. Java线程池中submit() 和 execute()方法有什么区别?  java 73题以及答案 (1~73题均有答案)
  76. 什么是阻塞式方法?  java 73题以及答案 (1~73题均有答案)
  77. Java中的ReadWriteLock是什么?  java 73题以及答案 (1~73题均有答案)
  78. volatile 变量和 atomic 变量有什么不同?  java 73题以及答案 (1~73题均有答案)
  79. 可以直接调用Thread类的run ()方法么?  java 73题以及答案 (1~73题均有答案)
  80. 如何让正在运行的线程暂停一段时间?  java 73题以及答案 (1~73题均有答案)
  81. 你对线程优先级的理解是什么?  java 73题以及答案 (1~73题均有答案)
  82. 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )?  java 73题以及答案 (1~73题均有答案)
  83. 你如何确保main()方法所在的线程是Java 程序最后结束的线程?  java 73题以及答案 (1~73题均有答案)
  84. 线程之间是如何通信的?  java 73题以及答案 (1~73题均有答案)
  85. 为什么线程通信的方法wait(), notify()和notifyAll()被定义在Object 类里?  java 73题以及答案 (1~73题均有答案)
  86. 为什么wait(), notify()和notifyAll ()必须在同步方法或者同步块中被调用?  java 73题以及答案 (1~73题均有答案)
  87. 为什么Thread类的sleep()和yield ()方法是静态的?  java 73题以及答案 (1~73题均有答案)
  88. 如何确保线程安全?  java 73题以及答案 (1~73题均有答案)
  89. 同步方法和同步块,哪个是更好的选择?  java 73题以及答案 (1~73题均有答案)
  90. 如何创建守护线程?  java 73题以及答案 (1~73题均有答案)
  91. 什么是Java Timer 类?如何创建一个有特定时间间隔的任务?  java 73题以及答案 (1~73题均有答案)
  92. 你看过那些源码吗? 
  93. 那你能讲讲HashMap的实现原理吗? (【Java集合源码剖析】HashMap源码剖析HashMap原理(一) 概念和底层架构)
  94. HashMap什么时候会进行rehash?  (Java HashMap中在resize()时候的rehash,即再哈希法的理解)
  95. HashMap什么时候会进行扩容?  (HashMap的扩容机制---resize())
  96. 那HashMap的初始容量设置成多少比较合适呢?  (Java中HashMap的初始容量设置)
  97. 结合源码说说HashMap在高并发场景中为什么会出现死循环? (HashMap 在高并发下引起的死循环)
  98. JDK1.8中对HashMap做了哪些性能优化?  (JDK1.8中对hashmap的优化)
  99. HashMap和HashTable有何不同? (HashMap与HashTable原理及数据结构; HashMap 与HashTable的区别)
  100. HashMap 和 ConcurrentHashMap 的区别? (HashMap? ConcurrentHashMap?)
  101. ConcurrentHashMap和LinkedHashMap有什么区别?  (ConcurrentHashMap总结;Java LinkedHashMap工作原理及实现)
  102. 为什么ConcurrentHashMap中的链表转红黑树的阀值是8?  (为什么HashMap桶(链表)的长度超过8才会转换成红黑树      https://www.jianshu.com/p/85d158455861   Java集合-ConcurrentHashMap工作原理和实现JDK8         https://www.jianshu.com/p/b7dda385f83d ConcurrentHashMap与红黑树实现分析Java8 )
  103. 什么是ConcurrentSkipListMap?他和ConcurrentHashMap有什么区别?  (Java并发容器——ConcurrentSkipListMap和ConcurrentHashMap)
  104. 还看过其他的源码吗?Spring的源码有了解吗?  【随笔分类 - spring及其源码分析专辑  https://www.cnblogs.com/davidwang456/category/805707.html    spring面试问题与答案集锦】

 

2. 容器

  1. java 容器都有哪些?
  2. Collection 和 Collections 有什么区别?
  3. List、Set、Map 之间的区别是什么?
  4. HashMap 和 Hashtable 有什么区别?
  5. 如何决定使用 HashMap 还是 TreeMap?
  6. 说一下 HashMap 的实现原理?
  7.  说一下 HashSet 的实现原理?
  8.  ArrayList 和 LinkedList 的区别是什么?
  9.  如何实现数组和 List 之间的转换?
  10.  ArrayList 和 Vector 的区别是什么?
  11.  Array 和 ArrayList 有何区别?
  12.  在 Queue 中 poll()和 remove()有什么区别?
  13.  哪些集合类是线程安全的?
  14.  迭代器 Iterator 是什么?
  15.  Iterator 怎么使用?有什么特点?
  16.  Iterator 和 ListIterator 有什么区别?
  17.  怎么确保一个集合不能被修改?
  18. Collection总览
  19. List集合就这么简单【源码剖析】
  20. Map集合、散列表、红黑树介绍
  21. HashMap就是这么简单【源码剖析】
  22. LinkedHashMap就这么简单【源码剖析】
  23. TreeMap就这么简单【源码剖析】
  24. ConcurrentHashMap基于JDK1.8源码剖析
  25. Set集合就这么简单!
  26. Java集合总结【面试题+脑图】,将知识点一网打尽!
  27. CopyOnWriteArrayList你都不知道,怎么拿offer?

4. 反射

  1. 什么是反射?
  2. 什么是 java 序列化?什么情况下需要序列化?
  3.  动态代理是什么?有哪些应用?
  4. 怎么实现动态代理?

5. 对象拷贝

  1. 为什么要使用克隆?
  2.  如何实现对象克隆?
  3. 深拷贝和浅拷贝区别是什么?

6. Java Web

  1.  jsp 和 servlet 有什么区别?
  2.  jsp 有哪些内置对象?作用分别是什么?
  3. 说一下 jsp 的 4 种作用域?
  4. session 和 cookie 有什么区别?
  5.  说一下 session 的工作原理?
  6.  如果客户端禁止 cookie 能实现 session 还能用吗?
  7.  spring mvc 和 struts 的区别是什么?
  8. 如何避免 sql 注入?
  9.  什么是 XSS 攻击,如何避免?
  10.  什么是 CSRF 攻击,如何避免?
  11. 给我说说你能想到几种分布式session实现

7. 异常

  1.  throw 和 throws 的区别?
  2.  final、finally、finalize 有什么区别?
  3.  try-catch-finally 中哪个部分可以省略?
  4.  try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
  5.  常见的异常类有哪些?

8. 网络

  1.  http 响应码 301 和 302 代表的是什么?有什么区别?
  2.  forward 和 redirect 的区别?
  3. 简述 tcp 和 udp的区别?
  4. tcp 为什么要三次握手,两次不行吗?为什么?
  5.  说一下 tcp 粘包是怎么产生的?
  6.  OSI 的七层模型都有哪些?
  7.  get 和 post 请求有哪些区别?
  8.  如何实现跨域?
  9. 说一下 JSONP 实现原理?

 

Java集合22题

  1. ArrayList 和 Vector 的区别 (arrayList和vector的区别)

  2. 说说 ArrayList,Vector, LinkedList 的存储性能和特性。(arrayList和vector的区别)

  3. 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么? (java中快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?)

  4. hashmap 的数据结构。 HashMap? ConcurrentHashMap?

  5. HashMap 的工作原理是什么? HashMap? ConcurrentHashMap?

  6. Hashmap 什么时候进行扩容呢?   HashMap的扩容机制---resize()  Java HashMap中在resize()时候的rehash,即再哈希法的理解

  7. List、Map、Set 三个接口,存取元素时,各有什么特点? (List、Map、Set三个接口,存取元素时,各有什么特点?)

  8. Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是 equals()? 它们有何区别?  (Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还 是 equals()?它们有何区别?)

  9. 两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对? (两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对)

  10. heap 和 stack 有什么区别 (堆(heap)和栈(stack)有什么区别??)

  11. Java 集合类框架的基本接口有哪些?(Java集合类框架的基本接口有哪些?)

  12. HashSet 和 TreeSet 有什么区别? (HashSet和TreeSet的区别)

  13. HashSet 的底层实现是什么? (HashSet的实现原理)

  14. LinkedHashMap 的实现原理? (LinkedHashMap的实现原理)

  15. 为什么集合类没有实现 Cloneable 和 Serializable 接口?(为什么集合类没有实现Cloneable和Serializable接口)

  16. 什么是迭代器 (Iterator)? (Java集合Iterator迭代器的实现)

  17. Iterator 和 List  Iterator 的区别是什么? (Iterator和ListIterator的区别)

  18. 数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList? (数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?)

  19. Java 集合类框架的最佳实践有哪些?(Java集合类框架的最佳实践?)

  20. Comparable 和 Comparator 接口是干什么的?列出它们的区别 (Comparable和Comparator接口是干什么的?列出它们的区别。)

  21. Collection 和 Collections 的区别。 (Collection接口和Collections类的简单区别和讲解)

  22. 什么是线程调度器(ThreadScheduler) 和时间分片(TimeSlicing) 【线程调度器是一个操作系统服务,它负责为Runnable状态的线程分配CPU时间。一旦创建一个线程并启动它,它的执行便依赖于线程调度器的实现。时间分片是指将可用的CPU时间分配给可用的Runnable线程的过程。分配CPU时间可以基于线程优先级或者线程等待的时间。线程调度并不受到Java虚拟机控制,所以由应用程序来控制它是更好的选择(也就是说不要让的程序依赖于线程的优先级) 】
  23. 为什么Thread类的sleep() 和yield()方法是静态的 (java.lang.Thread类的静态方法sleep()和yield()的比较)
  24. volatile关键词在Java中有什么作用? (Java并发编程:volatile关键字解析)
  25. 什么是ThreadLocal? (ThreadLocal是什么)
  26. 什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型?  什么是阻塞队列?如何使用阻塞队列来实现生产者-消费者模型?
  27. 什么是Callable和Future?  Java程序员必须掌握的线程知识-Callable和Future
  28. HashMap为什么不是线程安全的?  HashMap? ConcurrentHashMap?
  29. ConcurrentHashmap底层实现? HashMap? ConcurrentHashMap?
  30. 为什么Map桶中个数超过8才转为红黑树

 

JVM与调优21题

 

  1. Java 类加载过程?  Java 类加载过程      Jvm系列(一):java类的加载机制
  2. 描述一下 JVM 加载 Class 文件的原理机制?  描述一下JVM加载class文件的原理机制
  3. Java 内存分配。  Jvm系列(二):JVM内存结构
  4. GC 是什么? 为什么要有 GC?    Jvm系列(五):Java GC分析
  5. 简述 Java 垃圾回收机制 Jvm系列(三):GC算法  垃圾收集器
  6. 垃圾回收的优点和原理。并考虑 2 种回收机制    
  7. Java 中垃圾收集的方法有哪些? 关于java 虚拟机相关特点[纯洁的微笑]
  8. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
  9. 什么是分布式垃圾回收(DGC)?它是如何工作的?
  10. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
  11. Java 中会存在内存泄漏吗,请简单描述
  12. 深拷贝和浅拷贝?
  13. 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
  14. System.gc() 和 Runtime.gc() 会做什么事情?
  15. finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?
  16. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
  17. 在 Java 中,对象什么时候可以被垃圾回收?
  18. 简述 Java 内存分配与回收策率以及 Minor GC 和 Major GC。
  19. JVM 的永久代中会发生垃圾回收么?
  20. 什么是类加载器,类加载器有哪些?
  21. 类加载器双亲委派模型机制?
  22. 方法走完,引用消失,堆内存还未必消失。很多人做报表导出的时候,会在for循环不停创建对象,很容易造成堆异常,请问大文件导出怎么破? 【附录1】
  23. java支持多线程,每个线程有自己的java虚拟机栈和本地方法栈,是这样吗? 新建的实例在堆内存,实例变量也是在堆内存?是这样吗?【附录1】
  24. 您好,看不懂入栈和出栈有什么意义,可以给解释一下吗?谢谢?【附录1】
  25. 如果是父类子类的情况下的下面哪种情况呢?  加载父类-》加载子类-》初始化父类-》初始化子类,加载父类-》初始化父类-》加载子类-》初始化子类 【附录1】
  26. 类加载器有三层,如果第二层的类加载器加载这些类的话,就没有必要往上去找他的父类加载吗?既然说累只有用到的时候才加载到内存,那么new对象的时候肯定用到,但是是不是先经历过类的所有过程才能讲类实例化? 【附录1】
  27. 第一课内容比较详细的讲解了java程序的执行过程,但是感觉提出的问题并不能在文章中找到答案【附录1】 
  28. object Header(4字节) +class Pointer(4字节) +Fileds(看存放类型) 但是jvm内存是占用8的倍数,所以结果要向上取8的倍数【附录1】
  29. 如果我有一个静态的成员变量int,那么多线程更改是否会有线程安全问题,为什么? (修改是否原子操作,多线程这里会有问题)【附录1】
  30. 类加载是按需加载,可以一次加载全部类吗?【附录1】
  31. 为什么要一级一级类加载器的往上找,直接从顶层类加载器开始找不就行了吗?【附录1】
  32. 是在执行new replicamanager()这行代码的时候加载replicamanger类吗?还是说加载cafka的时候就同时加载了呢?【附录1】
  33. 还是没有明白 jvm和平时运行在机器上的系统之间是什么关系呢【附录1】
  34. class文件分配内存是在准备阶段,那类的class对象是在准备阶段创建的吗? 如果实例变量有初始值,那实例变量是和类变量一同在初始化阶段赋值的吗?初始化之后是不是就有实例了【附录1】
  35. 双亲委派可以解决类重复加载的问题。按照文章中介绍每个类加载器有不同的类加载路径,这些类加载路径是否可能重叠?【附录1】
  36. 自定义的类加载器本身是由系统加载器加载的,也就是说其本身是没有加密的,那么我拿到该类反编译就可以看到如果解密class文件了,请问老师是这样么?【附录1】
  37. 作为一个web容器,既要解决跨应用公共共享问题也要解决独立应用独立问题。tomcat必须支持多层级的自定义类加载器【附录1】
  38. 用户使用类的时候应该是希望类已经准备好了一些数据,我猜想jvm设计者设计先执行static代码块的机制,是希望开发者在这里把使用类之前需要准备的工作在这里准备好      为什么类的初始化需要执行静态代码块,给静态成员变量赋值,是因为这些数据是在方法区吗? 启动类、扩展类和自定义加载器都已经指定了加载路径,所以不应该会有重复加载类的问题吧,所以双亲委派是不是没有必要【附录1】
  39. 其实初始化时机就是对类的主动使用:调用静态方法时对类的主动使用的一种场景,main方法本质上是个static方法,没有调用的main方法和没有调用的static方法没区别!有一个问题,包含main方法的类会优先加载,如果一个项目中有多个类中都有main方法,都会加载么?【附录1】
  40. tomcat本身是java程序,那么tomcat的实现程序的class是由应用类加载器加载的,用户自己的java程序war包,放入tomcat的程序的classpath中这样用户的程序和tomcat的程序都是由应用类加载器加载了,也就是处于一个jvm中了
  41. 说一下 jvm 的主要组成部分?及其作用?
  42. 说一下 jvm 运行时数据区?
  43.  说一下堆栈的区别?
  44. 队列和栈是什么?有什么区别?
  45. 什么是双亲委派模型?
  46. 说一下类加载的执行过程?
  47.  怎么判断对象是否可以被回收?
  48.  java 中都有哪些引用类型?
  49. 说一下 jvm 有哪些垃圾回收算法?
  50. 说一下 jvm 有哪些垃圾回收器?
  51.  详细介绍一下 CMS 垃圾回收器?
  52. 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
  53. 简述分代垃圾回收器是怎么工作的?
  54. 说一下 jvm 调优的工具? 
  55. 常用的 jvm 调优的参数都有哪些?
  56. JVM 内存区域方面的面试题
  57. 系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
  58. 记一次有惊无险的 JVM 优化经历
  59. 从零开始带你成为JVM实战高手
  60. JVM 堆内存溢出后,其他线程是否可继续工作
  61. JVM内存结构 VS Java内存模型 VS Java对象模型 
  62. Java内存模型是什么

 

并发编程28题

  1. Synchronized 用过吗,其原理是什么?

  2. 你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?

  3. 什么是可重入性,为什么说 Synchronized 是可重入锁?

  4. JVM 对 Java 的原生锁做了哪些优化?

  5. 为什么说 Synchronized 是非公平锁?

  6. 什么是锁消除和锁粗化?

  7. 为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?

  8. 乐观锁一定就是好的吗?

  9. 跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?

  10. 那么请谈谈 AQS 框架是怎么回事儿?

  11. 请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。

  12. ReentrantLock 是如何实现可重入性的?

  13. 除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?

  14. 请谈谈 ReadWriteLock 和 StampedLock。

  15. 如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。

  16. CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?

  17. Java 线程池相关问题

  18. Java 中的线程池是如何实现的(线程池(包含什么,core、max联系)原理?)?

  19. 创建线程池的几个核心构造参数?

  20. 线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?

  21. 既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同

  22. 如何在 Java 线程池中提交线程?

  23. 什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?

  24. 请谈谈 volatile 原理以及特点,为什么它能保证变量对所有线程的可见性?

  25. 既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?

  26. 请对比下 volatile 对比 Synchronized 的异同。

  27. 请谈谈 ThreadLocal 是怎么解决并发安全的?

  28. 很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?

  29. JMM(主内存、工作内存、happens-before)是什么?
  30. 有哪些无锁数据结构?无锁实现的原理?
  31. 并行和并发有什么区别?
  32.  线程和进程的区别?
  33.  守护线程是什么?
  34.  创建线程有哪几种方式?
  35.  说一下 runnable 和 callable 有什么区别?
  36.  线程有哪些状态?
  37.  sleep() 和 wait() 有什么区别?
  38.  notify()和 notifyAll()有什么区别?
  39.  线程的 run()和 start()有什么区别?
  40. 创建线程池有哪几种方式?
  41. 线程池都有哪些状态?
  42.  线程池中 submit()和 execute()方法有什么区别?
  43.  在 java 程序中怎么保证多线程的运行安全?
  44.  多线程锁的升级原理是什么?
  45.  什么是死锁?
  46.  怎么防止死锁?
  47. ThreadLocal 是什么?有哪些使用场景?
  48.  说一下 synchronized 底层实现原理?
  49.  synchronized 和 volatile 的区别是什么?
  50.  synchronized 和 Lock 有什么区别?
  51.  synchronized 和 ReentrantLock 区别是什么?
  52.  说一下 atomic 的原理?
  53. Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
  54. Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
  55. java并发编程:共享性、互斥性、原子性、可见性、有序性
  56. 锁实现(多线程中的锁系统(四)-谈谈自旋锁)
  57. cas原理 (理解cas; Java并发编程总结2——慎用CAS)
  58. volatile使用场景 (Java并发编程:volatile关键字解析   Java 并发编程:volatile的使用及其原理)
  59. synchronized是什么 (Synchronized 有几种用法  ;Java并发编程:Synchronized及其实现原理)
  60. 重入锁
  61. Java线程池源码及原理

 

spring 25题

 

  1. 什么是 Spring 框架?Spring 框架有哪些主要模块?
  2. 使用 Spring 框架能带来哪些好处?
  3. 什么是控制反转(IOC)?什么是依赖注入?
  4. 请解释下 Spring 框架中的 IoC?
  5. BeanFactory 和 ApplicationContext 有什么区别?
  6. Spring 有几种配置方式?
  7. 如何用基于 XML 配置的方式配置 Spring?
  8. 如何用基于 Java 配置的方式配置 Spring?
  9. 怎样用注解的方式配置 Spring?
  10. 请解释 Spring Bean 的生命周期?
  11. Spring Bean 的作用域之间有什么区别?
  12. 什么是 Spring inner beans?
  13. Spring 框架中的单例 Beans 是线程安全的么?
  14. 请举例说明如何在 Spring 中注入一个 Java Collection?
  15. 如何向 Spring Bean 中注入一个 Java.util.Properties?
  16. 请解释 Spring Bean 的自动装配?
  17. 请解释自动装配模式的区别?
  18. 如何开启基于注解的自动装配?
  19. 请举例解释@Required 注解?
  20. 请举例解释@Autowired 注解?
  21. 请举例说明@Qualifier 注解?
  22. 构造方法注入和设值注入有什么区别?
  23. Spring 框架中有哪些不同类型的事件?
  24. FileSystemResource 和 ClassPathResource 有何区别?
  25. Spring 框架中都用到了哪些设计模式?
  26. 为什么要使用 spring?

  27. 解释一下什么是 aop?

  28.  解释一下什么是 ioc?

  29. spring 有哪些主要模块?

  30. spring 常用的注入方式有哪些

  31.  spring 中的 bean 是线程安全的吗?

  32.  spring 支持几种 bean 的作用域?

  33.  spring 自动装配 bean 有哪些方式?

  34.  spring 事务实现方式有哪些?

  35.  说一下 spring 的事务隔离?

  36.  说一下 spring mvc 运行流程?

  37. spring mvc 有哪些组件

  38.  @RequestMapping 的作用是什么?   

  39. @Autowired 的作用是什么
  40.  Spring MVC源码(二) ----- DispatcherServlet 请求处理流程 面试必问

 

设计模式 

  1. 请列举出在 JDK 中几个常用的设计模式?

  2. 什么是设计模式?你是否在你的代码里面使用过任何设计模式?

  3. Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式

  4. 在 Java 中,什么叫观察者设计模式(observer design pattern)?

  5. 使用工厂模式最主要的好处是什么?在哪里使用?

  6. 举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类

  7. 层次?

  8. 在 Java 中,为什么不允许从静态方法中访问非静态变量?

  9. 设计一个 ATM 机,请说出你的设计思路?

  10. 在 Java 中,什么时候用重载,什么时候用重写?

  11. 举例说明什么情况下会更倾向于使用抽象类而不是接口

  12. 设计模式(装饰器设计模式、代理模式、单例模式、工厂模式)
  13. 说一下你熟悉的设计模式? 

  14. 简单工厂和抽象工厂有什么区别?

  15. GOF23种设计模式总览

 

springboot 22题

 

  1. 什么是 Spring Boot?
  2. Spring Boot 有哪些优点?
  3. 什么是 JavaConfig?
  4. 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
  5. Spring Boot 中的监视器是什么?
  6. 如何在 Spring Boot 中禁用 Actuator 端点安全性?
  7. 如何在自定义端口上运行 Spring Boot 应用程序?
  8. 什么是 YAML?
  9. 如何实现 Spring Boot 应用程序的安全性?
  10. 如何集成 Spring Boot 和 ActiveMQ?
  11. 如何使用 Spring Boot 实现分页和排序?
  12. 什么是 Swagger?你用 Spring Boot 实现了它吗?
  13. 什么是 Spring Profiles?
  14. 什么是 Spring Batch?
  15. 什么是 FreeMarker 模板?
  16. 如何使用 Spring Boot 实现异常处理?
  17. 您使用了哪些 starter maven 依赖项?
  18. 什么是 CSRF 攻击?
  19. 什么是 WebSockets?
  20. 什么是 AOP?
  21. 什么是 Apache Kafka?
  22. 我们如何监视所有 Spring Boot 微服务?
  23. SpringBoot的源码呢?知道starter是怎么实现的吗?  (spring boot 相关文章 https://www.cnblogs.com/shamo89/tag/springboot/)
  24. 如何重新加载Spring Boot上的更改,而无需重新启动服务器? 

  25. Spring Boot中的监视器是什么?  SpringBoot面试题 转(已迁移到java相关知识点)

  26. 如何集成Spring Boot和ActiveMQ?  SpringBoot面试题 转(已迁移到java相关知识点)

  27. 常见的starter会包几个方面的内容。分别是什么   SpringBoot面试题 转(已迁移到java相关知识点)

  28. Spring Boot Starter的工作原理 SpringBoot面试题 转(已迁移到java相关知识点)

  29. 谈谈你对Spring Boot的认识 SpringBoot面试题 转(已迁移到java相关知识点)

  30. 自定义springboot-starter注意事项 SpringBoot面试题 转(已迁移到java相关知识点)

  31. Spring Boot、Spring MVC 和 Spring 有什么区别? SpringBoot面试题 转(已迁移到java相关知识点)

  32. 什么是 Spring Boot Stater ? SpringBoot面试题 转(已迁移到java相关知识点)

  33.  Spring Boot 还提供了其它的哪些 Starter Project Options? SpringBoot面试题 转(已迁移到java相关知识点)

  34. Spring 是如何快速创建产品就绪应用程序的? SpringBoot面试题 转(已迁移到java相关知识点)

  35. springboot与spring的区别 SpringBoot面试题 转(已迁移到java相关知识点)

  36. springboot的核心功能与使用优点. SpringBoot面试题 转(已迁移到java相关知识点)

  37. springboot中的application.properties配置文件是什么,有哪些配置. SpringBoot面试题 转(已迁移到java相关知识点)

  38. springboot中的核心启动主函数(main函数)的作用.用到哪些注解.注解的作用. SpringBoot面试题 转(已迁移到java相关知识点)

  39. 可以配置 application.propertierde 的完整的属性列表在哪里可以找到 SpringBoot面试题 转(已迁移到java相关知识点)

 

spring cloud

  1.  基于Spring Boot+Cloud构建微云架构
  2.  什么是 spring boot?
  3.  为什么要用 spring boot?
  4.  spring boot 核心配置文件是什么?
  5.  spring boot 配置文件有哪几种类型?它们有什么区别?
  6.  spring boot 有哪些方式可以实现热部署?
  7.  jpa 和 hibernate 有什么区别?
  8.  什么是 spring cloud?
  9.  spring cloud 断路器的作用是什么
  10.  spring cloud 的核心组件有哪些?

dubbo

  • Dubbo设计思路
  • Dubbo的底层实现原理和机制?

k8s 

 

Netty10题

  1. BIO、NIO和AIO的区别?

  2. NIO的组成?

  3. Netty的特点?

  4. Netty的线程模型?

  5. TCP 粘包/拆包的原因及解决方法?

  6. 了解哪几种序列化协议?

  7. 如何选择序列化协议?

  8. Netty的零拷贝实现?

  9. Netty的高性能表现在哪些方面?

  10. NIOEventLoopGroup源码?

  11. netty原理是什么?
  12. BIO, NIO, AIO各自的特点
  13. 什么同步阻塞,同步非阻塞,异步非阻塞
  14. 为什么NIO能够应对支持海量的请求
  15. NIO相关组件的原理
  16. NIO通讯的简单案例

 

 

Hibernate

  1.  为什么要使用 hibernate?
  2. 什么是 ORM 框架?
  3. hibernate 中如何在控制台查看打印的 sql 语句?
  4.  hibernate 有几种查询方式?
  5.  hibernate 实体类可以被定义为 final 吗?
  6.  在 hibernate 中使用 Integer 和 int 做映射有什么区别?
  7.  hibernate 是如何工作的?
  8.  get()和 load()的区别?
  9.  说一下 hibernate 的缓存机制?
  10.  hibernate 对象有哪些状态?
  11.  在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?
  12.  hibernate 实体类必须要有无参构造函数吗?为什么?

 

 

其他:

  1. 说下一次RPC请求的过程
  2. 分布式系统怎么做服务治理?
  3. 接口的幂等性的概念介绍下

 

 

 

 

【附录1】:

     22.建议不要在for里面创建对象,可以在外面创建一个对象,for循环里面对同一个对象修改数据即可。

     23.  第一个和二个都是正确的。

     24.入栈的时候,就是你执行一个方法,为这个方法创建一个栈帧入栈和出栈,就是你的方法执行完毕了,就会出栈。

     25.不是的,加载父类就是加载父类,除非用到子类才会加载子类,但是加载子类要初始化之前,必须加载父类,初始化父类。

     26.没错,必须先加载类,才能再实例化对象。

      27.java 程序执行过程。

      28.正确的。

      29.静态成员变量,他在内存里,只有一份,就是属于类的。你多个线程并发修改,一定会有并发问题,可能导致数据出错。

      30.如果默认的类加载机制,那么就是你的代码运行过程中,遇到什么类加载什么类。如果需要自己加载类,需要自己写类加载器(这里如果类加载有先后顺序,会,不同版本jdk会导致异常的错误)

     31.其实关于这个问题,不用过于纠结,每一层类加载器对某个类的加载,上推给父类加载器,到顶层类加载器,如果发现自己加载不到,再下推回子类加载器来加载,这样可以保证绝对不会重复加载某个类。至于为什么不直接从顶层类加载器开始找,那是因为类加载器本身就是做的父子关系模型     你想一下Java代码实现,他最底下的子类加载器,只能通过自己引用的父类加载器去找。如果直接找顶层类加载器,不合适的,那么顶层类加载器不就必须硬编码规定了吗?这就是一个代码设计思想,保证代码的可扩展性。

    32.执行new ReplicaManager的时候加载类

   33.其实很简单,你运行在机器上的系统,其实就是一个JVM进程,JVM进程会执行你系统里写好的那些代码

   34.类是在准备阶段分配内存空间的;实例变量得在你创建类的实例对象时才会初始化;类的初始化阶段,仅仅是初始化类而已,跟对象无关,用new关键字才会构造一个对象出来

   35.不同类加载器的路径,一般是不会重叠的

36.是的,所以说对class文件需要做特殊混淆处理,有商用的产品可以用

37.很好的推测,明天会给出答案

38.没错,必须有初始化过程,准备好类级别的数据;双亲委派,避免重复加载,评论区里多次回复了这个问题,可以看一看

39.不会的,你启动一个jar包,需要指定某个main主类,优先就是加载他

转载于:https://www.cnblogs.com/williamjie/p/11139302.html

你可能感兴趣的:(java,面试,设计模式)