From 77d0d8a166230213acfeae08bc6b939ecac54ce6 Mon Sep 17 00:00:00 2001 From: hexiaosa <1162569220@qq.com> Date: Sat, 22 Jul 2017 22:29:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BF=BB=E8=AF=91=20Core=20Java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c4944fb..b24626c 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ ## Contents * [数据结构和算法](#数据结构与算法) - * [Java 核心](#core-java) + * [Java 核心](#Java核心) * [Android 核心](#core-android) * [架构](#architecture) * [设计问题](#design-problem) @@ -94,6 +94,103 @@ * 深度优先搜索 * 贪心算法 + ### Java 核心 + +* OOP概念 + - OOP,Object-Oriented Programming,即面向对象编程,是使用类,对象,继承,多态,抽象和封装设计程序的方法论。 + +* 抽象对象和接口的不同之处 + - 抽象类是包含具体方法和抽象方法的类,抽象方法必须被子类继承,抽象类是可继承的。 + 接口就像一个类的蓝图/合约。它只包含子类必须继承的空方法,子类提供了每个方法的具体实现。接口是可实现的。 + +* 什么是序列化?你是怎么实现它的? + - 序列化是将对象转为字节流的过程,为了保存一个对象到内存,在被重新创建的时候能够仍然使用原始的状态和数据。在 Java 中有两种方式可以实现序列化:就是通过实现 Serializable 或者 Parcelable,但是在 Android 中尽量不要使用 Serializable,使用 Parcelable 比 Serializable 效率高大概十倍,因为 Serializable 使用的反射是一个很慢的进程,并且会产生大量的临时对象经常会导致垃圾回收。 + +* 什么是单例类? + - 单例是一个类只能被实例化一次。单例模式限制了一个类只能实例化成一个对象,当一个对象需要在整个系统中协调行为的时候是很有用的。这个概念有时普遍用于当只有一个对象存在操作更有效,或者对于一个严格实例化确定数量对象的系统。 + +* 什么是匿名类? + +* 对于 String 来说,== 和 .equals 的区别是什么? + +* hashCode() 和 equals() 是用来做什么的? + +* final, finally, finalize 是什么? + +* 什么是内存泄漏,Java 是怎么处理它的? + +* 什么是垃圾回收?它是怎么工作的? + - 所有位于堆上的对象都被JVM管理,只要对象被引用,JVM就认为它是存活的,一旦对象不再被引用,也就是不会被代码所使用,垃圾收集器就会回收它并收回不再使用的内存。 + +* Array 和 ArrayList + +* HashSet 和 TreeSet + +* Java 中的类型转换 + +* 重载和重写的区别 + - 重载是发生在编译时,而重写发生在运行时。重载方法声明的绑定在编译时调用,而重写方法声明的绑定在运行时。 + 静态方法可以被重载,也就是说相同方法名的静态方法可以不只有一个。静态方法不可以被重写,即使你在子类里声明了一个静态方法,它与父类中相同方法名的那个方法也无关。 + 它们最基本的区别就是:重载在同一个类里,而重写是父类和子类中发生的。重写是子类对父类中方法的具体实现。 + 静态绑定是用于重载方法,动态绑定用于重写方法。相比于重写,重载给出了更好的体验,原因就是重写是动态绑定的。 + 私有方法和最终方法可以被重载但不能被重写,一个类可以有多个相同方法名的私有/最终方法,但是子类不可以重写父类的私有/最终方法。 + 返回值类型不能区分方法重载,方法重载中返回值类型什么不重要,它可以是相同的,也可以是不同的。但是在方法重写中,重载方法必须和原方法具有相同的返回值类型。 + 方法重载中,参数列表需要时不相同的。方法重写中,参数列表必须是相同的。 + +* 你知道有哪些访问修饰符?每个的作用范围都是什么? + +* 一个接口可以继承另一个接口吗? + +* Java 中 static 是什么意思? + +* Java 中 static 方法是否可以被重写? + +* 什么是多态?继承呢? + +* Integer 和 int 的区别什么? + +* Java 中是否可以传递值或引用,请详细说明。 + +* 什么是线程池? + +* 局部变量,实例变量和全局变量的区别是什么? + +* 什么是反射? + +* Java 中强引用,软引用,弱引用都是什么? + +* 什么是依赖注入?你能举出几个库吗?你用过哪些吗? + +* synchronized 关键字的含义。 + +* 为什么说 String 是不可变的? + +* 修饰符 transient 和 valatile 是用来干什么的? + +* finalize() 方法是干什么的? + +* try{}finally{} 实现流程是什么? + +* 对象的实例化和初始化的区别。 + +* 静态块什么时候执行? + +* 解释 Java 中的泛型。 + +* StringButter 和 StringBuilder 的区别。 + +* StringBuilder 怎么去避免不可变 String 的分配问题? + +* 什么是自动装箱和自动拆箱? + +* Enumeration 和 Iterator 的区别。 + +* Java 中 fail-fast 和 fail-safe 的区别是什么? + +* 什么是 Java 优先队列? + +* 什么是设计模式? + ### 贡献者 感谢这些无私的贡献者,排名不分先后。