王道训练营 Java 部分测试
第一部分 选择题 (20*2 共 40 分)

  1. 下列说法正确的是()
    A.Java 程序经编译后会产生 machine code
    B.Java 程序经编译后会产生 byte code
    C.Java 程序经编译后会产生 DLL
    D.以上都不正确
  2. 设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )。
    A. 3 B. 3. 5
    C. 4 D. 5
  3. 0.6332 的数据类型是()

A float B double C Float D Double
4. 下列说法正确的有()
A.class 中的 constructor 不可省略
B.constructor 必须与 class 同名,但方法不能与 class 同名
C.constructor 在一个对象被 new 时执行
D.一个 class 只能定义一个 constructor
5. 以下关于继承的叙述正确的是()
A.在 Java 中类只允许单一继承
B.在 Java 中一个类只能实现一个接口
C.在 Java 中一个类不能同时继承一个类和实现一个接口
D.在 Java 中接口只允许单一继承
6. 构造方法名必须与( )相同,它没有返回值,用户不能直接调用它,只能
通过 new 调用。
A.类名 B.对象名 C.包名 D.变量名
7. 下列说法中,( )是正确的。
A.子类拥有的成员数目大于父类拥有的成员数目
B.父类代表的对象范围比子类广
C.子类要调用父类的方法,必须使用 super 关键字
D.一个 Java 类可以有多个父类
8. 下列哪种异常是检查型异常,需要在编写程序时声明 ()

A NullPointerException B ClassCastException
C FileNotFoundException D IndexOutOfBoundsException

  1. 下面哪个流类属于面向字符的输入流( )

A BufferedWriter B FileInputStream
C ObjectInputStream D InputStreamReader
10.阅读如下代码:
1)class Super{
2) public float getNum(){return 3.0f;}
3) }
4)
5) public class Sub extends Super{
6)
7) }
which method, placed at line 6, will cause a compiler error?()
A. public float getNum(){return 4.0f;}
B. public void getNum(){}
C. public void getNum(double d){}
D. public double getNum(float d){return 4.0d;}
11. 阅读代码
public class Equals{
public static void add3(Integer i){
int val = i.intValue();
val += 3;
i = new Integer(val);
}
public static void main(String args[]){
Integer i=new Integer(0);
add3(i);
System.out.println(i.intValue());
} }
what is the result?()
A. compile fail B.print out “0”
C.print out “3” D.compile succeded but exception at line 3
12.下面的集合中,()不可以存储重复元素。
A.Set
B.Collection
C.Vector
D.List
13. 下面代码的运行结果为:()
import java.io.;
import java.util.
;
public class foo{

public static void main (String[] args){
String s;
System.out.println(“s=” + s);
}
}

A 输出“s=”
B “s=null”
C 编译失败
D NullPointException 异常
14.以下对接口描述错误的有()
A) 接口没有提供构造方法
B) 接口中的方法默认使用 public、abstract 修饰
C) 接口中的属性默认使用 public、static、final 修饰
D) 接口不允许多继承
15.下面有关 JVM 内存,说法错误( )
A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码
执行到了第几行,是线程隔离的
B. Java 方法执行内存模型(stack),用于存储局部变量,操作数栈,动态
链接,方法出口等信息,是线程隔离的
C. 方法区用于存储 JVM 加载的类信息、常量、静态变量、即使编译器编译后
的代码等数据,是线程隔离的
D. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
16.关于守护线程的说法,正确的是:()
A. 所有非守护线程终止,即使存在守护线程,进程运行终止
B. 所有守护线程终止,即使存在非守护线程,进程运行终止
C. 只要有守护线程或者非守护进程其中之一存在,进程就不会终止
D. 只要所有的守护线程和非守护线程终止运行之后,进程才会终止
17.下列方法被调用后,一定使调用线程改变当前状态的是()
A.notify() B.run() C.sleep() D.isAlive()
18.有如下程序
1)public class X{
2) public Object m(){
3) Object o=new Float(3.14F);
4) Object[] oa=new Object[1];
5) oa[0]=o;
6) o=null;
7) oa[0]=null;
8) System.out.println(oa[0]);
9) }
10) }
对象 o 最早可以被垃圾回收器回收的位置是:()
A. After line 4
B. After line 6
C. After line 7
D. After line 9(that is,as the method returns)
19.JAVA 语言对象状态的持久化是通过( )实现的。
A. 文件 B.管道 C.序列化 D.过滤器
20.在 TCP/IP 中,解决计算机到计算机之间通信问题的层次是()。
A. 网络接口层 B.网际层 C.传输层 D. 应用层
二 程序填空(10*2 共 20 分)
(注:答案包括编译失败 或运行异常。请说明结果的同时注明原因)

  1. 如下程序打印的结果是什么呢?
    public class InTheLoop {
    public static final int END = Integer.MAX_VALUE;
    public static final int START = END - 100;
    public static void main(String[] args) {
    int count = 0;
    for (int i = START; i <= END; i++)
    count++;
    System.out.println(count);
    }}
  2. 如下程序打印的结果是?
    public class IfElse{
    public static void main(String args[]){
    if(odd(5))
    System.out.println(“odd”);
    else
    System.out.println(“even”);
    }
    public static int odd(int x){return x%2;}
    }
    what is output?
  3. 下面程序的运行结果是:
    public class AnimalFarm{
    public static void main(String[] args){
    final String pig = “length: 10”;
    final String dog = "length: " + pig.length();
    System.out. println("Animals are equal: " + pig == dog);
    }
    }
  4. 下面程序的运行结果是:
    String str1 = “hello”;
    String str2 = “he” + new String(“llo”);
    System.err.println(str1 == str2);
  5. 如下程序打印的结果是:
    class Dog {
    public static void bark()
    {
    System.out.print("woof ");
    }
    }
    class Basenji extends Dog
    {

public static void bark()
{} }
public class Bark {
public static void main(String args[]) {
Dog woofer = new Dog();
Dog nipper = new Basenji();
woofer.bark();
nipper.bark();
}
}
6. 下面这的小程序输出结果为:
public class Indecisive {
public static void main(String[] args) {
System.out.println(decision());
}
static boolean decision() {
try {
return true;
} finally {
return false;
}
}
}
7. 下列代码的执行结果是()。
public class Test{
public static void main(String[]args){
int[]x={0,1,2,3};
for{int i=0;i<3;i+=2){
try{
systcm.out.println(x[i+2]/x[i]+x[i+1]);
}catch(ArithmeticException e){
System.out.println(“errorl”):
}catch(Exception e){
System.out.println(“error2”): }}
} }
8. 如下代码执行后打印的结果是:
public class TestMain {
static {
System.out.println(“C”);
}
{
System.out.println(“B”);
}
public TestMain(){
System.out.println(“A”);
}
public static void main(String[] args) {
TestMain testMain = new TestMain();
} }
9. 如下代码执行的结果是:
public class Bground extends Thread{
public static void main(String[] args){
Bground bground=new Bground();
bground.run();
}
public void start(){
for (int i = 0; i < 10; i++) {
System.out.println(“Bground.start()”+i);
} } }
10. 如下代码执行的结果是:
public class Reluctant {
private Reluctant internalInstance = new Reluctant();
public Reluctant() throws Exception {
throw new Exception(“I’m not coming out”);
}
public static void main(String[] args) {
try {
Reluctant b = new Reluctant();
System.out.println(“Surprise!”);
} catch (Exception ex)
{
System.out.println(“I told you so”);
}
}
}第三部分 问答题(10*2 共 20 分)

  1. 引用类型和原始类型有何区别?
  2. Java 语言多线程设计中,为什么 wait, notify 和 notifyAll 这些线程
    同步的方法不在 thread 类里面?
  3. 方法重载 和方法重写 的区别。
  4. HashSet 的特点是无法插入重复的元素。那么它是怎么判断两个元素是否
    相同的?
  5. 同步和异步有何异同,在什么情况下分别使用他们?
  6. "=="和 equals 方法有何异同?
  7. 写 clone()方法时,该方法题通常都有一行代码,是什么?为什么?
  8. java 中实现多态的机制是什么?
  9. Java 多线程中调用 wait() 和 sleep()方法有什么不同?
    10.集合里的迭代器是什么?这样设计有何好处?
    第四部分编程题(10*2 共 20 分) 1.设计一个字符串哈希算法。(不能直接调用系统 API) 2. 输入一个整型数组,数组里面有正数也有负数,数组中连续的一个或多个整
    数组成子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如,输
    入的数字为:1,-2,3,10,-4,7,2,-5,则和最大的子数组为 3,10,-4,7,2 和 为 18。 (时间复杂度越低越好)

答案解析:
第一题:
BABCA ABCDB BDCDC ACCCB
第二题:
1.程序无限循环,先打印出从Integer.MAX_VALUE-100到Integer.MAX_VALUE
的这100个数,然后,从Integer.MIN_VALUE开始接着打印,直到Integer.MAX_VALUE,并重复
2.打印结果为0,父类方法被子类覆盖,即使在父类中调用,调用到的也是子类方法,而此时父类对象还在初始化过程中,子类对象更是还未开始初始化,其成员变量的值还是默认值。
3.false 先拼接"Animals are equal: " + pig得到新的字符串,然后在比较==
4.false
5.woof woof 静态方法不能被覆盖
6.false
7.error1 error2
8.C B A 静态代码块先于构造代码块,构造代码块先于构造方法
9.正常结束没有任何输出 Thread 的run方法源代码
10. Stackoverflow error 在创建对象,给成员变量赋值时,无限递归,且没有递归出口
第三题:简答题(列出的只是关键点,表达的意思到位即可)
1.基本数据类型包括:byte,short,char, int,long,float,double,boolean
引用数据类型主要包括:类,接口等
基本数据类型的变量存储的是该类型变量的值,而引用数据类型的变量存储的是
地址(比如堆中对象的地址)。

2.线程通信,其实是依靠锁对象,来完成的(对于wait方法而言,调用wait方法的对象,首相必须被当前线程,作为锁对象持有),而java语言中的锁对象,可以是任意对象,因此这些方法被定义在Object中

3.方法重载是指在同一个类中定义同名方法,而这些方法名称相同,但方法签名不同。
方法重写,是指在子类中,修改父类中定义的方法的实现。因此,他们发生的范围是不同的,方法重载发生在一个任意类中,而方法重写,发生在子类中,而且发生方法重写和方法覆盖的条件也不相同(这里不再赘述),同时,方法重载是编译时多态,而方法重写是运行时多态的前提条件之一

4.字节流和字符流最主要的区别是,流中数据的逻辑单位不同,字节流中数据的逻辑单位是二进制的字节数据,而字符流中,数据的逻辑单位是单个字符。

a)字符数据在内存中还是以二进制(字符的在编码表中对应的编码值)的形式保存和传输
b)而对于二进制的字节数据的写和读,字节流就已经能够很好的完成了
c) 但为了保证字符流中的数据是一个一个的完整字符,所以字符流在字节流的基础上,添加了编解码器,即在使用底层字节流写数据前,先利用编码器,对字符数据进行编码得到字符数据对应的二进制编码序列,然后利用底层字节流传输它们,同时,在读取数据的时候,先用解码器,将由底层字节流传输的字节数据,解码成一个一个的字符。

所以字符流的功能实现是字节流 + 编码表(基于编码表的编解码操作)
5.异步简单来说就是,线程之间,各自独立运行,互不影响,就好像线程之间“同时”,在各自做自己的事情,简单来说,就是我走你也走
同步和异步相对,同步是指线程之间不能在各自为政,自己运行自己的,而是在某些情况下等待其他线程。简单来说,就是我走你不走

线程天生就是异步执行的,而当多线程异步访问同一个共享数据的时候,为了保证共享数据访问的正确性,必须保证同时只有一个线程,能访问并修改共享变量的值,这意味着,如果一个线程正在,访问某共享变量,则其他所有要访问该共享变量的线程都需要等待,直到,该线程访问完毕。

6.== 对于基本数据类型的数据而言,比较的是内容,对于引用数据类型的数据而言,比较的引用变量,所指向的内存地址。
equals方法是Object类的方法,其默认实现是比较两个对象的内存地址是否相同,若想:要比较量对象的内容是否相同,则需要在子类中覆盖Object的equals方法

7.super.clone(),因为该方法其实是在调用Object的clone方法,首先实现对该对象自身的浅克隆,然后在针对,该对象的引用变量做进一步的处理

8.java中实现运行时多态,有3个前提条件: 继承,方法覆盖,父类引用指向子类实例

9.sleep方法的唤醒条件是时间,而wait()方法的唤醒条件是,必须被在同一个锁对象上调用notify()或notifyAll()方法。
sleep方法是Thread类的静态方法,而wait()方法是Object类的方法
sleep方法在导致当前线程休眠时,当前线程不会释放所有有的锁,而wait()方法导致当前线程休眠时,当前线程会释放锁对象

10.缓冲流可以从一定程度上改善Java程序的IO效率。因为,IO的底层实现,是要依靠操作系统内核的功能来实现的,而我们的java程序每次请求操作系统内核的功能完成IO的时候,都需要付出额外的代价。既然,每次完成IO操作,都需要付出一次通信代价,那么意味着,一次IO操作如果读写的数据越多,那么平均到每个字节(字符)的数据,所付出的额外代价就会越小。
而缓冲流,本身维护了一个较大的缓冲区,能够在和操作系统内核交互的过程中,一次读写较多的字节(字符)数据,从而在整个数据传输过程中,减少java程序和操作系统内核通信的次数。从而减少了,应用程序为了完成功能,所需要付出的额外代价
第四题编程题
1)第一题,只要给一个字符串,根据该字符串的内容,自己给个映射规则,实现将该字符串转化成一个对应整数即可
比如简单的:把字符串对应的字节数值累加,得到一个整数(这就是一种简单的字符串到整数的hash映射),当然这种映射可以有很多很多,这里不再一一赘述
2)该题目,其实有对应的o(n)时间复杂度的实现,即一次遍历,得到结果


王道训练营 Java 部分测试相关推荐

  1. java大数据开发训练营--Java Web 后端技术基础(上)

    题记: 文章内容输出来源:拉勾教育大数据开发高薪训练营 本篇文章是java学习课程中的一部分笔记. 本博文主要是记录一些基础的知识点,通过实操更容易理解 这章主要讲的是JAVA Web后端基础 一 W ...

  2. 好程序员训练营-Java变量的作用域

    <A href="http://www.goodprogrammer.org/" target="blank">android培训</a> ...

  3. 小马哥训练营-Java EE单体架构

    什么是Servlet Servlet 是一种基于 Java 技术的 Web 组件,用于生成动态内容,由容器管理.类似于其他 Java 技术组件,Servlet 是平台无关的 Java 类组成,并且由 ...

  4. 【王道训练营 C/C++方向基础 60 题(1-10)】

    1.有一个函数如下: 输入 x 的值,计算出相应的 y 值. #include<stdio.h> int main(){int x,y;printf("x=");sca ...

  5. 西北农林科技大学linux实验,2021双非科班调剂985(一志愿中科大,调剂上岸西北农林科技大学)初试复试经验帖...

    马上毕业啦,回想过去的一年想通过这一份经验帖给自己的大学画上一个圆满的句号,很多同学应该看过其他学长学姐各种各样的经验帖和各科的时间规划,本文就不过多谈各科的时间安排,主要是阐述自己这一年各科踩过的坑 ...

  6. 还是一篇来自Java14th的学习、面试经验分享

    和大多数道友一样,我也是因考研与王道结缘,大学期间考过一次研,数学单科没过线,无缘梦想大学,没有参加秋招和春招,毕业后直接在家附近学校的逸夫图书馆备考,悲催的是,这次也是单科没过线.考研的苦我想大部分 ...

  7. 语言输出奇树有多少总方法_如何学习一门编程语言?这些方法告诉你,不要再说你不会学习...

    前言 很多人喜欢争论什么什么编程语言好,我认为这个话题如果不限定应用范围,就毫无意义. 每种编程语言必然有其优点和缺点,这也决定了它有适合的应用场景和不适合的应用场景.现代软件行业,想一门编程语言包打 ...

  8. 【数据竞赛】2020年11月国内大数据竞赛信息-奖池5000万

    2020年11月:下面是截止到2020年11月国内还在进行中的大数据比赛题目,非常丰富,大家选择性参加,初学者可以作为入门练手,大佬收割奖金,平时项目不多的,比赛是知识非常好的实践方式,本号会定期发布 ...

  9. 学计算机语言步骤,如何学编程语言?好菜鸟学习编程语言的步骤

    很多人喜欢争论什么什么编程语言好,我认为这个话题如果不限定应用范围,就毫无意义.本文引用地址:http://www.eepw.com.cn/article/201805/379381.htm 每种编程 ...

  10. 广义估计方程估计方法_广义估计方程简介

    广义估计方程估计方法 A key assumption underpinning generalized linear models (which linear regression is a typ ...

最新文章

  1. Master Data makes SAP Retail special
  2. nodejs中Buffer的创建和转换
  3. python 打印大话西游
  4. cstring越界_CString和char*的转换
  5. Linux_linux常用工具------进度条程序
  6. phpcms文件夹plugin调用怎么写路径 - 代码篇
  7. Leetcode 杂题
  8. 老年手机英文改中文_不服来战:“老年人才用9键!”
  9. 如何在iPhone / Android上进行Facebook联系人同步
  10. ad网络标号怎么用_altium designer网络标号的作用范围
  11. MySQL中DML语言的插入语句、修改语句、删除语句(增删改)——笨蛋笔记4
  12. gridview纯图片九宫图展示
  13. 安卓指纹支付(指纹识别)
  14. 计算机图形学代码3D太阳系,计算机图形学-绘制太阳系.doc
  15. [数据清洗]-混乱的邮编数据
  16. 软件工程:玩“积木”的高手
  17. flappy bird游戏源代码揭秘和下载
  18. ProxmoxVE 之 使用thinstation利旧安装瘦客户端
  19. 解决phpstudy或mysql局域网连接不上数据库问题
  20. 小米手机如何设置默认浏览器,这2个方法值得收藏

热门文章

  1. laravel+php+支付功能,Laravel 支付解决方案之如何使用微信支付进行支付 – Laravel学院...
  2. Html5实现二维码扫描并解析-web前端教程
  3. 十款好用的PDF编辑软件推荐
  4. zend studio php调试,Zend Studio中如何配置和使用xdebug断点调试工具?
  5. Jeesite--- Datagrid 行高亮+单元格高亮
  6. 分享一款实用的APP开发框架
  7. k8s mysql 弹性_k8s 弹性伸缩,基于prometheus自定义指标
  8. ssh连接不上服务器
  9. 测试远程服务器udp端口,udp端口怎么测试 - 全文
  10. PLSQL只导出表结构