今日流程12/18

面试题

1.抽象类与接口的区别

1.接口描述了方法的特征,不给出实现,解决java单继承问题,实现了强大的可接插性
2.抽象类提供了部分实现,不能被实例化,可以把公共代码移植到抽象类中
3.面向接口编程而不是面向具体编程。
4.开发中优先选择接口,继承抽象类之后无法在继承,丧失了灵活性。

2.常用的集合有哪些,谈谈你对他们的理解

区别: 
       1.set:无序,元素不可重复
       2.list:有序列表存储,元素可重复
       3.map:无序,元素可重复
理解:
       1.set接口:有两个实现类,HashSet,LinkedHashSet
       2.List接口:三个实现类
                             LinkedList:基于链表实现,内存散乱,增删快,查找慢。
                             Arraylist:非线程安全,效率高;基于数组,便于索引,不便于插入删除
                             Vector:基于线程安全,效率低,基于数组。
       3.Map接口:有三个实现类
                             HashMap:非线程安全,高效,支出null。
                             HashTable:线程安全,低效,不支持null。
                             LinkedHashMap:是hashMap的一个子类,保存了记录的插入顺序
                             SortMap:把保存的记录根据键排序,默认升序

3.==和equals()的区别?

1.==用于比较基本数据类型,比较变量值是否相等,相同则为true。
2.equals()是用来比较两个对象是否相等,实际比较两个对象的内容是否相同。

4.方法重写和重载的区别?

1.方法重写:一般出现在继承中,子类对父类方法的重新实现,重写规则。
2.方法重载;在同一个类中,方法名字相同,参数不同,方法体不同
     重载规则:方法名一致,参数列表的顺序,类型,分数不用,与返回值无关,存在子类与父类中,可以抛出不同的异
常,可以有不同的修饰符。                 

5.throw 和 throws的区别?

  throw:
          throw语句在方法体内,表示抛出异常,由体内语句处理。抛出的是一个实例,执行throw是一定抛出了异常
  throws:
           1)throws,语句用在方法声明后面,表示再抛出异常,由方法调用者处理
           2)throws主要声明这个方法会抛出异常,让调用者知道要解决这个异常
           3)throws 表示出现异常的一种可能性,并不一定发生这些异常  

6. 描述遇到过的异常有哪些?

常见异常:
(1)java.lang.NullPointerException 空指针异常;出现原因:调用了未经初始化的对
象或者是不存在的对象
(2)java.lang.ClassNotFoundException 指定的类找不到;出现原因:类的名称和路
径加载错误;通常都是程序试图通过字符串来加载某个类时可能引发异常
(3)java.lang.NumberFormatException 字符串转换为数字异常;出现原因:字符型
数据中包含非数字型字符
(4)java.lang.IndexOutOfBoundsException 数组角标越界异常;
(5)java.lang.IllegalArgumentException 方法传递参数错误
(6)java.lang.ClassCastException 数据类型转换异常
(7)java.lang.NoClassDefFoundException 未找到类定义错误
(8)SQLException 操作数据库异常
(9)java.lang.InstantiationException 实例化异常
(10)java.lang.NoSuchMethodException 方法不存在异常

7. final, finally, finalize 的区别

1)final:用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。
2)Finally:异常处理语句结构的一部分,表示总是执行。
3)finalize:Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收
集时的其他资源回收,例如关闭文件等。

8. String、 StringBuffer、 StringBuilder 的区别?

(1)可变,不可变:
String:字符串常量,在修改时不会改变自身;若修改,等于重新生成新的字符串对象
StringBuffer:在修改时会改变对象自身,每次操作都是对 StringBuffer 对象本身进
行修改,不是生成新的对象使用场景:对字符串经常改变情况下,主要方法:append(),insert()等;
(2)线程是否安全:
String 对象定义后不可变,线程安全
StringBuffer 是线程安全的,执行效率较慢,适用于多线程下操作字符串缓冲区大量数据
StringBuilder 是线程不安全的,适用于单线程下操作字符串缓冲区大量数据

9. IO 流

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是
数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

10.Java 中有几种类型的流?分别是什么?

10.1  Java 中的流,可以从不同的角度进行分类。
按流的方向分:输入流和输出流。
按处理数据单位分:字节流和字符流。
按实现功能分:节点流和处理流。
10.2. 字节流和字符流的区别
1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节时。先去查指定的编码表
,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI 视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,
就要优先考虑使用字符流,除此之外都用字节流。

流程图

1.首页--快报--分析.png
jmyp.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容