Java面试题笔记(一)

1、面向对象编程的特点?

封装:把属性私有化封装在一个类里面,只能通过方法去访问。

继承:子类继承父类,从而继承了父类的方法和属性。

抽象:比如一个学生类,抽象出了学号SNO、和名字SNAME这些属性,使得开发过程中更加易于理解。

多态:多态分操作符的多态类的多态。类的多态指父类引用指向子类对象,而且有继承,有重写。


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

String是类类型,不是基本类型。

有8种基本类型:

整型:byte 8位 -128 ~ 127

          short 16位 -32768 ~ 32767

          int 32位 -2^31-1 ~ 2^31

          long 64位

浮点型:float 32位,1位符号位,8位指数,23位有效尾数。

             double 64位,1位符号位,11位指数,52位有效尾数。

字符类型:char 16位(整数类型)

布尔类型:boolean


3、int 和 Integer有什么区别

int 是基本类型32位长度整型

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

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


4、String、StringBuffer和StringBuilder的区别

String:字符串常量,字符串长度不可变。Java中的String是immutable(不可变)的。

StringBuffer:字符串变量(可带synchronized关键字保证线程安全)。如果要频繁对字符串内容进行修改,出于效率的考虑最好使用StringBuffer。append 和 insert 方法是StringBuffer的主要操作。append 方法吧字符添加到缓冲区末端,而insert 方法则在指定的点添加字符。

StringBuilder:字符串变量(无法保证线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。

总结:

String:适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况


5、String 能否被继承

不能。一下为一小段源码。String被修饰成final。

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];

    /** Cache the hash code for the string */
    private int hash; // Default to 0
/* ...... ...... ...... */
}

6、Linux 查看文件内容的命令

cat:从第一行开始显示内容,并将所有的内容输出。

tac:从最后一行开始显示内容,并将所有的内容输出。

head:只显示前几行。

tail:只显示后几行。

nl:和 cat 一样,只是nl要显示行号。


7、HashMap 和 Hashtable的区别

8、GC是什么? 为什么要有GC?

GC 是 Garbage Collection 的缩写。即垃圾回收。

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


9、常见的runtime exception

NullPointException 空指针异常

ArithmeticException 算术异常,比如除数为 0

ClassCastException 类型转换异常

ConcurrentModificationException 同步修改异常,遍历一个集合的时候,删除集合的元素,就会抛出该异常

IndexOutOfBoundsException 数组下标越界异常

NegativeArraySizeException 为数组分配的空间是负数异常


10、什么是Java序列化,如何实现Java的序列化?

序列化指的是把一个Java对象,通过某种介质进行传输,比如Socket输入输出流,或者保留在一个文件里。

实现Java序列化的手段是让该类实现接口Serializable,这个接口没有任何方法,仅仅用于表示该类可以序列化。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值