• 为什么应该在循环中检查等待条件?
  • 为什么 wait 和 notify 方法要在同步块中调用?
  • 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
  • ThreadLocal 是什么,怎么实现的
  • 线程池是什么,提交一个任务进去,处理流程?
  • Executor 框架介绍
  • JUC 包中提供了哪些配置好的线程池,差异化是什么
  • 什么是 FutureTask?

  • Lock 接口提供了哪些实现类
  • AQS 是什么,提供了哪些方法
  • AQS 中独占锁和共享锁的操作流程大体描述一下
  • 重入锁有什么好处,什么时候考虑用
  • 读写锁有什么好处,什么时候考虑用?读锁是什么类型的锁,写锁呢?
  • 说下读写锁里的锁降级流程,什么时候可以考虑用这个机制
  • park 方法是怎么实现的
  • 锁的等待通知机制 Condition 是怎么实现的,有了线程的等待通知机制为什么还要设计 Condition?
  • 死锁怎么产生的,如何避免
  • 说说 Java 中有哪些锁
  • sleep、wait、park、Condition 都能让线程等待,有什么区别?
  • 所谓 sleep 不会释放锁,wait 会释放锁,释放锁后重新获取时它的上下文数据如何处理的?
  • 释放锁会让 CPU 进行上下文切换吗?
  • 容器与工具
  • 阻塞和非阻塞有什么区别,他们可以用什么方式实现
  • 队列(Queue)提供哪些操作
  • 阻塞队列提供了哪些获取元素的方法,有什么区别?
  • 阻塞队列有哪些实现?为什么要分有界无界?
  • CountDownLatch 怎么实现的,什么时候考虑用?
  • CyclicBarrier 怎么实现的,什么时候考虑用?
  • Semaphore 怎么实现的,什么时候考虑用?
  • 如何在两个线程间共享数据?
  • Exchanger 怎么实现的,什么时候考虑用?
  • ConcurrentHashMap 实现?
  • fork/join 框架是什么?
    需要的朋友可以戳这里,暗号:简书
    在这里插入图片描述

JVM 虚拟机面试题

  • 内存管理
  • 为什么需要 JVM?
  • 简单描述 JMM 和 JVM 两个概念
  • JVM 内存管理
  • 永久代、元空间、方法区的关系
  • 类加载过程
  • 双亲委派模式有什么好处
  • 如何覆盖 JDK 提供的组件,比如覆盖 ArrayList 的实现
  • new 一个对象的过程发生了什么(类加载、变量初始化、内存分配)
  • 对象的死亡过程
  • JVM 可能会抛出哪些 OOM
  • 垃圾回收算法有哪些?优缺点比较
  • 熟知的垃圾回收器有哪些,简单描述每个应用场景
  • CMS 和 G1 的垃圾回收步骤是?
  • G1 相对于 CMS 的优缺点
  • 性能监控与调优
  • 如何监控 GC
  • 常见 OutOfMemoryError 有哪些
  • 常见的 JDK 诊断命令有哪些,应用场景?
  • CPU 较高,如何定位问题
  • 内存占用较高,如何定位大对象
  • 内存泄漏时,如何实时跟踪内存变化情况
  • 内存泄漏时,如何定位问题代码
  • 大型项目如何进行性能瓶颈调优?
  • 虚拟机子系统
  • 字节码是如何在 JVM 中进行流转的(栈帧)
  • 方法调用的底层实现
  • 方法重写和重载的实现过程
  • invokedynamic 指令实现

最后

无论是哪家公司,都很重视基础,大厂更加重视技术的深度和广度,面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

针对以上面试技术点,我在这里也做一些资料分享,希望能更好的帮助到大家。

戳这里免费领取以下资料

挑战华为社招:35岁程序员半月4轮面试,springcloud入门书籍

挑战华为社招:35岁程序员半月4轮面试,springcloud入门书籍

挑战华为社招:35岁程序员半月4轮面试,springcloud入门书籍