开发者社区> 杨充> 正文

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

简介: 目录介绍 00.Java问题汇总 01.具体问题 好消息 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是m...
+关注继续查看

目录介绍

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

好消息

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

00.Java问题汇总

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.关于博客汇总链接

02.关于我的博客

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
逛了五年GitHub,终于整理出七大java开源技术项目文档,赶紧收藏
大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以将 Github 上非常棒的七大Java开源项目技术文档整理下来供大家学习!!!
70 0
共36万字!为上岸Alibaba,我把Github上Java面试题都整理了一遍
如果你不停地加班。却很少冒险,也很少学习,那你极大可能会陷入到内卷中。 为什么这么说呢?我们先来捋清楚「内卷」的概念:
39 0
震撼!阿里首次开源 Java 10万字题库,Github仅一天星标就超60K
众所周知“金三银四”是程序员找工作、跳槽最重要的月份。现在只剩下三个月的时间可以准备。随着行业的发展程序员面试也越来越难,面试中都是7分的能力,再加上3分的技巧;
54 0
爆赞!首次公布阿里Java成长路线,Github访问量突破80万
作为程序员,进大厂是大多数人的梦想,进大厂的好处也如下图一样: 有面儿,不易失业。 牛人多,培训多,成长更快。 钱多。 有较为完善的晋升规则。 站在巨人肩膀人,眼界开阔
26 0
java oop经典案例开发与源码 -java swing 羊了*羊 简易版本开发 (1) 地图模块编辑器开发(附github源码地址)
java oop经典案例开发与源码 -java swing 羊了*羊 简易版本开发 (1) 地图模块编辑器开发(附github源码地址)
35 0
这份github上被14万人点赞的Java教程太强了
这份github上被14万人点赞的Java教程太强了
64 0
我把Github上最牛b的Java教程和实战项目整合成了一个PDF文档
写在前面 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整理下来的想法。觉得不错的话,欢迎小伙伴们去star一波。 很多小伙伴都不知道学习什么开源项目,这篇文章定能为你解决疑惑。 不论你想要看 Java 教程方向的开源项目、Java实战项目、SpringBoot教程还是说想要看微服务、分布式相关的开源项目,你都可以在上面找到需要的资源!
178 0
GitHub上标星75k+超牛的《Java面试突击版》,分享PDF离线版
前言 不论是校招还是社招都避免不了各种面试。笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个有章可循‘说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试:
162 0
推荐一个GitHub上牛b的Java学习项目!已整理成了文档版本
很多Java程序员一直希望找到一份完整的学习路径,但是市面上很多书都是专注某一个领域的,没有一份完整的大图,以至于很多程序员很迷茫,不知道自己到底应该从哪里开始学,或者不知道自己学习些什么。 好在很早之前就有人总结了一份《Java工程师成神之路》,作者按照自己的经验总结了从基础,到高级、底层、架构、进阶、扩展等6个大的章节。几乎囊括了Java体系内的所有知识点。
63 0
Github上热搜的Java开源商城项目合集,这个是真的好
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。 其它的先不说,一起来看看运行效果,首先是注册中心注册服务信息:
209 0
+关注
杨充
从事Android开发,滴滴出行
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载
Java单元测试实战
立即下载