java基础面试题

来源:互联网 发布:富士康mac是什么意思啊 编辑:程序博客网 时间:2024/06/07 06:35

初级java基础面试题

  1. char 类型,为了什么可以存中文字符
    char类型的大小是两个字节,而一个中文字符的大小正好是两个字节,所以可以存中文字符

2.while 与do while 的区别
while是先判断再循环,do while是先循环一遍再判断

3.算法:冒泡排序 数组{99,72,3,68,29,7,90,100,36,51}
4.算法:二维数组 ,杨辉三角 打印15行的杨辉三角
5.java面向对象的三个特点:封装 继承 多态

6.类与类之间的三种关系
内部类

7.什么叫重载 什么叫重写 二者之间的区别
重写:子类对父类允许访问的方法的实现过程进行重新编写,返回值形参都不改变,外壳不变,核心重写。
重载:在一个类里面,方法名字相同,参数不同,返回类型可以相同也可以不同
区别:重载是一个类中多态性的表现,重写是子类与父类中多态性的表现。

8.java中方法的权限修饰符有哪些,类的权限修饰符有那些
类的权限修饰符:public protected, friendly, private.
方法的权限修饰符:abstract, public ,static ,private,

9.8种基本数据类型和对应的字节数取值范围
整数类型:
byte(8位,一个字节,取值范围-128到127),
short(16位,两个字节,取值范围-32768到32767),
int (32位,4个字节,取值范围-2147483648~2147483647),
long. (64位,8个字节)
浮点类型:
float(32位,4个字节,用于存储小数点数字),
double(64位,8个字节 ,也是用来存取小数点,与float的区别是float的有效小数点只有6到7位).
字符型:char(16位,两个字节,存储单个字符)
布尔型:boolean(64位,8个字节,值只有true和false).

10.break和continue的区别
break用于终止最近的封闭循环或者它所在的switch语句。控制传递给终止语句后面的语句。
continue 将控制权传递给它所在的封闭迭代语句的下一次迭代。

11.String s = “123”和String s = new String(“123”);的区别
前者存储位置在栈中,后者存储位置在堆中。

12.多态:封装
多态:多态的表现形式:重写和重载。
封装:信息的隐蔽

13.==和equals的区别
“==”操作比较的是两个变量的值是否相等,对于引用类型变量在堆中存储的地址是否相同,即栈中的内容是否相等。
“equals”表示的是两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

14.String 和StringBuffer的区别
String是字符串常量
Stringbuffer是字符串变量(线程安全)

15.StringBuffer和StringBuilder的区别
StringBuffer(线程安全)
StringBuilder(非线程安全)

16.throw和throws的区别
throw是一个语句抛出一个异常
throws是方法级别异常
17.与自动打包解包相关的面试题
Integer i1 = 100;
Integeri2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
打印的结果是什么 ?为什么?
18.final,finally,finalize的区别
final:
修饰符(关键字),如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为 abstract,又被声明为final。将变量或方法声明为final,可以保证它们在使用中不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally:
在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally块(如果有的话)

finalize:
Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个
对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资
源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的

19.四种io流的基本流

20.求10!的阶乘 递归算法

21.列出几种内部类(最少三种)
成员内部类,方法内部类,匿名内部类。静态嵌套类。

22.手动画出继承类图

23.手动画出集合框架继承类图

24.HashMap和Hashtabl的区别
1: HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。
HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。

2:另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。

3:由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。
HashMap不能保证随着时间的推移Map中的元素次序是不变的。
25.set和list的区别
26.抽象类和接口的区别
27.try catch 和throws的区别
28.运行时异常和一般异常有什么不同
29.&和&&的区别
30.Collection和Collections的区别

0 0