Java问题汇总,持续更新到GitHub

7次阅读

共计 7509 个字符,预计需要花费 19 分钟才能阅读完成。

目录介绍

00.Java 问题汇总
01. 具体问题

好消息

博客笔记大汇总【16 年 3 月到至今】,包括 Java 基础及深入知识点,Android 技术博客,Python 学习笔记等等,还包括平时开发中遇到的 bug 汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是 markdown 格式的!同时也开源了生活博客,从 12 年起,积累共计 N 篇[近 100 万字,陆续搬到网上],转载请注明出处,谢谢!
链接地址:https://github.com/yangchong2…
如果觉得好,可以 star 一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!

00.Java 问题汇总

01.Java 基础问题(19 个)
02.Java 面向对象问题(10 个)
03.Java 数据结构问题(20 个)
04.JavaIO 流问题(6 个)
05.java 多线程问题(19)
06.Java 虚拟机问题(10 个)
07.Java 类加载问题(8 个)
08.Java 反射问题(6 个)
10.Java 异常问题(9 个)

01. 具体问题
1.1 01.Java 基础部分问题(19 个)

1.0.0.1 请手写 equal 方法【String 类】,讲讲具体的原理?Object 类的 equla 方法是怎样的?
1.0.0.2 请说下 String 与 StringBuffer 区别,StringBuffer 底部如何实现?String 类可以被继承吗,为什么?
1.0.0.3 String a=”” 和 String a=new String(“”)的的关系和异同?String 的创建机制如何理解?
1.0.0.4 为什么 Java 中的 String 是不可变的(Immutable)?字符串设计和实现考量?String 不可变的好处?
1.0.0.5 static 关键字可以修饰什么?static 使用的注意事项有哪些?static 关键字的特点?使用 static 存在什么问题?
1.0.0.6 static 变量存储位置是哪里?静态变量的生命周期?静态变量何时销毁?静态引用的对象回收如何理解?
1.0.0.7 访问修饰符 public,private,protected, 以及不写(默认)时的区别?访问修饰符底层怎么实现访问权限管理?
1.0.0.8 静态变量和实例变量的区别?成员变量与局部变量的区别有那些?外部类和内部类有何区别,生命周期是怎样的?
1.0.0.9 如何实现对象克隆?克隆有哪些方式?深克隆和浅克隆有何区别?深克隆和浅克隆分别说的是什么意思?
1.0.1.0 int 和 Integer 的区别?装箱、拆箱什么含义?什么时候装箱 / 拆箱?装箱和拆箱是如何实现的?
1.0.1.1 Object 有哪些公有方法?Object 类 toString()返回的是什么?为什么说类一定要实现 Cloneable 接口才可以克隆?
1.0.1.2 final,finally,finalize 有什么不同?finally 什么情况下不会被执行?java.lang 包下为什么要设置 final?
1.0.1.3 为什么要用通配符?上界通配符和下界通配符注意要点?什么是无界通配符?如何理解泛型编译器类型检查?
1.0.1.4 什么是泛型擦除,能否通过开发中实际案例说下?如何获取泛型的具体的类型【反射】?
1.0.1.5 如何验证 int 类型是否线程安全?那些类型是线程安全的?举一个线程安全的例子【AtomicInteger】?
1.0.1.6 Java 序列话中如果有些字段不想进行序列化怎么办?Java 序列化机制底层实现原理是怎样的?
1.0.1.8 原始数据类型和引用类型局限性?为何要引用基本数据包装类?基本数据类型一定存储在栈中吗?
1.0.1.9 new Integer(123) 与 Integer.valueOf(123)有何区别,请从底层实现分析两者区别?
1.0.2.0 instanceof 它的作用是什么?在使用过程中注意事项有哪些?它底层原理是如何实现的,说说你的理解?

1.2 02.Java 面向对象问题(11 个)

2.0.0.1 面向对象编程的四大特性及其含义?封装、继承、多态分别是什么?为何要封装?为什么是单继承而不能多继承呢?
2.0.0.2 重载和重写的区别?重载和重写绑定机制有何区别?父类的静态方法能否被子类重写?重写是动态绑定,如何理解机制?
2.0.0.3 什么是绑定?静态和动态绑定如何区别?动态绑定编译原理是什么?动态绑定运行原理是什么?
2.0.0.4 接口和抽象类的区别是什么?接口的意义是什么?抽象类的意义是什么?如何选择抽象类和接口?
2.0.0.5 为什么内部类调用的外部变量必须是 final 修饰的?局部变量对垃圾回收机制有什么样的影响?
2.0.0.7 什么是多态?多态的实现方式有哪些?多态有哪些弊端?Java 实现多态有哪些必要条件?多态的实现原理?
2.0.0.9 静态变量和成员变量的区别?代码块有哪些?构造代码块和构造方法哪一个先执行?
2.0.0.8 将不同对象分类的服务方法进行抽象,把业务逻辑的紧耦合关系拆开,实现代码的隔离保证了方便的扩展?
2.0.1.0 抽象类具有什么特点?抽象类和普通类有何区别?抽象类可以 new 吗?会出现什么问题?
2.0.1.1 什么是内部类,有哪些?静态内部类和非静态内部类的区别?内部类作用的作用主要是什么?内部类和外部类联系?

1.3 03.Java 数据结构问题(20 个)

3.0.0.1 在 arrayList 中 System.arraycopy()和 Arrays.copyOf()方法区别联系?System.arraycopy()和 Arrays.copyOf()代码说明?
3.0.0.2 SparseArray 基本介绍,相比 HashMap 为什么性能会好?
3.0.0.3 Arrays 和 Collections 对于 sort 的不同实现原理?说一说它们的区别……
3.0.0.4 Java 集合框架中有哪些类?都有什么特点?Java 集合的快速失败机制“fail-fast”?
3.0.0.5 ArrayList,Vector 和 LinkList 的区别,底层分别是怎么实现的,存储空间是如何扩容的?什么是加载因子?
3.0.0.6 如何理解 ArrayList 的扩容消耗?Arrays.asList 方法后的 List 可以扩容吗?ArrayList 如何序列化?
3.0.0.7 如何理解 list 集合读写机制和读写效率?什么是 CopyOnWriteArrayList,它与 ArrayList 有何不同?
3.0.1.0 HashSet 和 TreeSet 的区别?是如何保证唯一值的,底层怎么做到的?
3.0.1.5 HashMap 和 Hashtable 的区别?HashMap 在 put、get 元素的过程?体现了什么数据结构?
3.0.1.6 如何保证 HashMap 线程安全?底层怎么实现的?HashMap 是有序的吗?如何实现有序?
3.0.1.7 HashMap 存储两个对象的 hashcode 相同会发生什么?如果两个键的 hashcode 相同,你如何获取值对象?
3.0.1.8 HashMap 为什么不直接使用 hashCode()处理后的哈希值直接作为 table 的下标?
3.0.1.9 为什么 HashMap 中 String、Integer 这样的包装类适合作为 K?为啥不用其他作 key 值?
3.0.2.0 HashMap 是如何扩容的?如何理解 HashMap 的大小超过了负载因子定义的容量?重新调整 HashMap 大小存在什么问题吗?

1.4 04.Java Io 流问题(9 个)

4.0.0.1 说一下 Java IO 里面的常见类,字节流,字符流、接口、实现类、方法阻塞?
4.0.0.2 什么是比特(Bit), 什么是字节(Byte), 什么是字符(Char), 它们长度是多少, 各有什么区别?
4.0.0.3 字符流和字节流有什么区别?如何选择字节流或者字符流?什么是缓冲区,有什么作用?
4.0.0.4 IO 流中用到哪些模式?谈一谈 IO 流中用到的适配器模式和装饰者模式的作用优势?
4.0.0.5 说一下对 NIO 的理解?NIO 和 IO 的主要区别?NIO 和 IO 如何影响应用程序的设计?
4.0.0.9 如何实现对象克隆?克隆有哪些方式?深克隆和浅克隆有何区别?深克隆和浅克隆分别说的是什么意思?
4.0.1.0 浅拷贝会创建新的对象吗?对于基本类型拷贝的是什么?怎么样实现浅拷贝,浅拷贝前后对象地址值会一样吗?
4.0.1.1 对字节流进行大量的从硬盘读取, 要用那个流, 为什么?有什么需要注意的问题?

1.5 05.Java 多线程问题(22 个)

5.0.0.1 线程池具有什么优点和缺点?为什么说开启大量的线程, 会降低程序的性能,那么该如何做才能降低性能?
5.0.0.3 线程中 start 和 run 方法有什么区别?wait 和 sleep 方法的不同?sleep()、join()、yield()有什么区别?
5.0.0.4 用 Java 手写一个会导致死锁的程序,遇到这种问题解决方案是什么?如何预防死锁的产生?
5.0.0.5 ThreadLocal(线程变量副本)这个类的作用是什么?ThreadLocal 为何要设计 key 存储当前的 threadlocal 对象?
5.0.0.6 什么是线程安全?线程安全有那几个级别?保障线程安全有哪些手段?ReentrantLock 和 synchronized 的区别?
5.0.0.7 Volatile 和 Synchronized 各自用途是什么?有哪些不同点?Synchronize 在编译时如何实现锁机制?
5.0.0.8 wait()和 sleep()的区别?各自有哪些使用场景?怎么唤醒一个阻塞的线程?Thread.sleep(0)的作用是啥?
5.0.0.9 同步和非同步、阻塞和非阻塞的概念?分别有哪些使用场景?说说你是如何理解他们之间的区别?
5.0.1.0 线程的有哪些状态?请绘制该状态的流程图?讲一下线程的执行生命周期流程?线程如果出现了运行时异常会怎么样?
5.0.1.1 synchronized 锁什么?synchronized 同步代码块还有同步方法本质上锁住的是谁?为什么?
5.0.1.3 CAS 是什么?CAS 原理是什么?CAS 实现原子操作会出现什么问题?对于多个共享变量 CAS 可以保证原子性吗?
5.0.1.4 假如有 n 个网络线程,需要当 n 个网络线程完成之后,再去做数据处理,你会怎么解决这个问题?
5.0.1.5 Runnable 接口和 Callable 接口的区别?Callable 中是如何处理线程异常的情况?如何监测 runnable 异常?
5.0.1.6 如果提交任务时,线程池队列已满,这时会发生什么?线程调度算法是什么?
5.0.1.7 什么是乐观锁和悲观锁?悲观锁机制存在哪些问题?乐观锁是如何实现冲突检测和数据更新?
5.0.1.8 线程类的构造方法、静态块是被哪个线程调用的?同步方法和同步块,哪个是更好的选择?同步的范围越少越好吗?
5.0.1.9 synchonized(this)和 synchonized(object)区别?Synchronize 作用于方法和静态方法区别?
5.0.2.0 volatile 是什么?volatile 的用途是什么?线程在工作内存进行操作后何时会写到主内存中?
5.0.2.1 被 volatile 修饰变量在多线程下如何获最新值?理解 volatile 的 happens-before 关系?多线程下执行 volatile 读写后的内存状态?
5.0.2.2 Volatile 实现原理?一个 int 变量,用 volatile 修饰,多线程去操作 ++,线程安全吗?那如何才能保证 i ++ 线程安全?
5.0.2.3 在 Java 内存模型有哪些可以保证并发过程的原子性、可见性和有序性的措施?

1.6 06.Java 虚拟机问题(13 个)

6.0.0.1 运行时数据区域有哪些?Java 虚拟机栈是做什么的?本地方法栈又是做什么的?
6.0.0.2 对象的内存布局?对象的访问定位方式有哪些?使用指针访问和使用句柄访问各具有何优势?
6.0.0.3 说一下对象的创建过程?变量创建过程种放在虚拟机哪里?变量 [区别静态变量] 什么时候回收?
6.0.0.4 OutOfMemoryError 异常在哪些数据区域中可能会出现?分别说一下这个数据区域出现 OOM 的场景和缘由?
6.0.0.6 Java 中堆和栈的区别?分别写出堆内存溢出与栈内存溢出的程序?以及如何解决溢出代码方案?
6.0.0.7 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
6.0.0.8 java 中垃圾收集的方法有哪些?如何实现检测垃圾?引用计数法有什么不足,说下看法?
6.0.1.1 如和判断一个对象是否存活? 引用计数法和可达性算法哪个更加好?如何理解一个对象不一定会被回收?
6.0.1.2 Class.forName() 和 ClassLoader.loadClass()区别?实际开发你用那种,为什么?
6.0.1.3 Java 对象的访问定位方式有哪些?这些访问方式各有何利弊?如何理解通过句柄访问方式?
6.0.1.4 内存回收主要是针对那块?如何判断对象是否死亡?如何判断一个常量是废弃常量?如何判断一个类是无用的类?

1.7 07.Java 类的加载问题(8 个)

7.0.0.1 Java 内存模型里包含什么?程序计数器的作用是什么?常量池的作用是什么?
7.0.0.2 什么是类加载器?类加载器工作机制是什么?类加载器种类?什么是双亲委派机制?
7.0.0.3 什么时候发生类初始化?类初始化后对类的做了什么,加载变量,常量,方法都内存那个位置?
7.0.0.4 通过下面一个代码案例理解类加载顺序?当遇到 类名. 变量 加载时,只加载变量所在类吗?
7.0.0.5 看下面这段代码,说一下准备阶段和初始化阶段常量变化的原理?变量初始化过程?
7.0.0.7 说收垃圾回收机制?为什么引用计数器判定对象是否回收不可行?有哪些引用类型?
7.0.0.8 谈谈 Java 的类加载过程?加载做了什么?验证做了什么?准备做了什么?解析做了什么?初始化做了什么?

1.8 08.Java 反射问题(6 个)

8.0.0.1 反射的原理是什么?有哪些途径获取到 Class 对象,Class 类的含义和作用是什么?什么是 class 类?
8.0.0.2 有哪些方式可以提高反射效率?为何反射消耗性能?究竟是怎么影响的,举例说明?
8.0.0.3 java 反射机制提供了什么功能?发射具有暴力访问权限,如何防止反射序列化攻击单例?
8.0.0.4 通过反射获得泛型的实际类型参数?反射获取构造方法,变量,方法的方法是哪些?
8.0.0.5 getGenericParameterTypes 与 getParameterTypes 区别?
8.0.0.6 反射有什么作用和应用?反射和注解相比,为何反射消耗性能,有什么优缺点?

1.10 10.Java 异常机制问题(10 个)

10.0.0.1 见过哪些运行时异常?异常处理机制知道哪些?从异常是否必须需要被处理的角度来看怎么分类?
10.0.0.2 运用 Java 异常处理机制?异常处理的原理?Java 中检查异常和非检查异常的区别?
10.0.0.3 异常处理的过程中,你遵循那些好的实践?throw 和 throws 这两个关键字在 java 中有什么不同?
10.0.0.4 你知道什么是“异常链”吗?自定义实现过哪些异常,怎么写的? 可以有一个空的 catch 块吗?
10.0.0.5 Java 异常类有哪些的重要方法?导致“主线程中的异常”的不同场景是什么?
10.0.0.6 看下面这段子类继承父类代码有什么问题?针对抛异常是 IOException 还是 Exception,能随便写吗,结合案例说一下?
10.0.0.7 捕获异常时,为何在 catch 中要注意异常层级关系?需要注意哪些问题?
10.0.0.8 在程序中使用自定义异常类,大体可分为哪些步骤?哪些开发场景用到,说说你的编程经验?

1.12 12.Java 设计模式问题(3 个)

12.0.0.1 实现单例模式有几种方法?懒汉式中双层锁的目的是什么?两次判空的目的又是什么?
12.0.0.2 如何理解生产者消费者模型?写一下生产者消费者模型的代码案例?解决关键问题的思路主要是什么?
12.0.0.3 看下面代码,利用面向对象设计原则如何改进,可以保证代码后期的拓展性和解耦问题?

1.13 [13.Java 其他深入问题[6 个]](https://github.com/yangchong211)

13.0.0.1 通过代码案例分析 Java 内存分配情况?JVM 加载类过程是怎样的?如何对构造方法赋值?分析通过对象调用方法?
13.0.0.2 强引用会被回收吗?软引用的特点?软引用使用场景?当软引用持有多个对象时,如何被回收,回收规则是什么?
13.0.0.3 弱引用有何特点?弱引用被回收是如何做到的?弱引用实际开发案例有哪些?什么时候使用软引用或者弱引用呢?
13.0.0.4 Hash 的使用场景有哪些?Hash 表是干什么的?hash 表具体是如何提高查找的速度,说说你的理解?
13.0.0.5 HashCode 的作用?可直接用 hashcode 判断两个对象是否相等?HashMap 中是如何使用 HashCode 提高去重的逻辑?
13.0.0.6 Hashcode 与 equal 区别?何时需用到 hashcode?如何解决 Hash 冲突?当两个对象 hashcode 相同时如何获取值对象?

其他介绍
01. 关于博客汇总链接

1. 技术博客汇总

2. 开源项目汇总

3. 生活博客汇总

4. 喜马拉雅音频汇总

5. 其他汇总

02. 关于我的博客

我的个人站点:www.yczbj.org,www.ycbjie.cn
github:https://github.com/yangchong211

知乎:https://www.zhihu.com/people/…

简书:http://www.jianshu.com/u/b7b2…

csdn:http://my.csdn.net/m0_37700275

喜马拉雅听书:http://www.ximalaya.com/zhubo…

开源中国:https://my.oschina.net/zbj161…

泡在网上的日子:http://www.jcodecraeer.com/me…

邮箱:yangchong211@163.com
阿里云博客:https://yq.aliyun.com/users/a… 239.headeruserinfo.3.dT4bcV
segmentfault 头条:https://segmentfault.com/u/xi…

掘金:https://juejin.im/user/593943…

正文完
 0