目录介绍

  • 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个]

  • 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.关于我的博客

Java问题汇总,持续更新到GitHub的更多相关文章

  1. 中国.NET:各地微软技术俱乐部汇总(持续更新中...)

    中国.NET:各地微软技术俱乐部汇总(持续更新中...)   本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by ​史记微软. ...

  2. 跟我学SpringCloud | 终篇:文章汇总(持续更新)

    SpringCloud系列教程 | 终篇:文章汇总(持续更新) 我为什么这些文章?一是巩固自己的知识,二是希望有更加开放和与人分享的心态,三是接受各位大神的批评指教,有任何问题可以联系我: inwsy ...

  3. 《WCF技术剖析》博文系列汇总[持续更新中]

    原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...

  4. redis日常使用汇总--持续更新

    redis日常使用汇总--持续更新 工作中有较多用到redis的场景,尤其是触及性能优化的方面,传统的缓存策略在处理持久化和多服务间数据共享的问题总是不尽人意,此时引入redis,但redis是单线程 ...

  5. Type Script在Visual Studio 2013中的问题汇总(持续更新…)

    TypeScript在vs2012下的问题 TypeScript对VS2012支持度比较低,建议升级为VS2013版本以上. 在VS2013中无法创建TypeScript项目 VS2013默认不支持T ...

  6. 优步UBER司机全国各地最新奖励政策汇总(持续更新...)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://didi-uber.com/archiv ...

  7. 痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手 ...

  8. Java名词术语---持续更新

    在看技术文档的过程中,经常会出现新的java缩写术语,很多时候都不知道它们是什么,在这里记下,持续更新. ——————————————————————————————————————————————— ...

  9. IT书籍下载汇总--持续更新

    本书单由北北分享,并持续更新,请将该地址加入收藏夹:北北的书单 .badge{float:right;}.list-group-item > .badge + .badge{margin-rig ...

  10. JAVA eclipse 问题汇总(持续更新)

    解决eclipse中文字很小 新下载的eclipse4.2.1版本,显示中文字体很小,但是英文比较正常.网上查看要更改字体大小,但是更改后英文也变大了,不是想要的结果.window – prefere ...

随机推荐

  1. CentOS7上systemctl的使用

    CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替. 1.原来的 service 命令与 s ...

  2. 亚马逊Dynamo数据库解读(英文版)

    最近看了亚麻的Dynamo,个人认为其中always writeable的业务目标,对于DHT,vector clock,merkel tree的应用,包括对于一致性和高可用的权衡(基于CAP猜想,实 ...

  3. Kotlin 协程五 —— 在Android 中使用 Kotlin 协程

    目录 一.Android MVVM 结构 二.添加依赖 三.在后台线程中执行 3.1 协程解决了什么问题 3.2 保证主线程安全 3.3 withContext 的性能 四.结构化并发 4.1 追踪协 ...

  4. 用BootstrapBlazor制作修改订单字段的页面

    1.在Shared文件夹下新增一个razor 2.页面初始化的时候获取订单信息 准备一个名为OrderId的参数 准备重写页面初始化时的方法 改成异步的形式来重写 4.获取数据 就3行代码. 声明这个 ...

  5. TCP的链接和断开_wireShark实践

    目录 准备 TCP连接的三次握手 WireShark验证 TCP的四次挥手 WireShark验证 状态解释 其他的 # 概述 终于到了学习总结时间了 准备 TCP连接的三次握手 转自https:/ ...

  6. SQL SERVER——高可用技术概述

    自从SQL Server 2005以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着SQL Server 2008,SQL Server 2008 R2,SQL Serv ...

  7. HttpRunner使用教程?

    什么是HttpRunner? 它是一种面向http协议的测试框架,它只需要去维护一份yaml/json文件就可以使用自动化测试,结合locus性能测试,线上性能监控,持续集成等多种需求 工作原理: 通 ...

  8. Java 常用类 String类与其他结构之间的转换-----String 与 基本数据类型,包装类之间的转换

    1 /* 2 涉及到String类与其他结构之间的转换 3 4 */ 5 6 //String 与 基本数据类型,包装类之间的转换 7 //String --->基本数据类型,包装类:调用包装类 ...

  9. Java 线程通信 例子:使用俩个线程打印1-100.线程1 线程2 交替打印

    1 package bytezero.threadcommunication; 2 3 /** 4 * 线程通信的例子:使用俩个线程打印1-100.线程1 线程2 交替打印 5 * 6 * 涉及到的三 ...

  10. 【Flink入门修炼】2-2 Flink State 状态

    什么是状态?状态有什么作用? 如果你来设计,对于一个流式服务,如何根据不断输入的数据计算呢? 又如何做故障恢复呢? 一.为什么要管理状态 流计算不像批计算,数据是持续流入的,而不是一个确定的数据集.在 ...