练习题请作答

练习题(答案都是上课讲的知识点)

IO

填空

  1. IO当中4个父类分别是( ) ( ) ( ) ( )

    - 字节输出流 OutputStream
    - 字节输入流 InputStream
    - 字符输出流 Writer
    - 字符输入流 Reader
    
  2. IO当中分类

    1. 按照数据流向分,可以分为( )流, ( )流, 以( )为参照物

      输入流/输出流 内存
      
    2. 按照数据类型分, 可以分为( )流, ( )流.

      - 字节流:一连串的0 1 二进制,0000 0001,逻辑单位是字节
      - 字符流: 一连串的字符序列,(可以理解为一种文化符号,,, abc)
      
  3. 可以通过( ), ( ) 方式实现换行功能

    // \r\n  \r \n
            //out.write("\r\n".getBytes());
            //out.write("\r".getBytes());
            //out.write("\n".getBytes());
            // System.lineSeparator()默认换行符
    
  4. 实现文件追加功能,应该使用FileOutputStream的哪个构造方法(

    | FileOutputStream(File file)        创建一个向指定 File 对象表示的文件中写入数据的文件输出流。 |
    | ------------------------------------------------------------ |
    | FileOutputStream(File file,  boolean append)       创建一个向指定 File  对象表示的文件中写入数据的文件输出流。 |
    | FileOutputStream(String name)        创建一个向具有指定名称的文件中写入数据的输出文件流。 |
    | FileOutputStream(String name,  boolean append)       创建一个向具有指定 name 的文件中写入数据的输出文件流。 |
    

    )

  5. 使用FileInputStream, 用while循环读取数据的时候, 我们判断读取到末尾的判断依据是( )

    返回值是-1
    
  6. 使用InputStream中的read() 方法的返回值代表什么意思? ( )

    读取单个字节 ,返回值是字节值 readData
    
  7. 使用InputStream中的read(byte[] b) 方法的返回值代表什么意思? ( )

    返回值代表int, 代表数组。
    
  8. // 假设a.txt当中有一个字符串    "abcdef" 
    // 代码片段
    FileInputStream in = new FileInputStream("a.txt");
    byte[] bytes = new byte[4];
    readCount1 = in.read(bytes);
    // 请问 此时 bytes数组中的值是什么??  readCount1的值是几??
    readCount2 = in.read(bytes);
    //  请问 此时 bytes数组中的值是什么??  readCount2的值是几??
    
    
  9. //有个a.txt文件,里面有一行字符串abcdef
    FlieOutputStrem out = new FileOutputStream("a.txt")
    // 此时a.txt文件中是什么?
    out.write(97);
    // 此时a.txt文件中是什么?
    out.close()
    
  10. // a.txt中有字符串   "五五开卢本伟white"
    public static void main(String[] args){
        FileInputStream in = new FileInputStream("a.txt")
        FileOutputStream out1 = new FileOutputStream("b.txt")
        FileOutputStream out2 = new FileOutputStream("c.txt")
        copyFile(in , out1);
        copyFile(in , out2); 
        in.close();
        out1.close();
        out2.close();
    }
    
    
    public void copyFile(InputStream in, OutputStream out){
        int readCount;
        byte[] bytes = new byte[1024];
        while((readCount = in.read(bytes)) !=-1){
            out.write(bytes,0,readCount);
        }
    }
    // 请问,b.txt文件的内容是什么??
    // 请问, c.txt文件中内容是什么??
    
    
    
  11. BufferedInputStream与BufferedOutputStream中默认缓冲区大小是(8kB )

  12. BufferedWriter与BufferedReader中默认缓冲区大小是(16kB )

  13. BufferedWriter中特有的方法是( newline() //换行。)

  14. BufferedReader中特有的方法是( readline() //转行取字符串。 )

  15. 使用BufferedReader中特有的方法,使用while循环读取的时候,我们判断读取结束的依据是什么( !=null )

  16. FileWirter out= new FileWirter("a.txt")
    out.write("哈哈哈")
    // 执行到这里 请问此时a.txt文件中的内容是什么?? 空
    out.flush();    
    // 执行到这里 请问此时a.txt文件中的内容是什么?? 哈哈哈 
    
  17. 采用DataOutputStream先writeByte, 再writeInt, 读取的时候采用DataInputStream, 先使用( )方法, 再使用( )

  18. System.out的默认输出设备是( ), System.out是( )类型

  19. System.in的默认输入设备是( ), System.in的是( 普通的字节输入流 )类型

  20. 序列化反序列化对象使用( ) , ( ) 类, 对象所在的类必须实现( ) 接口,才可以自动序列化所有的内容

  21. ( )关键字可以让类中的属性不被序列化

  22. 类型字节输出流字节输入流字符输出流字符输入流
    抽象基类
    文件相关
    缓冲相关
    转换相关
    数据相关
    打印相关
    对象相关

选择

  • 提供printLn()方法和print()方法的类是(b )

A. PrintStream B. System C. InputStream D. DataOutputStream

  • 下列说法不正确的是( d)
    • A. InputStream与OutputStream类通常用来处理字节流
    • B. Reader与Writer通常来处理字符流
    • C. Java中IO流的处理通常分为输入流和输出流2个部分
    • D. File类是输入/输出流的子类
  • 与InputStream相对应的Java系统中的标准输入对象是(a )

A. System.in B. System.out C. System.error D. System.exit()

  • InputStreamReader 类提供的功能是( d)

A. 数据校验 B.文本行计数 C. 压缩 D.将字节流变为字符流

  • 如果打印流PrintWriter开启了自动刷新功能,下列使用哪个方法不会启动自动刷新(a )

A . print() B . printLn() C. format() D. printf()

简答

  1. 为什么要close?

    //系统调用的资源释放
    
  2. try-with-resources 语法结构怎么写?有什么特点?  资源可以自动关闭 autocloseable
    跟传统try-catch有啥不一样?
        
    
  3. 字符流的本质是什么?

    字符流的本质 = 字节流 + 编码表

  4. 常见编码表有哪些? 分别几个字节代表一个字符?

    ASCII:美国标准信息交换码。
    用一个字节的7位可以表示。0000 0000 - 0111 1111
    ISO8859-1:拉丁码表。欧洲码表
    用一个字节的8位表示。

    GB2312:中国的中文编码表。2的16次方
    GBK:中国的中文编码表升级,融合了更多的中文文字符号。
    GB18030:GBK的取代版本
    BIG-5码 :通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码”。

    Unicode:国际标准码,融合了多种文字。

    UTF-8:可变长度来表示一个字符。
    UTF-8不同,它定义了一种“区间规则”,这种规则可以和ASCII编码保持最大程度的兼容:

    它将Unicode编码为00000000-0000007F的字符,用单个字节来表示 0111 1111 = 7F
    它将Unicode编码为00000080-000007FF的字符用两个字节表示
    它将Unicode编码为00000800-0000FFFF的字符用3字节表示 3个中文

    1字节 0xxxxxxx
    2字节 110xxxxx 10xxxxxx
    3字节 1110xxxx 10xxxxxx 10xxxxxx

    utf-16:

    jvm使用的编码表,用2个字节来编解码

    char : 2 字节

    ASCII

    ISO8859-1

    utf-8

    GBK

    idea 默认的是UTF-8

    win系统 默认的是GBK

  5. 对于字符输出流, 为什么可以直接close文件中就有数据?

    答:因为有个flush方法。

  6. 序列化流主要有什么作用?

    答:

  7. transient关键字有啥作用?

    答:

  8. serialVersionUID有啥作用?

多线程

填空

  1. java多线程可以依靠( ) , ( ) , ( ) 三种方式实现
  2. java程序运行时,至少启动( ) 个线程, 分别是( ) , ( ).
  3. java采用( )线程的调度方式, 所以线程的执行是( )的.
  4. 对于join方法
    • 谁等待? ( )
    • 等待谁? ( )
  5. 通过( )API 把一个线程设置为守护线程.
  6. 线程的优先级范围是( ) - ( )
  7. 获取当前线程对象的引用,使用哪个API ( )
  8. 线程的生命周期要经历5种状态 , 分别是( ) , ( ) , ( ) , ( ), ( )状态
  9. 多线程产生数据安全问题的原因有3个,分别是
    • ( )
    • ( )
    • ( )
  10. 什么是原子操作? ( )
  11. Object中提供的( ), ( ) , ( ) 三个方法可以控制线程
  12. 当前有3个线程处于阻塞状态, 此时执行notify方法将会唤醒其中 ( ) 线程
  13. Executors中产生3种线程池,分别是
    • 带缓存的线程池( )
    • 固定数量的线程池( )
    • 固定1个数量的线程池( )
  14. 关闭线程池可以采用哪两种方式?
    • ( )API, 特点是( )
    • ( )API, 特点是( )

选择

  • 线程的启动方法是( )

A. run() B. start() C. begin() D. accept()

  • 设置优先级的方法是( )

A. setPriority() B. gerPriority() C. getName() D.setName()

  • 下列( ) 关键字用来对对象加锁

A. serialize B. transient C. synchronized D. static

  • 下面( )父类或父类接口是无法实现多线程子类定义的?

A. Serializable B. Thread C. Runnable D. Callable

简答题

  1. 什么是线程?什么是进程?两者什么关系?
  2. 什么是串行,并行,并发?
  3. 什么是同步,异步?
  4. 启动线程是start方法不是run方法,这2个有什么区别?
  5. 守护线程的特点是什么?
  6. 为什么Runnable中的run方法会运行在子线程中?
  7. 简述3种多线程实现方式的区别?
  8. 什么是死锁?怎么解决?
  9. wait方法与sleep方法有什么区别?
  10. synchronized同步代码块中的锁对象是谁?同步方法中锁对象是谁?静态方法?
  11. 为什么wait notify方法是定义在Object中 而不是在Thread中?

网络编程

UDP

填空
  • UDP以( ) 方式进行传输.

  • UDP客户端步骤( ), ( ), ( ), ( )

    • A. 发送数据报包到目的IP的目的端口(send方法)

      B. 创建UDP的socket对象

      C. 将要发送的数据封装到数据报包

      D. 创建用于发送的数据报包

      E. 释放资源

  • UDP接收端步骤( ), ( ) , ( ), ( )

    • A . 接收数据报包(receive方法)

      B. 创建接收端的Socket对象

      C. 创建用于接收端的数据报包

      D. 解析数据报包中的数据

      E. 释放资源

  • 通过( )API获取InetAddress对象

  • 通过( )构造方法创建用于发送的数据报包对象DatagramPacket对象

  • 通过( )构造方法创建用于接收的数据报包对象

  • 通过( )API获取数据报包中的信息

简答题
  1. UDP协议什么特点?
  2. 端口号可用范围?
  3. 先启动接收端还是发送端? 如果先启动发送端会报错吗?
  4. 端口号被占用会有什么异常?

TCP

填空题
  • TCP以( ) 方式进行传输

  • TCP客户端的步骤是( ) ( ) ( ) ( )

    • A. 从流中读写数据

      B. 创建客户端Socket对象

      C. 从Socket对象中获取输入输出流

      D .释放资源

  • TCP服务端的步骤是( ) ( ) ( ) ( )

    • A. 释放资源

      B. 创建服务端Socket对象(ServerSocket)

      C. 建立连接(accept)

      D. 从socket中获取输入输出流

      E. 从流中读取写入数据

简答题
  • TCP协议什么特点?
  • 有1个服务端,多个客户端的时候怎么办?

反射

选择题

  • 编译java源文件产生的字节码文件的扩展名是什么( )?

A. java B. class C. html D. exe

  • 下面关于Class类对象的实例化对象取得,错误的是( )

A. 利用Object类中的getClass方法

B.利用Class类的构造方法取得

C.利用类.class方法取得

D.通过Class.forName() 取得

  • 下面的Class类中的方法.( ) 个可以取得指定类型中全部public方法的定义

A. public Method [] getMethods()

B. public Field [] getFields()

C. public Field [] getDeclaredFields()

D. public Constructor [] getConsts()

填空

  1. 忽略java语法检查使用哪个API ( )
  2. 从.properties文件中获取相应Key对应的value,应该用哪个API ( )
  3. 使用字节码文件对象(Class对象)可以直接实例化对象, 有一个前提条件是( )

简答题

  1. 类加载过程是什么?
  2. jvm规范中的类加载时机是哪些?
  3. 类加载器都有哪些?
  4. 双亲委派模型是什么?
  5. 什么是反射技术?
  6. 带declared跟不带的API有什么区别? 带s跟不带s的API有什么区别?
  7. 获取字节码文件对象的方式有哪三种?

注解

选择题

  • 下面哪个不属于java语言?

A. // 注释 B. – 注释 C. /** 注释 / D. / * 注释/

填空

  • 定义注解的关键字是什么( )

  • 使用value作为注解的属性时,有一个前提条件是( )

  • 给注解设置默认值的关键字是( )

  • 注解的默认保留级别是( )

  • 想要把注解加到成员变量上, 应该使用( )注解的( )属性

  • 判断是否使用了注解使用哪个API( )

  • 获取注解实例使用哪个API( )

简单题

  1. @Target注解作用是啥?
  2. @Retention注解作用是啥?
  3. 注解的属性可以是哪些数据类型?

GC

简答题

  1. jvm运行时数据区怎样划分的?

    1. 哪些是线程私有的?
    2. 哪些是共享的?
  2. 显式内存管理与隐式内存管理的特点?

    1. 显式的优点?
    2. 显式的缺点?
    3. 隐式的优点?
    4. 隐式的缺点?
  3. 什么是内存泄漏?

  4. 引用计数法思想是什么?

    • 弊端是什么?
  5. 根搜索算法思想是什么?

    1. 哪些可以作为GC Roots?
  6. 标记清除算法思想是什么?

    • 弊端是什么
  7. 标记复制算法思想是什么?

    • 弊端是什么?
  8. 标记整理算法思想是什么?

    • 弊端是什么?
  9. 分代收集理论

    • 2个假说是什么?
    • 分代收集算法分为哪两个代?
    • 新生代分为哪些区域?
    • 什么时候新生代的对象被移动到老年代?
    • 新生代采用什么算法回收垃圾?
    • 老年代采用什么算法回收垃圾?

etention注解作用是啥?
3. 注解的属性可以是哪些数据类型?

GC

简答题

  1. jvm运行时数据区怎样划分的?

    1. 哪些是线程私有的?
    2. 哪些是共享的?
  2. 显式内存管理与隐式内存管理的特点?

    1. 显式的优点?
    2. 显式的缺点?
    3. 隐式的优点?
    4. 隐式的缺点?
  3. 什么是内存泄漏?

  4. 引用计数法思想是什么?

    • 弊端是什么?
  5. 根搜索算法思想是什么?

    1. 哪些可以作为GC Roots?
  6. 标记清除算法思想是什么?

    • 弊端是什么
  7. 标记复制算法思想是什么?

    • 弊端是什么?
  8. 标记整理算法思想是什么?

    • 弊端是什么?
  9. 分代收集理论

    • 2个假说是什么?
    • 分代收集算法分为哪两个代?
    • 新生代分为哪些区域?
    • 什么时候新生代的对象被移动到老年代?
    • 新生代采用什么算法回收垃圾?
    • 老年代采用什么算法回收垃圾?
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值