Java基础面试题11-15

名言警句: 不积跬步,无以至千里,不积小流,无以成江海

11.java 中 IO 流分为几种?

  • 按照宏观区分
    输入流和输出流
  • 按照类型区分
    字节流和字符流
  • 流 的概念:
    指的是对一个输入输出源进行数据输入输出的流的操作,就是对数据流的不同操作
    • 区别:
      InputStream/Reader:输入流,分别是 字节流和字符流
      outputStream/Writer:输出流,分别是字节流和字符流

12.Files的常用方法都有哪些?

  • File.exists() 判断文件路径是否存在
  • file.existsDirectory() 判断文件夹是否存在
  • file.delete() 删除文件
  • file.copy() 复制文件
  • file.move();移动文件
  • file.size(); 包含文件的个数
  • file.reader() 读取文件
  • file.writer();写入文件

13.java 容器都有哪些?

  • list(有序,可以重复)
    • ArrayList
    • LinkedList
    • Vectory
  • set(无序,不能重复)
    • HashSet
    • TreeSet
  • Queue(队列)
    • ReqQue
  • Map (无序,不能重复)
    • HahsMap
    • LinkedHashMap
    • Hashtable

14.Collection 和 Collections 有什么区别?

  • Collection是一个顶层集合接口,是List和set的父类
  • Collections:是操作Collection集合的工具类,提供一系列的静态方法(搜索,排序,二分查找,线程安全化等)

15.List、Set、Map 之间的区别是什么?

  • List:是有序存储数据,并且数据可以重复
    • ArrayList:底层采用的数组,查询数据快,插入和删除数据慢,jdk1.8中ArrayList的扩容方式 通过调用grow()方法,中调用CapaCity=new Capacity+(OldCapacity>>1),进行扩容(1.5倍扩容量)进行扩容,然后调用Arrays.copyOf对原数组进行复制
    • LinkedList:底层采用的是链表,查询数据慢,插入和删除数据快
    • Vectory:底层采用的是数组,查询数据快,插入和删除数据慢,线程安全的
  • Set:采用散列数据(HashCode)进行存储数据,所以是无序的,并且不能有重复的数据
    • HashSet:使用Hash算法进行数据存取,存取速度快,当数据存储 超过默认值(loadFactor 0.75),会以近似两倍的方式进行扩容
    • TreeSet:实现了SortMap接口,TreeSet是有序的
  • Map
    • HashMap:底层整体结构采用数组方式存在,每一个元素采用链表的方式存储数据
      1.存储原理:当往HashMap中添加一个元素的时候,会通过hash算法计算key的值,得到数组的下标,
      当数组下标存在的时候,这个添加的元素会以链表的形式存在,最新添加的放在链表
      头,最开始添加的放在链表的最后,如果下标不存在,直接放该在位置
      2.去重原理:hash算法,计算key值相同的概率非常小,如果添加一个元素key通过hash算法,计算得到下标,
      如果下标相同,在该位置计算key值是否相同,如果相同,则覆盖值,不同则直接以链表的形式加入
      3.获取原理:get通过key获取值,key通过hash算法得到,数组的下标,获取该数组元素,在通过key从该链表上获取对应的值
      4.扩容原理:当数组中存储的时间超过(loadFactor 0.75倍),hashMap会以两倍的方式进行扩容

    • LinkedHashMap:原理和HashMap类似,当遍历的时候,其顺序是插入数据的顺序

    • TreeMap:基于红黑树的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值