JAVA面试java入门基础Java学习笔记

JAVA面试中常出现的J2SE面试题(一)

2017-05-26  本文已影响54人  start筑梦

复习下JavaSE的基础知识吧,面试的时候可是会经常问到,也不能说不会,只是突然问到,有的就真的忘了,哈哈,下面问题和答案都来自整理,如有错误之处,请指出,谢谢啦~

该好好思考下啦

**** 1.面向对象的特征有哪些方面?****

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

****2. String是最基本的数据类型吗?****

String是类类型,不是基本类型。
 基本类型有八种
 这八种基本类型分别是:
       整型 (4种)  byte、short、int、long
      字符型 (1种)char
      浮点型 (2种)float、double
      布尔型(1种) boolean

****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接口,都是键值对保存数据的方式

区别1: HashMap可以存放 null        Hashtable不能存放null
区别2:HashMap不是[线程安全的类]     Hashtable是线程安全的类

****10. final, finally, finalize的区别****

 final     
修饰类,方法,基本类型变量,引用的时候分别有不同的意思
修饰类 表示该类不能被继承
修饰方法 表示该方法不能被重写
修饰基本类型变量 表示该变量只能被赋值一次
修饰引用 表示该引用只能一次指向对象的机会
finally
是用于异常处理的场面,无论是否有异常抛出,都会执行
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有什么区别?****

abstract class [抽象类]和interface[接口]的区别
使用方式:
 抽象类只能够通过继承被使用    
 接口必须通过实现被使用

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

****14.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的时候,就会出现强制转换错误

****17.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?****

Math.round 的意思是+0.5  # 取整数
所以 Math.round(11.5) 即 11.5+0.5 = 12
Math.round(-11.5) 即 -11.5+0.5 = -11

****18.String s = new String("xyz");创建了几个String Object?****

String s = new String("xyz");
首先构造方法 new String("xyz"); 中的"xyz" 这本身就是一个字符串对象
然后 new 关键字一定会创建一个对象
所以总共创建了两个String对象

****19.Java有没有goto?****

有,goto是关键字,但是是#保留字,并不具备功能性

****20.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?****

 接口是否可继承接口? 
可以,比如List 就继承了接口Collection

 抽象类是否可实现(implements)接口? 
可以,比如 [MouseAdapter鼠标监听适配器] 是一个抽象类,并且实现了[MouseListener]接口

抽象类是否可继承实体类(concrete class)?
可以,所有抽象类,都继承了Object

好啦,今天就先到这里,上面的题都是一个个知识点,如果发现哪个不太熟的话,可以去专门看看这块。加油!

上一篇下一篇

猜你喜欢

热点阅读