我是靠谱客的博主 辛勤鞋子,最近开发中收集的这篇文章主要介绍Java基础 IO回顾 题目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

集合 +IO 部分
40 道选择题 (30*1)
 
  1. 单列集合的顶层接口是(    )
    1. Map     
    2. Collection  
    3. List  
    4. Set  
 
  1. ArrayList类的底层数据结构是(   )
    1. 数组结构
    2. 链表结构
    3. 哈希表结构
    4. 红黑树结构
 
  1. LinkedList类的特点是(     )
    1. 查询快
    2. 增删快
    3. 元素不重复
    4. 元素自然排序
 
  1. Vector类的特点是(    )
    1. 线程同步
    2. 线程不同步
    3. 增删快
    4. 底层是链表结构
 
  1. 关于迭代器说法错误的是(   )
    1. 迭代器是取出集合元素的方式
    2. 迭代器的hasNext()方法返回值是布尔类型
    3. List集合有特有迭代器 
    4. next()方法将返回集合中的上一个元素
 
  1. FileReader类描述正确的是(  )
    1. 字节输入流
    2. 字符输入流
    3. 打印流
    4. 序列化流
 
  1. 具有readLine()方法的类是(    )
    1. FileWriter
    2. InputStreamReader
    3. FileReader
    4. BufferedReader
 
  1. 关于newLine()方法描述错误的是(     )
    1. newLine()方法写入换行
    2. newLine()方法与操作系统平台无关
    3. newLine()方法是FileWiter类的方法
    4. newLine()方法是BufferedWriter类的方法
 
  1. 下面代码运行的结果是(  ) 
ArrayList<String> al = new ArrayList<String>();
al.add(true);
al.add(123);
al.add(“abc”);
System.out.println(al);
    1. 编译失败
    2. [true,123]
    3. [true,123,abc];
    4. [abc];
 
  1. 实现下列哪个接口,可以启用序列化功能(   )
    1. Runnable接口
    2. Comparable接口
    3. Serializable接口
    4. Comparator接口
 
  1. 字节输出流的抽象基类是(     )
    1. OutputStream
    2. InputStream
    3. Writer
    4. Reader
 
  1. 下面程序的运行结果是(   )
  FileOutputStream fos = new FileOutputStream(“c:\demo.txt”);
  fos.write(“abc”.getBytes);
  fos.close();
    1. 在C盘创建文件demo.txt,但文件是空的
    2. 在C盘创建文件demo.txt,并写入数据abc
    3. 将C盘已有的文件demo.txt中追加写入abc
    4. 编译失败
 
  1. 将Map集合中的键存储到Set集合的方法是(    )
    1. entrySet()
    2. get()
    3. keySet()
    4. put()
 
  1. ArrayListVector的区别说法正确的是(    )
    1. ArrayList是线程安全的,Vector是线程不安全
    2. ArrayList是线程不安全的,Vector是线程安全的
    3. ArrayList底层是数组结构,Vector底层是链表结构  
    4. ArrayList底层是链表结构,Vector底层是数组结构
 
  1. 存储到TreeSet集合中的对象必须具有(   )  数据结构是红黑树
    1. 必须实现Comparable接口
    2. main方法
    3. getset方法
    4. 必须实现Serializable接口
 
  1. 将集合转成数组的方法是(   )
    1. asList()
    2. toCharArray()
    3. toArray()
    4. copy()
 
  1. 对于增强for循环说法错误的是(  )
    1. 增强for循环可以直接遍历Map集合 
    2. 增强for循环可以操作数组
    3. 增强for循环可以操作Collection集合
    4. 增强for循环是JDK1.5版本后出现的
 
  1. 对于HashMap集合说法正确的是(   )
    1. 底层是数组结构
    2. 底层是链表结构
    3. 可以存储null值和null键
    4. 不可以存储null值和null键
 
  1. Collections工具类中的binarySearch()方法描述正确的是(    )
    1. binarySearch()方法只能操作Set集合
    2. binarySearch()方法只能操作List集合 
    3. binarySearch()方法只能操作Map集合
    4. binarySearch()可以操作所有的集合
 
  1. 下面代码的运行结果是(     )
  ArrayList al = new ArrayList();
  al.add(“a”);
  al.add(“b”);
  al.add(“c”);
  Iterator it = al.iterator();
  while(it.hasNext()){
String s = (String)it.next();
if(s.equals(“c”)){
al.add(“c1”);
}
}
System.out.println(al)
    1. [a,b,c]
    2. [c1]
    3. [a,b,c,c1]
    4. 抛出ConcurrentModificationException异常
 
  1. Properties类中的哪个方法可以和IO流相关联(     )
    1. getProperty()
    2. setProperty()
    3. load()
    4. stringPropertyNames()
 
  1. 以下哪两个流对象可以实现任意类型文件的成功复制(     )
    1. FileReader FileWriter
    2. FileInputStreamFileOutputStream
    3. BufferedRead BufferedWriter
    4. InputSteamReaderOutputStreamWriter
 
  1. 下面哪个流是字节通向字符的桥梁(     )
    1. InputStreamReader
    2. OutputStreamWriter 
    3. LineNumberReader
    4. ObjectInputStream
 
  1. 关于对象的序列化说法错误的是(     )
    1. 实现序列化的对象必须实现Serializable接口
    2. 实现序列化的对象必须自定义序列号
    3. ObjectOutputStream中的writeObject()方法可以将对象写出
    4. ObjectInputStrean中的readObject()方法可以读取对象
 
  1. 关于Map.Entry接口说法错误的是(     )
    1. 具有getkey()方法
    2. 具有getValue()方法
    3. 具有keySet()方法
    4. 具有setValue()方法
 
  1. Set集合的特点是(     )
    1. 元素有序
    2. 元素无序,不存储重复元素
    3. 存储重复元素
    4. Set集合都是线程安全的
 
  1. 关于将数组转成集合后,不可以进行的操作是(    )
    1. 增加集合中的元素
    2. 迭代集合
    3. 修改集合中的元素 
    4. 获取集合中元素的个数
 
  1. 下面代码运行的结果是  (       )
        ArrayList<String> al = new ArrayList<>();
              al.add("s");
              al.add("ddd");
              al.add("true");
              System.out.println(al);
    1. 编译失败
    2. [s,ddd,true]
    3. [true]
    4. 运行报错
 
  1. 关于字符输入流FileReader描述错误的是(     )
    1. 可以读取文本文件
    2. 是Reader的子类
    3. 具有读取一行的方法
    4. 无法获得要读取文件的字节数
 
  1. 使用字符流可以成功复制哪些文件(     )
    1. 文本文件
    2. 图片文件
    3. 视频文件
    4. 以上都可以复制
 
以下题目为多项选择 (10*2)
  1. File类中的listFiles()方法说法正确的是(     )
    1. 获取File对象封装的路径下的全部文件和文件夹对象
    2. 获取File对象封装的路径下的文件
    3. 该方法返回File类型数组
    4. 该方法返回String类型数组
 
  1. 关于File类中的exists()方法说法错误的是(     )
    1. 判断File对象中封装的路径或者文件是否存在
    2. 此方法返回boolean类型值
    3. 判断File对象封装的路径是否是相对路径
    4. 判断File对象封装的路径是否是绝对路径
 
  1. File类中的isDirectory()方法的作用是(   )
    1. 判断File对象封装的是否是文件
    2. 判断File对象封装的是否是目录
    3. 判断File对象中封装的是否是根目录
    4. 返回值类型是boolean
 
  1. 关于HashMap集合说法正确的是(     )
    1. HashMap集合是双列集合
    2. HashMap集合不允许存储重复键
    3. HashMap集合不允许存储重复值
    4. HashMap集合线程是安全的
 
  1. 下列哪两个方法可以创建目录(     )
    1. createNewFile()
    2. createTempFile()
    3. mkdir()
    4. mkdirs()
 
  1. 在进程转换时,下列转换是不可能发生的(   )
    1. 就绪状态->运行状态
    2. 运行状态->就绪状态
    3. 阻塞状态->运行状态
    4. 死亡状态->新生状态
 
  1. 关于泛型的说法正确的是(     )
    1. 泛型是JDK1.5出现的新特性
    2. 泛型是一种安全机制
    3. 使用泛型避免了强制类型转换
    4. 使用泛型必须进行强制类型转换
 
  1. 关于Properties说法正确的是(    )
    1. 是Hashtable的子类
    2. 是双列集合
    3. 可以和IO结合使用
    4. 是HashMap的子类
 
  1. 关于方法的递归算法,说法正确的是(   )
    1. 递归就是方法自己调用自己
    2. 递归的次数不能过大,否则会导致栈内存溢出
    3. 使用递归算法,方法必须有返回值
    4. 构造方法不可以使用递归算法
 
  1. List集合的遍历方式有如下哪几种 (   )
    1. Iterator迭代器实现
    2. 增强for循环实现
    3.  get()size()方法结合实现
    4. get()length()方法结合实现
 
二、 看程序写结果 (5*3)
1、 给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class Test<T> {
    private T name;
    public T getName() {
        return name;
    }
    public void setName(T name) {
        this .name = name;
    }
    public static void main(String[] args) {
        Test<String> strTest = new Test<String>();
        strTest.setName("aaa");
        System. out .println(strTest.getName());
        Test<Integer> intTest = new Test<Integer>();
        intTest.setName(1234);
        System. out .println(intTest.getName());
    }
}
 
2、 给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class Animal {
}
class Dog extends Animal {
}
class Cat extends Animal {
}
class GenericDemo {
    public static void main(String[] args) {
        Collection<Object> c = new ArrayList<Object>();
        Collection<Animal> c1 = new ArrayList<Animal>();
        Collection<Animal> c2 = new ArrayList<Dog>() ;
        Collection<? extends Animal> c5 = new ArrayList<Animal>();
        Collection<? extends Animal> c6 = new ArrayList<Dog>();
Collection<? extends Animal> c4 = new ArrayList<Object>() ;
        Collection<? super Animal> c8 = new ArrayList<Object>();
        Collection<? super Animal> c9 = new ArrayList<Animal>();
        Collection<? super Animal> c10 = new ArrayList<Dog>() ;
    }
}
3、 给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
学生类上面已给出 Student 并且重写了 hashCode() ToString() 两个法
 
public class Demo {
    public static void main(String[] args) {
        HashSet<Student> hs = new HashSet<Student>();
        hs.add( new Student("zhangsan", 19));
        hs.add( new Student("zhangsan", 19));
        hs.add( new Student("lisi", 20));
        hs.add( new Student("wangwu", 22));
        for (Student s : hs) {
            System. out .println(s);
        }
    }
}
 
4、 给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class IOTest {
    public static void main(String[] args) throws IOException {
        write ();
        read ();
    }
    public static void write() throws IOException {
        FileWriter fw = new FileWriter("d:\fw.txt");
        fw.write("hello");
    }
    public static void read() throws IOException {
        FileReader fr = new FileReader("d:\fw.txt");
        int ch = -1;
        while ((ch = fr.read()) != -1) {
            System. out .print(( char ) ch);
        }
    }
     }
 
5、 给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class test {
     public static void main(String[] args) throws IOException {
          write ();
          read ();
     }
     public static void write() throws IOException {
     BufferedWriter bw = new BufferedWriter( new FileWriter("d:\bw.txt", true ));
          bw.write("hello");
          bw.newLine();
          bw.flush();
          bw.close();
     }
 
     public static void read() throws IOException {
          BufferedReader br = new BufferedReader( new FileReader("d:\bw.txt"));
          String line = null ; // String line ;
          while ((line = br.readLine()) != null ) {
               System. out .print(line);
          }
          br.close();
     }
}
输出 hello
三、 简答题 (10*2)
1、 请解释,可以把 List<String> 传递给一个接收 List<Object> 参数的方法吗?为什么?
不可以的,两个 list 集合的范型必须一直,范型是作用于元素的,不是本身的类型
2、 请简述 HashSet 是如何保证元素唯一性的 ?
HashSet集合的特点是元素无序和不重复 。
首先,HashSet的底层 数据结构 是哈希表。哈希表就是存储一系列哈希值的表,而哈希值是由对象的hashCode()方法生成的。
确保元素唯一性的两个方法,hashCode()和equals()方法。
3、 请说明 Map 接口和 Collection 接口的区别
      Map 接口是双列集合顶层接口,每个位置存储一对元素 (key, value)
         Collection 接口是单列集合顶层接口,每个位置存储一个元素
 
4 、说说 throws throw 的区别?
throws 关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象。
throw 关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到 throw 语句时立即停止,它后面的语句都不执行。通常 throw 抛出异常后,如果想在上一级代码中捕获并处理异常,则需要在抛出异常的方法中使用 throws 关键字在方法声明中指定要抛出的异常;如果要捕获 throw 抛出的异常,则必须使用 try{}catch{} 语句。
 
5 、请简述 io 流的分类和功能
按照数据流向
输入流   读入数据   硬盘 -----  内存   inputStream
输出流   写出数据   内存 ------  硬盘 outputStream
 
按照数据类型
字符流
字节流
6 、请简述递归是什么?注意事项是什么?
方法定义中调用方法本身 , 构造函数中不可以使用
7、 字节流和字符流的两个基类是什么?它们是谁是子类?
字节流的两个基类是 InputStream OutputStream ,字符流的两个基类是 Reader Writer ,它们都是 Object 类的直接子类,字节流是处理以 8 位字节为基本单位的字节流类; Reader Writer 类是专门处理 16 位字节的字符流类。 
8、 程序运行时,会在内存中创建多个对象,然而程序结束后,这些对象便被当作垃圾     回收了。如果希望永久保存这些对象
如果希望永久保存这些对象,则可以将对象转为字节数据写入到硬盘上,这个过程称为对象序列化。
9、final finally 的区别?
Final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
finally 是异常处理语句的一部分,表示总执行
 
10、 什么是 java 序列化,如何实现?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行硫化,可以对流化后的对象进行读写操作,也可以将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题
序列化的实现:将需要被序列化的类实现 Serializable 接口
 
 
四、 编程题   (3*5)
 1 从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合
1、高效字符输入流和创建集合
2、操作文件(一次读取一行)添加到集合中
3、释放资源
public static void test1() throws IOException {
        /**
         * 从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合
         * 1、高效字符输入流和创建集合
         * 2、操作文件(一次读取一行)
         *    添加到集合中
         * 3、释放资源
         */
 
        // 1、高效字符输入流和创建集合
        List<String> nameList = new ArrayList<String>();
        BufferedReader bufferedReader = new BufferedReader( new FileReader( new File( "5.txt" )));
        /*
         * 2、操作文件(一次读取一行) 添加到集合中
         */
        String str;
        while ((str = bufferedReader.readLine()) != null ) {
            nameList.add(str);
        }
        // 3、释放资源
 
        bufferedReader.close();
 
        for (String name : nameList) {
            System. out .println(name);
        }
 
    }
 
2 、复制个视频文件 一次操作一个字节数组,并改一个名字
public static void test2() throws Exception {
        // 1、创建流
        InputStream inputStream = new FileInputStream(
                "D:\java_study\java基础课程\day06\avi\06.01_java测试题.avi" );
        OutputStream outputStream = new FileOutputStream( "测试.avi" );
        // 2、操作文件 一次操作一个字节数组
 
        byte [] b = new byte [1024];
        int len;
        while ((len = inputStream.read(b)) != -1) {
 
            outputStream.write(b, 0, len);
        }
        outputStream.close();
        inputStream.close();
    }
3 打印F 盘符 下和F 下所有目录中. txt 文件
public static void img(File dir) {
 
        File[] files = dir.listFiles();
        String[] s = { ".jpg" , ".png" , ".apk" };
        if (files == null ) {
            System. out .println( "亲!没有东西啊!" );
            return ;
        }
        for (File file : files) {
            if (file.isFile()) {
 
                for (String string : s) {
                   
                    if (file.getName().endsWith(string)) {
 
                        System. out .println(file.getName());
 
                    }
                }
            } else {
                img (file);
            }
        }
 
    }
 

最后

以上就是辛勤鞋子为你收集整理的Java基础 IO回顾 题目的全部内容,希望文章能够帮你解决Java基础 IO回顾 题目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部