Java模拟试题刷题日记,20201210

Java刷题日记,20201210

虽然我什么都不会,但这并不妨碍我在比赛中抱着大佬的大腿躺~

反思

昨天(1209),没有更新刷题日记,主要原因是没有进行刷题,更无从谈起更新日记

  • 为什么没有刷题呢?
  • 是因为时间不够。
  • 为什么时间不够呢?
  • 是因为昨天一天的满课且全是考试,因此将时间重心放在了自己的专业课考试上,并没有在意刷题日记的更新
  • 为什么要考试呢?
  • 因为接近于学期末,需要有一次期末考试考核学习成果
    PS.这点无法改变,返回上一级继续深问
  • 除了考试的时间,在那之外还有时间吗?
  • 有的
  • 为什么那一段时间没有用来刷题并更新刷题日记?
  • 因为考试结束后做了一些琐事,如吃饭,取快递,喝奶茶等,因此遗忘掉了该事件,同时,用了一个较为整块的时间进行了手机游戏的游玩,因此没有了时间。
    问题结束
    并不是没有时间,而是因为自己将用在了打手机游戏上
    以上为 5WHY 法[1]求原因,以下为解决方案
    所以接下来需要做的是,在每天需要做完的事做完之前,不能够游玩游戏。
    昨天(1209)的刷题日记将会在明天(1211)的时候补上,可能会与明天(1211)的不同步发布,但一定会有发布。

开篇语

因为试题量[2]过大,因此只记录自己做错的试题,所以会有一些试题量特别大,有一些试题量特别小,但每一道都尽量带有解析。
在每一次的刷题日记的末尾,还会有一次今日的刷题总结,反馈一次今天的题目整体难度感知以及感觉自己对知识点的掌握程度。
在多天的刷题日记后,会有一天不做新题,回顾旧题,但每天都会有一次更新。
PS.但可能会有一天各种原因没有做或者就是我偷懒了,会在第二天的刷题总结中进行反思。

题目

1.第一题

  • 点击窗口内的按钮时,产生的事件是______。
    A、MouseEvent
    B、WindowEvent
    C、ActionEvent
    D、KeyEvent

  • MouseEvent:处理鼠标拖动、移动、单击、按下、释放或者进入、退出组件的事件。
    WindowEvent:处理窗口激活、失去活动窗口、最小化、打开、关闭或者退出的事件。
    ActionEvent:处理按钮、列表双击、单击菜单项目。
    KeyEvent:处理键盘的输入。

2.第二题

  • Applet的默认布局管理器是______。
    A、BorderLayout
    B、FlowLayout
    C、GridLayout
    D、PanelLayout

  • FlowLayout是Panel和Applet的默认布局管理器。构件在容器中的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个构件先添加到容器中第一行的最左边,后续的构件依次添加到上一个构件的右边,如果当前行已放置不下该构件,则放置到下一行的最左边。构件的大小不随容器的大小改变而改变。

3.第三题

  • 阅读下列代码片段
class InterestTest ______ ActionListener{
    ……
     public void actionPerformed(ActionEvent event){
        double interest = balance * rate/100;
        balance += interest;
        NumberFormat format =
                NumberFormat.getCurrencyInstance( );
        System.out.printlb("balance = "+
                formatter.format(balance));
    }
    private double rate;
}

在下划线处,应填的正确选项是______。
A、Implementation
B、Inheritance
C、implements
D、extends

  • 每类事件都有对应的事件监听器,监听器是接口。在类中使用implements关键字实现接口。

4.第四题

  • 使新创建的线程参与运行调度的方法是______。
    A、run()
    B、start()
    C、init()
    D、resume()

  • 线程的生命周期主要分为如下几个状态:新建状态、可运行状态、运行状态、阻塞状态、终止状态。
    用new关键字和thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。

5.第五题

  • AWT中用来表示对话框的类是______。
    A、Font
    B、Color
    C、Panel
    D、Dialog

  • Font类提供的构造方法和方法可以对字体的大小、字体的样式等进行设置。
    Color类用来设置颜色。
    Panel通常也称为面板,是一种透明的容器,既没有标题,也没有边框,它不能作为最外层的容器单独存在,它首先必须作为一个构件放置到其他容器中,然后再把它当作容器,把其他构件放在它里面。
    Dialog:对话框,对话框是Window类的子类。

6.第六题

  • 当Applet需要更新显示内容时,应该调用的方法是______。
    A、paint()
    B、update()
    C、start()
    D、repaint()

  • repaint()方法主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。Applet程序可以在需要显示更新时调用该方法,通知系统刷新显示。

7.第七题

  • 如果线程正处于运行状态,则它可能到达的下一个状态是______。
    A、只有终止状态
    B、只有阻塞状态和终止状态
    C、可运行状态,阻塞状态,终止状态
    D、其他所有状态

  • 运行状态是线程占有CPU并实际运行的状态,此时线程状态的变迁有3种情况:终止状态、可运行状态、阻塞状态。

8.第八题

  • 阅读下列程序
public class Test implements Runnable{
  private int x=0;
  private int y=0;
  boolean flag=true;
  public static void main(String[] args){
     Test r=new Test();
     Thread t1=new Thread(r);
     Thread t2=new Thread(r);
     t1.start();
     t2.start();
  }
  public void run(){
     while(flag){
        x++;
        y++;
        System.out.println("("+x+","+y+")");
        if(x>=10)
          flag=false;
     }
  }
}

下列对程序运行结果描述的选项中,正确的是______。
A、每行的(x,y)中,可能有x≠y;每一对(x,y)值都出现两次。
B、每行的(x,y)中,可能有x≠y;每一对(x,y)值仅出现一次。
C、每行的(x,y)中,x=y;每一对(x,y)值都出现两次。
D、每行的(x,y)中,x=y;每一对(x,y)值仅出现一次。

  • 在本程序中,Test类实现了Runnable接口,在main()方法中,以Test类的两个实例对象分别创建了t1、t2两个线程,并调用线程的start()方法将线程启动。在创建的线程中,Test类的run()方法就是线程体,当main()方法中的t1、t2启动时,是从Test类对象的run()开始执行的。
    在Test类中首先用private定义了两个int类型的私有成员变量x、y,并为其赋初值x=0,y=0,并定义了一个boolean类型的变量flag。在run()方法中,使用while循环来控制输出,while循环的判断条件就是布尔型变量flag,当flag=true时,执行循环体,直到x>=10时,程序执行语句flag=false;退出整个循环,run()方法运行结束。
    变量XY是程序外部定义的,所以每一对(x,y)值仅出现一次。t1与t2两个线程运行的先后顺序不一定,所以可能有x≠y。

9.第九题

  • 阅读下列代码
class Test implements Runnable{
    public int run(){
        int i = 0;
        while (true){
            i++;
            System.out.println("i="+i);
        }
    }
}

上述代码的编译结果是______。
A、程序通过编译并且run()方法可以正常输出递增的i值
B、程序通过编译,调用run()方法将不显示任何输出
C、程序不能通过编译,因为while的循环控制条件不能为"true"
D、程序不能通过编译,因为run()方法的返回值类型不是void

  • run()方法必须是public访问权限,返回值类型为void。

10.第十题

  • 在关闭浏览器时调用,能够彻底终止Applet并释放该Applet所有资源的方法是______。
    A、stop()
    B、destroy()
    C、paint()
    D、start()

  • stop():当Applet被覆盖时,可用该方法停止线程。
    destroy():关闭浏览器时调用,彻底终止Applet,从内存卸载并释放该Applet的所有资源。
    paint():画Applet界面的基本方法。
    start():在init()方法完成后,将调用start()方法,使Applet成为激活状态。

11.第十一题

  • 如果线程调用下列方法,不能保证使该线程停止运行的是______。
    A、sleep()
    B、stop()
    C、yield()
    D、wait()

  • sleep()方法的作用是让当前线程处于休眠状态,并持续一定的时间,该时间的长短由sleep()方法的参数决定。sleep()方法结束后,线程将进入可运行状态。
    stop()方法的作用是当线程完成运行并结束后,将不再运行。
    yield()方法的作用是暂停当前线程的执行,从而允许与它具有相同优先级的线程执行,如果不存在可执行且与它同优先级的线程,则继续执行当前线程。
    wait()方法的作用是,当某线程需要在synchronized块中等待共享数据状态改变时,调用wait()方法,这样该线程等待并暂时释放共享数据对象的锁,其它线程可以获得该对象的锁,并进入synchronized块对共享数据进行操作,而此线程则放入wait pool中,转入阻塞状态。

12.第十二题

  • 阅读下列Java语句
ObjectOutputStream out =
        new ObjectOutputStream(new ______("employee.dat"));

在下划线处,应填的正确选项是______。
A、File
B、FileWriter
C、FileOutputStream
D、OutputStream

  • ObjectOutputStream:既继承了OutputStream抽象类,又实现了ObjectOutput接口,这是Java用接口技术代替双重继承例子,其构造方法参数是串行化了的对象。
    FileOutputStream:用于对磁盘文件涉及的数据流进行输出处理,即向一个文件对象中写入数据。

13.第十三题

  • 在下列程序的空白处,应填入的正确选项是______。
import java.io.*;
public class WriteInt{
   public static void main(String[] a){
     int [] myArray = {10,20,30,40};
     try{
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("ints.dat"));
        for (int i=0;i<myArray.length;i++)
          dos.writeInt(myArray[i]);
        dos.______;
        System.out.println("Have written binary file ints.dat");
        }
     catch(IOException ioe)
   {  System.out.println ("IO Exception");
   }
  }
}

A、start()
B、close()
C、read()
D、write()

  • DataOutputStream是OutputStream的子类,DataOutputStream具备数据类型或格式转换的功能,即向流中写入数据时,可以实现对二进制字节数据的编码功能。
    OutputStream的子类继承以下方法:
    1、write()方法:向输出流写入数据的方法;
    2、flush()方法:强制清空缓冲区,并将缓冲区中的现有数据写入外设;
    3、close()方法:当输出流使用完毕后,可以调用close()方法将其关闭,断开Java程序与外设数据源的连接,释放此连接所占用的系统资源。
    程序使用语句"dos.writeInt(myArray[i]);"向流中写入int类型的数据,完成数据写入后,需要使用语句"dos.close();"来释放此连接所占用的系统资源。

14.第十四题

  • 为了将HelloApplet(主类名为HelloApplet.class)嵌入在greeting.html文件中,应该在下列greeting.html文件的横线处填入的代码是______。
<HTML>
<HEAD>
<TITLE> Greetings </TITLE>
</HEAD>
<BODY>
<APPLET ______>
</APPLET>
</BODY>
</HTML>

A、HelloApplet.class
B、CODE="HelloApplet.class"
C、CODE="HelloApplet.class" WIDTH=150 HEIGHT=25
D、CODE="HelloApplet.class" VSPACE=10 HSPACE=10

  • 将小应用程序HelloApplet嵌入在greeting.html文件中,必须使用特殊的HTML标记标记实现Applet或JApplet的嵌入运行。
    CODE=appletFile:这个属性指定包含Applet或JApplet字节码的文件名。
    WIDTH=pixels HEIGHT=pixels:这两个在标记中必须指定的属性,定义了Applet显示区以像素为单位的高度和宽度。但由Applet运行过程中所产生的任何窗口或对话框不受此约束。

15.第十五题

  • Java类库中,将信息写入内存的类是______。
    A、java.io.FileOutputStream
    B、java.io.ByteArrayOutputStream
    C、java.io.BufferedOutputStream
    D、java.io.DataOutputStream

  • FileOutputStream:用于对磁盘文件涉及的数据流进行输出处理,即向一个文件对象中写入数据。
    ByteArrayOutputStream:字节数组输出流。这个类将一个字节数组作为输出流,而任何内存块都可以以字节数组的形式使用,故利用该类可以对内存进行写入操作。
    BufferedOutputStream:缓冲区优化了字节数据传送。
    DataOutputStream:进行字节输出的基本数据类型判断。

16.第十六题

  • 向Applet传递参数的正确描述是______。
    A、<param name=age,value=20>
    B、<applet code=Try.class width=100,height=100,age=33>
    C、<name=age,value=20>
    D、<applet code=Try.class name=age,value=20>

  • Applet获取参数是通过在HTML文件中采用标记定义参数。

17.第十七题

  • Java中的线程模型由三部分组成,与线程模型组成无关的是______。

A、虚拟的CPU
B、程序代码
C、操作系统的内核状态
D、数据

  • Java中的线程模型包含3部分:
    1、一个虚拟的CPU。
    2、该CPU执行的代码。
    3、代码所操作的数据。

题目总览
总题目数量 错误数量 错误率
30 17 56.66%
错题分析
错误题目涵盖知识点 数量
图形界面 7
IO 3
多线程 6
其他 1

今日小结/刷题总结

图形界面直接7连,多线程紧跟其后,拿下6连,随后IO流有些许不足,仅拿下三连
正如前几天一直说的那样,因为不会的题目没有大量刷到,所以错误数量仍然是比较好看的数据
今天就出现问题了,有一些题纯粹就是对这个知识点根本不了解因此完全不可能会
所以说,还是前几天一直说的那样,要看,要看,要看。


  1. 求解问题的方法--主要为通过多次追问探寻底层真实原因。如例子中发现了根本原因不在于时间不足而在于将时间用来了打手机游戏。 ↩︎

  2. 试题量--主要为Java语言特点和实现机制 ↩︎

上一篇:2021-09-20


下一篇:画重点,这几道java面试题还不会的赶紧看!