码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Java 面试题】经典 Java 面试题 200 问(上)


    在这里插入图片描述

    ❤️ 个人主页:水滴技术
    🌸 订阅专栏:经典面试题合集
    🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬

    文章目录

    • 一、Java
      • 1. JDK、JRE、JVM 之间的区别
      • 2. hashCode() 与 equals() 之间的关系
      • 3. String、StringBuffer、StringBuilder 的区别
      • 4. 泛型中 extends 和 supper 的区别
      • 5. == 和 equals() 方法的区别
      • 6. 重载和重写的区别
      • 7. List 和 Set 的区别
      • 8. ArrayList 和 LinkedList 的区别
      • 9. 谈谈 ConcurrentHashMap 的扩容机制
      • 10. JDK1.7 到 JDK1.8 HashMap 发生了什么变化(底层)
      • 11. 说一下 HashMap 的 put() 方法
      • 12. 深拷贝和浅拷贝
      • 13. HashMap 的扩容机制原理
      • 14. CopyOnWriteArrayList 的底层原理是怎样的
      • 15. 什么是字节码?采用字节码的好处是什么?
      • 16. Java 中的异常体系是怎样的
      • 17. 在 Java 的异常处理机构中,什么时候应该抛出异常,什么时候捕获异常?
      • 18. Java 中有哪些类加载器
      • 19. 说说类加载器双亲委派模型
      • 20. JVM 中哪些是线程共享区
      • 21. 你们项目如何排查 JVM 问题
      • 22. 一个对象从加载到 JVM,再到被 GC 清除,都经历了什么过程?
      • 23. 怎么确定一个对象到底是不是垃圾?
      • 24. JVM 有哪些垃圾回收算法?
      • 25. 什么是 STW?
      • 26. 常用的 JVM 启动参数有哪些?
      • 27. 说说对线程安全的理解
      • 28. 对守护线程的理解
      • 29. ThreadLocal 的底层原理
      • 30. 并发、并行、串行之间的区别
      • 31. Java 死锁如何避免
      • 32. 线程池的底层工作原理
      • 33. 线程池为什么是先添加队列而不是先创建最大线程
      • 34. ReentrantLock 中的公平锁和非公平锁的底层实现
      • 35. ReentrantLock 中 tryLock() 和 lock() 方法的区别
      • 36. CountDownLatch 和 Semaphore 的区别和底层原理
      • 37. sychronized 的偏向锁、轻量级锁、重量级锁
      • 38. sychronized 和 ReentrantLock 的区别
      • 39. 谈谈你对 AQS 的理解,AQS 如何实现可重入锁?
    • 二、Spring
      • 1. 谈谈你对 IoC 的理解
      • 2. 单例 Bean 和单例模式
      • 3. Spring 事务传播机制
      • 4. Spring 事务什么时候会失效?
      • 5. Spring 中的 Bean 创建的生命周期有哪些步骤
      • 6. Spring 中的 Bean 是线程安全的吗
      • 7. ApplicationContext 和 BeanFactory 有什么区别
      • 8. Spring 中的事务是如何实现的
      • 9. Spring 中什么时候 @Transactional 会失效
      • 10. Spring 容器启动流程是怎样的
      • 11. Spring 用到了哪些设计模式
      • 12. SpringBoot 中常用注解及其底层实现
      • 13. SpringBoot 是如何启动 Tomcat 的
    • 三、MyBatis
      • 1. MyBatis 的优缺点
      • 2. MyBatis 中 #{} 和 ${} 的区别是什么?
    • 四、MySQL
      • 1. 索引的基本原理
      • 2. 索引设计的原则?
      • 3. 事务的基本特性和隔离级别
      • 4. 什么是 MVCC
      • 5. 简述 MyISAM 和 InnoDB 的区别
      • 6. Explain 语句结果中各个字段分别表示什么
      • 7. 索引覆盖是什么
      • 8. 最左前缀原则是什么
      • 9. InnoDB 是如何实现事务的
      • 10. B 树和 B+ 树的区别,为什么 MySQL 使用 B+ 树
      • 11. MySQL 锁有哪些,如何理解
    • 热门专栏


    大家好,我是水滴~~

    本文整理于周瑜老师的《经典 Java 面试题 200 问》,目的是在面试前可以翻一翻,加深一些印象。

    一、Java

    1. JDK、JRE、JVM 之间的区别

    在这里插入图片描述

    2. hashCode() 与 equals() 之间的关系

    在这里插入图片描述

    3. String、StringBuffer、StringBuilder 的区别

    在这里插入图片描述

    4. 泛型中 extends 和 supper 的区别

    在这里插入图片描述

    5. == 和 equals() 方法的区别

    在这里插入图片描述

    6. 重载和重写的区别

    在这里插入图片描述

    7. List 和 Set 的区别

    在这里插入图片描述

    8. ArrayList 和 LinkedList 的区别

    在这里插入图片描述

    9. 谈谈 ConcurrentHashMap 的扩容机制

    在这里插入图片描述

    10. JDK1.7 到 JDK1.8 HashMap 发生了什么变化(底层)

    在这里插入图片描述

    11. 说一下 HashMap 的 put() 方法

    在这里插入图片描述

    12. 深拷贝和浅拷贝

    在这里插入图片描述

    13. HashMap 的扩容机制原理

    在这里插入图片描述

    14. CopyOnWriteArrayList 的底层原理是怎样的

    在这里插入图片描述

    15. 什么是字节码?采用字节码的好处是什么?

    在这里插入图片描述

    16. Java 中的异常体系是怎样的

    在这里插入图片描述

    17. 在 Java 的异常处理机构中,什么时候应该抛出异常,什么时候捕获异常?

    在这里插入图片描述

    18. Java 中有哪些类加载器

    在这里插入图片描述

    19. 说说类加载器双亲委派模型

    在这里插入图片描述

    20. JVM 中哪些是线程共享区

    在这里插入图片描述

    21. 你们项目如何排查 JVM 问题

    在这里插入图片描述

    22. 一个对象从加载到 JVM,再到被 GC 清除,都经历了什么过程?

    在这里插入图片描述

    23. 怎么确定一个对象到底是不是垃圾?

    在这里插入图片描述

    24. JVM 有哪些垃圾回收算法?

    在这里插入图片描述

    25. 什么是 STW?

    在这里插入图片描述

    26. 常用的 JVM 启动参数有哪些?

    在绝大部分业务场景下,常用的 JVM 配置参数也就10来个:

    # JVM 启动参数,不换行
    # 设置堆内存
    -Xmx4g -Xms4g
    
    # 指定 GC 算法
    -XX:+UseG1GC -XX:MaxGCPauseMillis=50
    
    # 指定 GC 并行线程数
    -XX:ParallelGCThreads=4
    
    # 打印 GC 日志
    -XX:+PrintGCDetails -XX:+PrintGCDateStamps
    
    
    # 指定 GC 日志文件 
    -Xloggc:gc.log
    
    # 指定 Meta 区的最大值
    -XX:MaxMetaspaceSize=2g
    
    # 设置单个线程栈的大小
    -Xss1m
    
    # 指定堆内存溢出时自动进行 Dump
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:HeapDumpPath=/usr/local/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    27. 说说对线程安全的理解

    在这里插入图片描述

    28. 对守护线程的理解

    在这里插入图片描述

    29. ThreadLocal 的底层原理

    在这里插入图片描述

    30. 并发、并行、串行之间的区别

    在这里插入图片描述

    31. Java 死锁如何避免

    在这里插入图片描述

    32. 线程池的底层工作原理

    在这里插入图片描述

    33. 线程池为什么是先添加队列而不是先创建最大线程

    在这里插入图片描述

    34. ReentrantLock 中的公平锁和非公平锁的底层实现

    在这里插入图片描述

    35. ReentrantLock 中 tryLock() 和 lock() 方法的区别

    在这里插入图片描述

    36. CountDownLatch 和 Semaphore 的区别和底层原理

    在这里插入图片描述

    37. sychronized 的偏向锁、轻量级锁、重量级锁

    在这里插入图片描述

    38. sychronized 和 ReentrantLock 的区别

    在这里插入图片描述

    39. 谈谈你对 AQS 的理解,AQS 如何实现可重入锁?

    在这里插入图片描述

    二、Spring

    1. 谈谈你对 IoC 的理解

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2. 单例 Bean 和单例模式

    在这里插入图片描述

    3. Spring 事务传播机制

    在这里插入图片描述

    4. Spring 事务什么时候会失效?

    在这里插入图片描述

    5. Spring 中的 Bean 创建的生命周期有哪些步骤

    在这里插入图片描述
    在这里插入图片描述

    6. Spring 中的 Bean 是线程安全的吗

    在这里插入图片描述

    7. ApplicationContext 和 BeanFactory 有什么区别

    在这里插入图片描述

    8. Spring 中的事务是如何实现的

    在这里插入图片描述

    9. Spring 中什么时候 @Transactional 会失效

    在这里插入图片描述

    10. Spring 容器启动流程是怎样的

    在这里插入图片描述

    11. Spring 用到了哪些设计模式

    在这里插入图片描述
    在这里插入图片描述

    12. SpringBoot 中常用注解及其底层实现

    在这里插入图片描述

    13. SpringBoot 是如何启动 Tomcat 的

    在这里插入图片描述

    三、MyBatis

    1. MyBatis 的优缺点

    在这里插入图片描述

    2. MyBatis 中 #{} 和 ${} 的区别是什么?

    在这里插入图片描述

    四、MySQL

    1. 索引的基本原理

    在这里插入图片描述

    2. 索引设计的原则?

    在这里插入图片描述

    3. 事务的基本特性和隔离级别

    在这里插入图片描述

    4. 什么是 MVCC

    在这里插入图片描述

    5. 简述 MyISAM 和 InnoDB 的区别

    在这里插入图片描述

    6. Explain 语句结果中各个字段分别表示什么

    在这里插入图片描述

    7. 索引覆盖是什么

    在这里插入图片描述

    8. 最左前缀原则是什么

    在这里插入图片描述

    9. InnoDB 是如何实现事务的

    在这里插入图片描述

    10. B 树和 B+ 树的区别,为什么 MySQL 使用 B+ 树

    在这里插入图片描述

    11. MySQL 锁有哪些,如何理解

    在这里插入图片描述


    热门专栏

    👍 《IDEA 教程:从入门到精通》

    👍 《Java 教程:从入门到精通》

    👍 《MySQL 教程:从入门到精通》

    在这里插入图片描述

  • 相关阅读:
    linux上安装apktool反编译apk解析AndroidManifest.xml得到首页Activity
    LINUX 命令行合集
    牛客 NC25077 [USACO 2007 Ope B]Bronze Cow Party
    基于ADB Shell 实现的 Android TV、电视盒子万能遥控器 — ADB Remote ATV
    2022秋实习面经
    SystemVerilog Assertions应用指南 Chapter1.40SVA与功能覆盖
    Windows 命令行界面常用命令
    cola 架构简单记录
    CSS - 浮动布局(float)
    C++中函数原型和函数定义
  • 原文地址:https://blog.csdn.net/weixin_67276852/article/details/126735553
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号