最近更新:2020年3月22日21:28:47
本篇博客是对我的专栏《Java面试复习笔记》的一个索引
(内容持续更新!!!)(后续学习了继续补充)
专栏的内容包括了我在诸多付费课程中学习的关于Java面试的笔记和总结
其中的课程包含了
- 慕课网《玩转Java并发工具,精通JUC,成为并发多面手》
- 慕课网《Java并发核心知识体系精讲》
- 慕课网《剑指Java面试-Offer直通车》
- 慕课网《高薪之路–Java面试题精选集》
- 慕课网《面试官系统精讲Java源码及大厂真题》
- 拉勾网《Java 面试真题及源码 34 讲》
- 牛客网《Java开发岗高频面试题全解析》
- 极客时间《极客时间-Java核心技术36讲》
- 极客时间《SQL必知必会》
- 即可大学《算法训练营》
希望这个专栏除了能帮助我自己构建知识体系,掌握面试的知识,同时也能帮助和我一样在学校没有学到太多实用东西想要找大厂工作的同学
并发编程篇
你必须了解的Java并发核心知识
内容包含->
- 进程和线程的区别
- Java进程与线程的关系
- 有多少种实现线程的方法?
- 实现Runnable接口和继承Thread类哪种方式更好?
- 一个线程两次调用start()方法会出现什么情况?为什么?
- 既然start()方法会调用run方法,为什么我们选择调用start方法而不是直接调用run方法呢?
- 如何停止线程?
- 如何处理不可中断的阻塞
- 线程有哪几种状态?生命周期是什么?
- 用程序实现两个线程交替打印(0-100)的奇偶数
- 什么是生产者消费者模式
- 手写生产者消费者模式
- 为什么wait方法需要在同步代码块内使用,而sleep不需要
- 为什么线程通信的方法wait、notify、notifyAll被定义在Object类中?而slepp方法被定义在Thread类中?
- wait方法是属于Object对象的,那调用Thread.wait()会怎么样
- 如何选择用notify还是notifyAll
- notifyAll之后所有的线程都会再次抢夺锁,如果某线程抢夺失- 败怎么办?
- suspend和resume来阻塞线程可以吗?为什么?
- wait/notify、sleep异同
- yield和sleep的区别
- 在join期间,线程处于哪种线程状态?
- 守护线程和普通线程的区别
- 我们是否需要给线程设置守护线程?
- run方法是否可以抛出异常?
- 如何全局处理异常
- 什么是多线程的上下文切换
- 为什么多线程会带来性能问题?
- 何时会导致密集的上下文切换
- 单例模式的作用和适用场景
- 单例模式的八种写法及相关知识点
- 工作中哪种单例模式的实现最好
- 讲一讲什么是Java内存模型
- 关于死锁你知道多少?
面试遇到Java并发容器,我能和面试官聊上20分钟
内容包含->
- CopyOnWriteArrayList
- 常见问题
- 源码分析
- 面试题
- concurrentHashMap
- 常见问题
- 源码分析
- 面试题
讲一讲什么是Java内存模型
内容包含->
- 为什么会有Java内存模型?
- 辨析JVM内存结构、Java内存模型、Java对象模型
- JVM内存结构
- Java对象模型
- Java内存模型
- 重排序
- 例子演示:
- 什么是重排序
- 重排序的好处
- 重排序的3种情况
- 可见性
- 什么是可见性问题
- 为什么会有可见性问题
- JMM主内存与本地内存的关系
- happens-before规则有哪些?
- volatile是什么
- 什么时候适合用volatile
- volatile的作用
- volatile与synchronized的关系
- 原子性
- 什么是原子性
- Java中的原子操作有哪些
- 生成对象的过程是不是原子操作?
彻底搞懂死锁的前世今生
内容包含–>
- 死锁是什么,有什么危害?
- 写一个死锁的例子
- 案例一:必然发生死锁
- 案例二:两个账户转账
- 案例三:多人多次转账
- 发生死锁必须满足哪些条件
- 如何定位死锁
- 有哪些解决死锁问题的策略?
- 线上发生死锁怎么办
- 常见修复策略
- 哲学家就餐问题
- 问题描述
- 代码演示
- 多种解决方案
- 改变一个哲学家拿叉子的顺序的实现
- 工程中如何避免死锁
通过单例模式的8种写法搞定单例模式面试
内容包含–>
- 饿汉式(静态常量)(可用)
- 饿汉式(静态代码块)(可用)
- 懒汉式(线程不安全)(不可用)
- 懒汉式(线程安全)(不推荐)
- 懒汉式(加锁,线程不安全)

本文是Java面试复习的综合指南,涵盖了并发编程、基础篇、数据库和算法等多个方面。深入讲解Java并发核心知识,如线程、锁、并发容器,以及Java内存模型、死锁等。此外,还探讨了Java基础概念,如面向对象、异常处理、数据类型,并介绍了SQL在数据库中的执行。最后,通过实例解析了常见的排序算法和LeetCode高频题,助你提升面试技能。

1058

被折叠的 条评论
为什么被折叠?



