目录
1.4.1 什么是变量、成员变量、局部变量,以及成员变量和局部变量的区别?
2.2 关于final、finally、finalize的区别?
2.4 关于String、StringBuffer和Stringbuilder的区别?
2.6 hashCode()和equals()两种方法是什么关系?
1.关于Java概念
1.1 谈谈对Java的理解?
Java是一门面向对象编程语言,简单易学,吸收了C++语言的优秀特点,摒弃了C++中难以理解多继承、指针等概念,是一种跨平台的编程语言,支持网络编程、多线程,编译与解释并存,具有健壮性和安全性。
1.2 Java的基础数据类型?
数据类型分类和占用内存大小如下图:
1.3 关于面向对象的设计理解
1.3.1 面向对象的特性有哪些?
1.3.2 重写和重载的区别?
都是多态的表现形式,只是多态可以分为多态编译时多态(重载)和运行时多态(重写):
1.3.3 面向对象的设计原则是什么?
设计模式都是基于此原则展开,也就是SOLID原则,具体如下:
1.4 关于变量与方法的理解?
1.4.1 什么是变量、成员变量、局部变量,以及成员变量和局部变量的区别?
变量是指在程序执行过程中,在某个范围内其值可以变化的量,从本质上讲变量就是内存中的一小块区域。
在使用变量时需要遵循“就近原则”,首先在局部范围找,然后在全局范围找。
1.4.2 静态变量和实例变量的区别?
1.4.3 静态方法与实例方法的区别?
2.关于Java基础知识
2.1 Error和Exception的有什么关系和区别?
Exception和Error的关系:
Exception和Error的区别:
2.2 关于final、finally、finalize的区别?
2.3 什么是强引用、软引用、弱引用、虚引用?
不同的对象引用类型主要是体现对象不同的可达性状态,影响的是垃圾回收。
- 强引用:就是常见的普通对象引用,只要对象被强引用着垃圾回收器就不会回收它;
MyObject myObject = new MyObject(); //此处 myObject 即是强引用
- 软引用:软引用需要使用SoftReference 来做特殊声明,当系统内存充足时不会回收,在OOM之前会被垃圾回收;
SoftReference<MyObject> softReference = new SoftReference<>(new MyObject());
- 弱引用:弱引用需要使用WeakReference类来做特殊声明,不论内存是否充足,只要垃圾回收执行它就会被回收;
SoftReference<MyObject> softReference = new SoftReference<>(new MyObject());
- 虚引用:不影响对象的生命周期,在任何时候都可能会被垃圾回收。虚引用其实形同虚设的,作用仅仅是提供了一种确保对象被 finalize 以后,做某些事情的机制,比如,通常用来做所谓的 Post-Mortem 清理机制。虚引用必须和引用队列(ReferenceQueue)联合使用,需要使用引用队列(ReferenceQueue)来实现对应的通知机制,被垃圾回收后的虚应用的对象会被放入到引用队列中。
2.4 关于String、StringBuffer和Stringbuilder的区别?
2.5 ==和equals的区别?
2.6 hashCode()和equals()两种方法是什么关系?
2.7 深拷贝和浅拷贝的区别?
2.8 int和Integer的区别?
2.9 接口和抽象类有什么区别?
抽象类是用来捕捉类的通用特性的,接口是抽象方法的集合。从设计层面上讲,抽象类是对类的抽象,是一种模板设计;接口时行为的抽象,是一种行为的规范。
2.10 Java提供哪些IO方式?
2.11 什么是阻塞和非阻塞、同步和异步?
2.12 描述BIO、NIO、AIO有什么区别?
Java提供的常见IO 模型有3种,分别是: 传统Java.io包中基于流实现的BIO(排队打饭模式)、Java1.4后引入的框架NIO(点单等待被叫模式)、java1.7后引入的AIO(包厢模式)。