javaSE常见面试题

示例 1 : 面向对象的特征有哪些方面?

最常见的是把属性私有化封装在一个类里面,只能通过方法去访问
继承
子类继承父类,从而继承了父类的方法和属性
抽象
比如一个英雄类,抽象出了name,hp这些属性,使得开发过程中更加易于理解
多态
多态分操作符的多态和类的多态。 类的多态指父类引用指向子类对象,并且有继承,有重写。

示例 2 : String是最基本的数据类型吗?
String是类类型,不是基本类型。
基本类型 有八种
这八种基本类型分别是:
整型 (4种)
字符型 (1种)
浮点型 (2种)
布尔型(1种)

** 示例 3 : int 和 Integer 有什么区别?**
int 是基本类型32位长度的整数

Integer 是类类型,是int的封装类

int和Integer之间可以通过自动装箱 自动拆箱 互相转换

示例 4 : String 和StringBuffer的区别?
String是immutable的,其内容一旦创建好之后,就不可以发生改变。
StringBuffer 是可以变长的,内容也可以发生改变
改变的原理是StringBuffer内部采用了字符数组存放数据,在需要增加长度的时候,创建新的数组,并且把原来的数据复制到新的数组这样的办法来实现。
更多细节可以参考 模仿StringBuffer的 MyStringBuffer 类是如何实现的。

示例 5 : 运行时异常与一般异常有何异同?
运行时异常 又叫做非可查异常,在编译过程中,不要求必须进行显示捕捉
一般异常又叫做可查异常,在编译过程中,必须进行处理,要么捕捉,要么通过throws 抛出去.

示例 6 : 说出ArrayList,Vector, LinkedList的存储性能和特性
先说ArrayList和Vector
两者都继承了抽象类AbstractList,但是Vector是线程安全的,而ArrayList是非线程安全的

再说ArrayList和LinkedList的区别
ArrayList 是数组结构,所以定位很快,但是插入和删除很慢
LinkedList 是双向链表结构,所以插入和删除很快,但是定位很慢

示例 7 : Collection 和 Collections的区别。
首先不要说成了一个是单数,一个是复数。。。
Collection是接口,是List和Set的父接口
Collections是工具类,提供了排序,混淆等等很多实用方法

示例 8 : &和&&的区别
&:有两个作用,分别是位与逻辑与
&&:就是逻辑与
作为逻辑与,&和&&分别表示长路与和短路与
长路与:两侧都会被运行
短路与:只要第一个左边是false右边就不再执行了

示例 9 : HashMap和Hashtable的区别
HashMap和Hashtable都实现了Map集合,都是键值对存储数据的方式
区别一:
HashMap可以存放一个null
Hashtable不可以存放null
区别二:
HashMap不是线程安全的类
Hashtable是线程安全的类

示例 10 : final, finally, finalize的区别
final修饰类,方法,基本类型变量,引用的时候分别有不同的意思
final修饰类:表示该类不能被继承
final修饰方法:表示该方法不能被重写
final修饰变量:该变量变为常量,值不能被更改
final修饰引用:表示该引用只有一次指向对象的机会。
finally
finally 是用于异常处理的场面,无论是否有异常抛出,都会执行
finalize
finalize是Object类的方法,所以类都继承这个方法。当一个对象满足垃圾回收的条件,并被回收的时候,其finalize()方法就会被调用.

示例 11 : Overload和Override的区别,即重载和重写的区别。 Overloaded的方法是否可以改变返回值的类型?
Overload是方法重载的意思,指的是在同一个类里面,方法名一样,但是参数不一样
Override是方法重写的意思,指的是子类继承了父类的某个方法后,重新又写了一遍
Overloaded的方法是否可以改变返回值的类型?
可以,重载其实本质上就是完全不同的方法,只是恰好取了相同的名字

示例 12 : Error和Exception有什么区别?
Error和Exception都继承了Throwable类
Error通常指的是JVM层面的错误,比如内存不足OutOfMemoryError
Exception指的是代码逻辑的异常,比如下标越界OutOfIndexException

示例 13 : abstract class和interface有什么区别?
使用方式:
抽象类只能够通过继承被使用
接口必须通过实现被使用

实现方法:
抽象类不仅可以提供抽象方法,也可以提供实现方法
接口只能提供抽象方法,不能提供实现方法。 但是在JAVA8版本开始,接口可以提供实现方法了,前提是要在方法前加一个default修饰符

** 示例 14 : heap和stack有什么区别**
heap: 堆
stack: 栈 (在一些书籍里,会被翻译为堆栈,实际上指的就是单纯的这个栈)

存放的内容不一样:
heap: 是存放对象的
stack: 是存放基本类型(int, float, boolean 等等)、引用(对象地址)、方法调用

存取方式不一样:
heap: 是自动增加大小的,所以不需要指定大小,但是存取相对较慢
stack: 是固定大小的,并且是FILO 先入后出的顺序,并且存取速度比较快

示例 15 : GC是什么? 为什么要有GC?
GC是Garbage Collection的缩写,即垃圾回收
这里所谓的垃圾,指的是那些不再被使用的对象,JVM的垃圾回收机制使得开发人员从无聊、容易犯错的手动释放内存资源的过程中解放出来。
开发人员可以更加专注的进行业务功能的开发,而资源回收的工作交由更加专业的垃圾回收机制自动完成。

示例 16 : short s1 = 1; s1 = s1 + 1;有什么错?
short s1 = 1; 这一句没有错误,编译器会自动把1这个整数处理为short.
s1 = s1 + 1; 右侧的表达式会返回一个Int类型的整数,再把这个int类型的整数赋给short类型的s1的时候,就会出现强制转换错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值