Java刷题日记,20201208
虽然我什么都不会,但不妨碍我在比赛中抱着大佬的大腿躺~
开篇语
因为试题量[1]过大,因此只记录自己做错的试题,所以有一些会试题量特别大有些试题量特别小,但每一道都尽量带有解析。
在每一次的刷题日记结束后,还会做一次今日的刷题总结,反馈一次今天的题目整体难度感知以及感觉自己对知识点的掌握程度。
在多天刷题日记后,会有一天不做新题,回顾旧题,但每天都会有一次更新。
PS.但可能会有一天各种原因没有做或者就是我偷懒了,会在第二天的刷题总结中进行反思。
题目
1.第一题
阅读下列利用递归来求n!的程序
class FactorialTest{ static long Factorial(int n){//定义Factorial( )方法 if (n==1) return 1; else return n* Factorial(______); } public static void main(String a[]){//main( )方法 int n=8; System.out.println(n+ "!="+Factorial(n)); }}
为保证程序正确运行,在下划线处应该填入的参数是______。
A、n-1
B、n-2
C、n
D、n+1所谓递归就是用自身的结构来描述自身。一个使用递归技术的方法将直接或间接地调用自身的方法。
根据阶乘的概念,可以写出其递归定义:
Factorial(n=1) n=1
n*Factorial(n-1) n>1
递归结构主要包括两部分:定义递归头和定义当前问题的同一性质的简化。例如n!这个问题被划分为求(n-1)!与n相乘两个步骤;同理,求(n-1)!的问题被简化为求(n-2)!与(n-1)相乘两个步骤的问题,依此类推,直到求Fac(1),再逐级返回,依次求得Fac(1)、Fac(2)…Fac(n)。
2.第二题
下列能表示字符串sl长度的是______。
A、sl.length()
B、sl.length
C、sl.size
D、sl.size()String类包括的方法有:length()、charAt()、indexOf()、lastIndexOf()、getChars()、getBytes()、toCharArray()等,其中,提取字符串长度的方法是"length()",调用方法如下:
String greeting="Hello";
int n=greeting.length(); //返回字符串的字符个数n=5
3.第三题
下列方法中与Applet显示无关的是______。
A、update()
B、draw()
C、repaint()
D、paint()Applet显示相关的3个方法:
1、paint()方法:Applet的paint()方法具体执行Applet的绘制,该方法定义如下:
public void paint(Graphics g)
paint()方法有一个参数g是Graphics类的实例,该实例对象由浏览器生成,它包含了Applet的图形上下文信息,通过它向Applet中显示信息,该对象相当于Applet的画笔。在调用paint()方法时,由浏览器将该对象传递给paint()方法。
2、update()方法:
public void update(Graphics g)
用于更新Applet的显示。该方法将首先清除背景,再调用paint()方法完成Applet的具体绘制。
3、repaint()方法:
public void repaint()
repaint()方法主要用于Applet的重新显示,它调用update()方法实现对Applet的更新。
4.第四题
阅读下列一个支持多线程并发操作的堆栈类代码段
public class MyStack{ private int idx=0; private int[] data=new int[8]; public ______ void push(int i){ data[idx]=i; idx++; } ……}
在下划线处应填入的是______。
A、synchronized
B、wait
C、blocked
D、interrupt
Java中对共享数据操作的并发控制是采用传统的封锁技术。一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区(Critical Sections)。在Java语言中,临界区可以是一个语句块或是一个方法,并且用"synchronized"关键字标识。Java平台将每个由synchronized(Object)语句指定的对象设置一个锁,成为对象锁(monitor),其是一种独占的排他锁(exclusive locks),这种锁的含义是,当一个线程获得了对象锁后,便拥有该对象的操作权,其他任何线程不能对该对象进行任何操作。
5.第五题
下列方法能够用来实现线程之间通信的是______。
A、notify()
B、run()
C、sleep()
D、join()Java引入的wait()和notify(),是Java.lang.object类的方法,是实现线程通信的两个方法。
6.第六题
Java虚拟机(JVM)运行Java代码时,不会进行的操作是______。
A、加载代码
B、校验代码
C、编译代码
D、执行代码Java语言的执行模式是半编译和半解释型。Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。
Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。
字节代码也是一种二进制文件,但不能直接在操作系统上运行,它可看作虚拟机的机器码。运行JVM字节码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验和代码的执行。
7.第七题
当浏览器重新返回到包含Applet的页面时调用的方法是______。
A、start()
B、init()
C、stop()
D、destroy()当浏览器重新返回Applet所在页面时,Applet类的start()方法将被调用
题目总览 | ||
---|---|---|
总题目数量 | 错误数量 | 错误率 |
30 | 07 | 23.33% |
错题分析 | |
---|---|
错误题目涵盖知识点 | 数量 |
Applet | 2 |
JVM | 1 |
多线程 | 2 |
String | 1 |
算法 | 1 |
今日小结/刷题总结
今天总共错了七道题,目前来看是比昨天要好了的,但实际刷题过程中感受到了是自己会的题目占比数量较多,因此错误题目数量有所减少
同时,一直常错的知识点也仍然是有的,例如上表(错题分析)中展示出来的内容,多线程,Applet,一直都是在错的。
所以说,不能光刷,看完一遍就不看了,还是很需要重温的。
试题量--主要为Java语言特点和实现机制 ↩︎