zoukankan      html  css  js  c++  java
  • java试题复盘——9月8日

     上:

    1.可将语句块或方法设为同步使用的语句是(A)

     A synchronized              用于方法或者代码块前,使此方法或者代码变成同步的

     B static                            用于声明静态变量

     C abstract                       用于定义抽象类或者方法

     D final                              用于声明常量,即只能赋值一次的变量

    2.关于 Java 线程,下面说法错误的是(C)。

     A 创建线程可以通过实现Runnable接口和继承Thread类

     B java利用线程使整个系统成为异步

     C 新线程一旦被创建,它将自动开始运行

    3.对于一个已经不被任何变量引用的对象,当垃圾回收器准备回收该对象所占用的内存时,将自动调用该对象的哪个方法(A)

    A  finalize

    B  notify

    C  notifyAll

    D  hashCode

    题解:就在移除一个对象并回收它的内存空间之前,Java垃圾回收器将会调用各个实例的finalize()方法,这样实例对象就有机会可以释放掉它占用的资源。尽管finalize()方法是保证在回收内存空间之前执行的,但是对具体的执行时间和执行顺序是没有任何保证的。多个实例之间的finalize()执行顺序是不能提前预知的,甚至有可能它们是并行执行的。程序不应该预先假设实例执行finalize()的方法,也不应该使用finalize()方法来回收资源。

      • 在finalize过程中抛出的任何异常都默认被忽略掉了,同时对象的销毁过程被取消
      • JVM规范并没有讨论关于弱引用的垃圾回收,这是明确声明的。具体的细节留给实现者决定。
      • 垃圾回收是由守护进程执行的

    4.有以下程序片段且Interesting不是内部类,下列哪个选项不能插入到行1。(  D  )

    public class Interesting{

     // 省略代码

    }

     import java.awt.*;

     package mypackage;

     class OtherClass{   }

     public class MyClass{ }

    题解:在同一个java原文件中,可以有多个class类,但是只能有一个公共的public class类

    5.在类Tester中定义方法如下,B

    public double max(int x, int y) { // 省略 }

    则在该类中定义如下哪个方法头是对上述方法的重载(Overload)?

     A public int max(int a, int b) {}

     B public int max(double a, double b) {}

     C public double max(int x, int y) {}

     D private double max(int a, int b) {}

    题解:重载就是一句话:同名不同参,返回值无关。

                   覆盖/重写:同名同参

    6.Math.round(11.5) 等于:(C)

     A.11

     B.11.5

     C.12

     D.12.5

    题解:四舍五入

    7.在Java中,以下关于方法重载和方法重写描述正确的是?D

     A.方法重载和方法的重写实现的功能相同

     B.方法重载出现在父子关系中,方法重写是在同一类中

     C.方法重载的返回值类型必须一致,参数项必须不同

     D.方法重写的返回值类型必须相同或相容。(或是其子类)

    题解:

    方法重载(overload):

    1.必须是同一个类

    2方法名(也可以叫函数)一样

    3参数类型不一样或参数数量不一样

     

    方法的重写(override)两同两小一大原则:

    方法名相同,参数类型相同

    子类返回类型小于等于父类方法返回类型,

    子类抛出异常小于等于父类方法抛出异常,

    子类访问权限大于等于父类方法访问权限。

    8.以下描述错误的一项是(C)?

     A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行  到了第几行,是线程隔离的

     B.原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的

     C.方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的

     D.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的

    题解:首先来说这个答案是很容易选出来的,只要知道静态变量是属于类的,在方法中是没有静态变量的,就可以选出正确答案了,但这儿还要把A C D说一下。大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) ,   VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack  ( 本地方法栈 ),其中Method Area 和  Heap 是线程共享的  ,VM Stack,Native Method Stack  和Program Counter Register  是非线程共享的(每个线程运行的时候都会单独的创建)。方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域。 在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

    9.以下java程序代码,执行后的结果是(B)

    public class Test {

        public static void main(String[] args) {  

            Object o = new Object() { 

                 public boolean equals(Object obj) { 

                     return true;

             }

         };  

         System.out.println(o.equals("Fred"));

         }

    }

     A.Fred

     B.true

     C.编译错误

     D.运行时抛出异常

    10.下面代码执行后的结果为(   C   )

    int main()

    {

    int sum=0;

    int i=0,j=0;

    for(j=0;j<6;j++)

    {

    if(j%2)continue;

    sum++;

    }

    printf("sum=%d",sum);

    return 0;

    }

     A.sum=1

     B.sum=2

     C.sum=3

     D.其他几项都不对

    11.关于抽象类的叙述正确的是?(A)

     A.抽象类不可以实例化

     B.抽象类就是一种特殊的接口

     C.抽象类的方法都是抽象方法

     D.抽象类的导出类一定不是抽象类

    题解:

    A选项中,抽象类不能实例化,这句是正确的。后面,抽象类不能申明为对象,是错误的。java中,接口和抽象类,都可以声明为对象,只需要在实例化的时候,用一个该接口/抽象类的实现类实例化就行了。即:

    interface / abstract class obj = new class();其中,new后面的class是前面接口/抽象类的实现类。

    B选项中,接口是一种特殊的抽象类。其中,成员变量都是默认public static final修饰的,方法都是public abstract修饰的,并且除了default和static的以外,只有声明,没有方法体。

    C选项中,抽象类的方法,可以是抽象abstract的,也可以是普通的。就算全部是普通方法,也可以用abstract修饰。

    D选项中,导出类,及子类,抽象类的子类可以是抽象的,也可以是普通的

    12.下面代码的输出结果是什么?D

    public class ZeroTest {

        public static void main(String[] args) {

         try{

           int i = 100 / 0;

           System.out.print(i);

      }catch(Exception e){

           System.out.print(1);

           throw new RuntimeException();

      }finally{

           System.out.print(2);

      }

          System.out.print(3);

     }

     }

     A.3

     B.123

     C.1

     D.12

    题解:

    还是需要理解Try...catch...finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了

    13.能单独和finally语句一起使用的块是( A )

     A.try

     B.catch

     C.throw

     D.throws

    14.下列有关Thread的描述,哪个是正确的?C

     A.启动一个线程的方法是:thread. run()

     B.结束一个线程的通常做法是:thread. stop()

     C.将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。

     D.让一个线程等待另一个线程的通知的方法是:thread. sleep()

    15.java中下面哪个能创建并启动线程(C)

    public class MyRunnable implements Runnable          {

         public void run()             {

             //some code here

         }

     }

     A.new Runnable(MyRunnable).start()

     B.new Thread(MyRunnable).run()

     C.new Thread(new MyRunnable()).start()

     D.new MyRunnable().start()

    16.HashMap和HashTable的描述,错误的是?D

     A.他们都实现了Map接口。

     B.HashMap非线程安全,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供额外同步。

     C.HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

     D.通过contains方法可以判断一个对象是否存在于HashMap或者Hashtable中。

    题解:

    contains方法容易引起歧义,因此在HashMap中改成containsKey和containsValue方法来替换。

    17.尝试编译以下程序会产生怎么样的结果?(C)

    public class MyClass {

        long var;

        public void MyClass(long param) { var = param; }//(1)

        public static void main(String[] args) {

            MyClass a, b;

            a =new MyClass();//(2)

            b =new MyClass(5);//(3)

        }

    }

     A.编译错误将发生在(1),因为构造函数不能指定返回值

    B.编译错误将发生在(2),因为该类没有默认构造函数

     C.编译错误将在(3)处发生,因为该类没有构造函数,该构造函数接受一个int类型的参数

    D.该程序将正确编译和执行

    18.如下代码的输出是

    package Test;

    public class Test {

        private static void test(int[] arr) {

            for (int i = 0; i < arr.length; i++) {

                try {

                    if (arr[i] % 2 == 0) {

                        throw new NullPointerException();

                    } else {

                        System.out.print(i);

                    }

                } finally {

                    System.out.print("e");

                }

            }

        }

        public static void main(String[]args) {

            try {

                test(new int[] {0, 1, 2, 3, 4, 5});

            } catch (Exception e) {

                System.out.print("E");

            }

        }

    }

    可以得到的结论是( B)

    A.编译出错

    B.eE

    C. Ee

    D. eE1eE3eE5

    E. Ee1Ee3Ee5

    19.下面有关servlet service描述错误的是? B

     A.不管是post还是get方法提交过来的连接,都会在service中处理

     B.doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的

     C.service()是在javax.servlet.Servlet接口中定义的

     D.service判断请求类型,决定是调用doGet还是doPost方法

    20.正则表达式中,表示匹配非数字字符的字符是(D)?

     A.

     B.d

     C.B

     D.D

    21.What is displayed when the following is executed;   A

    double d1=-0.5;

    System.out.println("Ceil d1="+Math.ceil(d1));

    System.out.println("floor d1="+Math.floor(d1));

     A.Ceil d1=-0.0

    floor d1=-1.0

     B.Ceil d1=0.0

    floor d1=-1.0

     C.Ceil d1=-0.0

    floor d1=-0.0

     D.Ceil d1=0.0

    floor d1=0.0

     E.Ceil d1=0

    floor d1=-1

    题解:

    1.Math.round():根据“round”的字面意思“附近、周围”,可以猜测该函数是求一个附近的整数,看下面几个例子就明白。

    小数点后第一位<5

    正数:Math.round(11.46)=11

    负数:Math.round(-11.46)=-11

     

    小数点后第一位>5

    正数:Math.round(11.68)=12

    负数:Math.round(-11.68)=-12

     

    小数点后第一位=5

    正数:Math.round(11.5)=12

    负数:Math.round(-11.5)=-11

    总结:(小数点后第一位)大于五全部加,等于五正数加,小于五全不加。

     

    2.Math.ceil():向上取整

    例如:

    Math.ceil(11.46)=Math.ceil(11.68)=Math.ceil(11.5)=12

    Math.ceil(-11.46)=Math.ceil(-11.68)=Math.ceil(-11.5)=-11

     

    3.Math.floor():向下取整

    例如:

    Math.floor(11.46)=Math.floor(11.68)=Math.floor(11.5)=11

    Math.floor(-11.46)=Math.floor(-11.68)=Math.floor(-11.5)=-12

    22.(多选)下面的Java赋值语句哪些是有错误的 (B F)

    A. int i =1000;

    B. float f = 45.0;

    C. char s = ‘u0639’;

    D. Object o = ‘f’;

    E. String s = "hello,world";

    F. Double d = 100;

    23.(多选)关于Java的一些概念,下面哪些描述是正确的:(   B F   )

    A. 所有的Java异常和错误的基类都是java.lang.Exception, 包括java.lang.RuntimeException

    B. 通过try … catch … finally语句,finally中的语句部分无论发生什么异常都会得到执行

    C. java中所有的数据都是对象

    D. Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finallize方法一定会得到执行

    E. Java是跨平台的语言,无论通过哪个版本的Java编写的程序都能在所有的Java运行平台中运行

    F. Java通过synchronized进行访问的同步,synchronized作用非静态成员方法和静态成员方法上同步的目标是不同的

    题解:

    A:Java中所有错误和异常的父类是java.lang.Throwable

    C:基本数据类型不是对象,不能用new的方法获取,但是每个基本数据类型都对应着封装类型,这些封装类型为了解决基本数据类型面向对象用的。

    D:Java垃圾回收器负责回收无用对象占据的内存资源,但对象没有使用new获取了一块特殊区域,这块特殊区域的回收使用finallize()

    F:Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”

    Synchronized修饰静态方法,实际上是对该类对象加锁,俗称“类锁”。

    24.(多选)关于Java中的数组,下面的一些描述,哪些描述是准确的:(   A C F    )

     A.数组是一个对象,不同类型的数组具有不同的类

     B.数组长度是可以动态调整的

     C.数组是一个连续的存储结构

     D.一个固定长度的数组可类似这样定义: int array[100]                 没有这样的定义

     E.两个数组用equals方法比较时,会逐个便利其中的元素,对每个元素进行比较                使用equals比较

     F.可以二维数组,且可以有多维数组,都是在Java中合法的

    25.为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(   A   )。

    A. static  void  method( )

    B. public  void  method( )

    C. final  void  method( )

    D. abstract  void  method( )

    26.在程序代码中写的注释太多,会使编译后的程序尺寸变大。B

     A.正确

     B.错误

    27.abstract和final可以同时作为一个类的修饰符。(B  )

     A.正确

     B.错误

    28.分析以下代码,说法正确的是(D)

    public static void main(String[] args) {

         System.out.println(val());

     }

     

     public static int val() {

         int num = 5;

         try {

         num = num / 0;

     } catch (Exception e) {

         num = 10;

     } finally {

         num = 15;

     }

     return num;

     }

    A. 运行时报错

    B. 程序正常运行,输出值为5

    C. 程序正常运行,输出值为10

    D. 程序正常运行,输出值为15

    29.以下表达式的类型和值是什么?(注意整数除法)(D)

    -5 + 1/4 + 2*-3 + 5.0

    A. int -3

    B. int -4

    C. double -5.5

    D. double -6.0

    30.关于JAVA的垃圾回收机制,下面哪些结论是正确?B

     A.程序可以任意指定释放内存的时间

     B.JAVA程序不能依赖于垃圾回收的时间或者顺序

     C.程序可明确地标识某个局部变量的引用不再被使用                  局部变量声明在栈中,当函数调用完毕后自动清空栈,并不是由jvm来回收的,jvm只负责回收堆中内存。

     D.程序可以显式地立即释放对象占有的内存

    31.代码行float t=5.1; int i=t; ,不正确的是 B

     A.代码不能编译

     B.代码编译, i被设置为5            在t前面没有加强制转换

     C.第二行若改为 int i=(byte)t 则可编译

     D.第一行若改为 float t=5.1f 则可编译

    32.下面有关jdbc statement的说法错误的是?C

     A.JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程

     B.对于PreparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象”

     C.PreparedStatement中,“?” 叫做占位符,一个占位符可以有一个或者多个值

     D.PreparedStatement可以阻止常见的SQL注入式攻击

    33.如下代码的 结果是什么 ?  B

    class Base {

        Base() {

        System.out.print("Base");

        }

    }

    public class Alpha extends Base {

        public static void main( String[] args ) {

            new Alpha();

            //调用父类无参的构造方法

            new Base();

        }

    }

    A. Base

    B. BaseBase

    C. 编译失败

    D. 代码运行但没有输出

    E. 运行时抛出异常

    34.关于访问权限,说法正确的是? ( A)

    A. 类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A可以访问类B的方法testB

    B. 类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A不可以访问类B的方法testB

    C. 访问权限大小范围:public > 包权限 > protected > private

    D. 访问权限大小范围:public > 包权限 > private > protected

    35.关于protected 修饰的成员变量,以下说法正确的是  A

    A. 可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所访问

    B. 只能被该类本身和该类的所有的子类访问

    C. 只能被该类自身所访问

    D. 只能被同一个包中的类访问

    题解:

    (1)public:可以被所有其他类所访问。

    (2)private:只能被自己访问和修改。

    (3)protected:自身,子类及同一个包中类可以访问。

    (4)default(默认):同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

    36.下列不正确的 Java 语言标识符是( C)

    A. Sky

    B. $Computer

    C. for                 关键字

    D.NULL

    37.以下哪个类包含方法flush()?(B)

    A. InputStream

    B. OutputStream

    C. A 和B 选项都包含

    D. A  和B 选项都不包含

    题解:

    flush()函数强制将缓冲区中的字符流、字节流等输出,目的是如果输出流输出到缓冲区完成后,缓冲区并没有填满,那么缓冲区将会一直等待被填满。所以在关闭输出流之前要调用flush()。

    38.关于 访问权限说法正确 的是 ? (  B  )

    A. 类定义前面可以修饰public,protected和private

    B. 内部类前面可以修饰public,protected和private

    C. 局部内部类前面可以修饰public,protected和private

    D. 以上说法都不正确

    39.public static void main(String[] args) {

    Thread t = new Thread() {

    public void run() {

    360DW();

    }

    };

    t.run();

    System.out.print("DW");

    }

    static void 360DW() {

    System.out.print("360");

    }   B

     A.DW

     B.360

     C.360DW

     D.都不输出

    40.java8中,下面哪个类用到了解决哈希冲突的开放定址法    C

     A.LinkedHashSet

     B.HashMap

     C.ThreadLocal

     D.TreeMap

    题解:

    Threadlocalmap使用开放定址法解决hash冲突,hashmap使用链地址法解决hash冲突。

    41(多选).以下哪些方法可以取到http请求中的cookie值(B D)?

     A.request.getAttribute

     B.request.getHeader

     C.request.getParameter

     D.request.getCookies

    题解:

    链接:

    1)Cookie[] getCookies()
    返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。

     

    2)Object getAttribute(String name)
    以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。

     

    3)String getHeader(String name)
    以字符串形式返回指定的请求头的值。Cookie也是头的一种;

     

    4)String getParameter(String name)
    以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。

    42(多选).Java程序的种类有(B C D )

    A. 类(Class)

    B. Applet

    C. Application

    D. Servlet

    43(多选).byte b1=1,b2=2,,b6,b8;

    final byte b4=4,b5=6,b7;

    b3=(b1+b2);  /*语句1*/

    b6=b4+b5;    /*语句2*/

    b8=(b1+b4);  /*语句3*/

    b7=(b2+b5);  /*语句4*/

    System.out.println(b3+b6);

    下列代码片段中,存在编译错误的语句是( B C D )

     A.语句2

     B.语句1

     C.语句3

     D.语句4

    题解:

    ------------知识点------------

    Java表达式转型规则由低到高转换

    1、所有的byte,short,char型的值将被提升为int型;

    2、如果有一个操作数是long型,计算结果是long型;

    3、如果有一个操作数是float型,计算结果是float型;

    4、如果有一个操作数是double型,计算结果是double型;

    5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。

    --------------解析--------------

    语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;

    语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;

    语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);

    语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变

    44.覆盖(重写)与重载的关系是(A)。

    A. 覆盖(重写)只有出现在父类与子类之间,而重载可以出现在同一个类中

    B. 覆盖(重写)方法可以有不同的方法名,而重载方法必须是相同的方法名

    C. final修饰的方法可以被覆盖(重写),但不能被重载

    D. 覆盖(重写)与重载是同一回事

    题解:
    首先,重载和重写都是多态的一种体现方式。重载是编译期间的活动,重写是运行期间的活动。
         其次,重载是在一个类中定义相同的名字的方法,方法的参数列表或者类型要互相不同,但是返回值类型不作为是否重载的标准,可以修改可见性;
         重写是不同的,要求子类重写基类的方法时要与父类方法具有相同的参数类型和返回值,可见性需要大于等于基类的方法

    45.对接口的描述正确的是(A)

    A. 一个类可以实现多个接口

    B. 接口可以有非静态的成员变量

    C. 在jdk8之前,接口可以实现方法

    D. 实现接口的任何类,都需要实现接口的方法

    46.覆盖与重载的关系是( A)

     A.覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中

     B.覆盖方法和重载方法都可以不同名,也可以同名

     C.final修饰的方法可以被覆盖,但不能被重载

     D.覆盖与重载是同一回事

    47.基本的Java语言函数存储在以下哪个java包中?(A)

    A. java.lang

    B. java.io

    C. java.net

    D. java.util

    48.对于Java中异常的描述正确的是(D )

    A. 用throws定义了方法可能抛出的异常,那么调用此方法时一定会抛出此异常。

    B. 如果try块中没有抛出异常,finally块中的语句将不会被执行。

    C. 抛出异常意味着程序发生运行时错误,需要调试修改

    D. Java中的可不检测(unchecked)异常可能来自RuntimeException类或其子类。

    题解:
    A错 在调用此方法的时候 也可以再次申明以将异常交由更高一级处理。
    B错 finally块中的语句一定会被执行。除非catch块中有System.exit(0)
    C错 抛出异常不一定是运行时异常,也有可能是编译时异常。
    D对 运行时异常的特点是Java编译器不会检查它。

    49.以下对选择语句描述错误的是(A)

    A. 根据某一条件重复执行一部分代码直到满足终止条件为止

    B. 可以根据条件控制程序流程,改变程序执行的顺序

    C. 选择语句可以嵌套使用

    D. 当条件满足时就会执行相应的语句

    50.Java程序中的类名称必须与存放该类的文件名相同。B

    A. 对

    B. 错

    51.以下代码执行后输出结果为( A)

    public class Test {

        public static void main(String[] args) {

            System.out.println("return value of getValue(): " +

            getValue());

        }

         public static int getValue() {

             try {

                 return 0;

             } finally {

                 return 1;

             }

         }

     }

    A. return value of getValue(): 1

    B. return value of getValue(): 0

    C. return value of getValue(): 0return value of getValue(): 1

    D. return value of getValue(): 1return value of getValue(): 0

    52.多重继承的概念在Java中实现是通过如下哪些?(B)

    I. 扩展两个或多个类

    II. 扩展一个类并实现一个或多个接口。

    III. 实现两个或更多接口。

    A. 只有I &amp;II

    B. 只有II &amp; III

    C. 只有III

    D. 都是

    53.This调用语句必须是构造函数中的第一个可执行语句。B

    A. 正确

    B. 错误

    54.下列关于构造函数的描述中,错误的是(D)

    A. 构造函数可以设置默认的参数

    B. 构造函数在定义类对象时自动执行

    C. 构造函数可以是内联函数

    D. 构造函数不可以重载

    55.int i=5;

    int s=(i++)+(++i)+(i--)+(--i);

    s=( )//s 的值是什么? E

     A.28

     B.25

     C.21

     D.26

     E.24

     F.23

    56.子类要调用继承自父类的方法,必须使用super关键字。B

    A. 正确

    B. 错误

    57.下列代码执行结果为(A)

    public static void main(String args[])throws InterruptedException{

                Thread t=new Thread(new Runnable() {

                    public void run() {

                        try {

                            Thread.sleep(2000);

                        } catch (InterruptedException e) {

                            throw new RuntimeException(e);

                        }

                        System.out.print("2");

                    }

                });

                t.start();

                

                t.join();

                System.out.print("1");

            }

    A. 21

    B. 12

    C. 可能为12,也可能为21

    D. 以上答案都不对

    题解:

    1、子类构造函数调用父类构造函数用super

    2、子类重写父类方法后,若想调用父类中被重写的方法,用super

    3、未被重写的方法可以直接调用。

    58.下列不属于Java语言性特点的是  D

    A. Java致力于检查程序在编译和运行时的错误

    B. Java能运行虚拟机实现跨平台

    C. Java自己操纵内存减少了内存出错的可能性

    D. Java还实现了真数组,避免了覆盖数据类型的可能

    题解:

    Java致力于检查程序在编译和运行时的错误。
    Java虚拟机实现了跨平台接口
    类型检查帮助检查出许多开发早期出现的错误。
    Java自己操纵内存减少了内存出错的可能性。
    Java还实现了真数组,避免了覆盖数据的可能。
    注意,是避免数据覆盖的可能,而不是数据覆盖类型

    59.下面程序段的时间复杂度是(B)

    i = k = 0;

    while( k < n ){

       i ++ ;

    k += i ;

    }

     A.O(n)

     B.O(n^1/2)

     C.O(n*i)

     D.O(n+i)

    60.以下描述正确的是(B)?

     A.while循环语句的循环体至少执行1次

     B.do-while循环可以写成while循环的格式

     C.continue语句可以出现在各种循环体中

     D.break语句不可以出现在循环体内

    61.下列不属于java语言性特点的是B

     A.java能检查程序在编译和运行时的错误

     B.java能运行虚拟机实现跨平台

     C.java自己操纵内存减少了内存出错的可能性

     D.java还实现了真数组,避免了覆盖数据的可能

    62.关于以下代码的说明,正确的是( C)

    1. class StaticStuff

    2. {

    3. static int x=10;

    4. static { x+=5;}

    5. public static void main(String args[ ])

    6. {

    7. System.out.println(“x=” + x);

    8. }

    9. static { x/=3;}

    10. }

     A.4行与9行不能通过编译,因为缺少方法名和返回类型

     B.9行不能通过编译,因为只能有一个静态初始化器

     C.编译通过,执行结果为:x=5

     D.编译通过,执行结果为:x=3

    63(多选).java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?A B

     A.Hashtable

     B.Vector

     C.TreeSet

     D.LinkedList

    题解:

    HashMap是线程安全的HashMap

    Vector是线程安全的ArrayList

    TreeSet和LinkedList都不是线程安全的

    64.(多选)对Collection和Collections描述正确的是 B D

     A.Collection是java.util下的类,它包含有各种有关集合操作的静态方法

     B.Collection是java.util下的接口,它是各种集合结构的父接口

     C.Collections是java.util下的接口,它是各种集合结构的父接口

     D.Collections是java.util下的类,它包含有各种有关集合操作的静态方法

    65.(多选)常用的servlet包的名称是? B D

     A.java.servlet

     B.javax.servlet

     C.servlet.http

     D.javax.servlet.http

    66.(多选)以下哪种方式实现的单例是线程安全的 A B C D

     A.枚举

     B.静态内部类

     C.双检锁模式

     D.饿汉式

    67.StringBuffer类对象创建之后可以再修改和变动. A

    A.正确

    B.错误

    68.下面关于继承的描述正确的是  A

    A.在Java中只允许单一继承

    B.在Java中一个类只能实现一个接口

    C.在Java中一个类不能同时继承一个类和实现一个接口

    D.Java的单一继承使代码不可靠

    69.类Car里面有个方法run(),如果直接用Car.run(),则方法run前面必须用的关键词是?  (D )

    A.class

    B.final

    C.public

    D.static

    题解:

    被sataic声明的为静态方法,可以直接通过类名调用而不需要通过对象调用。

    70.代码

    System.out.println(10%3*2);

    将打印?B

    A.1

    B.2

    C.4

    D.6

    71.下面有关java实例变量,局部变量,类变量和final变量的说法,错误的是? B

    A.实例变量指的是类中定义的变量,即成员变量,如果没有初始化,会有默认值。

    B.局部变量指的是在方法中定义的变量,如果没有初始化,会有默认值                  必须要初始化

    C.类变量指的是用static修饰的属性

    D.final变量指的是用final 修饰的变量

    72.如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是?  ( C)

    A.void use() { …}

    B.protected void use() { …}

    C.public void use() { …}

    D.以上语句都可以用在类SmallCup中

    73.java接口的方法修饰符可以为?(忽略内部接口)       D

    A.private

    B.protected

    C.final

    D.abstract

    74.已知如下类说明:

    public class Test{

        private float f=1.0f;

        int m=12;

        static int n=1;

        public static void main(String args[]){

            Test t=new Test();

        }

    }

    如下哪些使用是正确的(D)

    A.t.f = 1.0

    B.this.n

    C.Test.m

    D.Test.n

    75.观察以下代码:

    class Car extends Vehicle

    {

        public static void main (String[] args)

        {

            new  Car(). run();

        }

        private final void run()

        {

            System. out. println ("Car");

        }

    }

    class Vehicle

    {

        private final void run()

        {

            System. out. println("Vehicle");

        }

    }

    下列哪些针对代码运行结果的描述是正确的?A

    A.Car

    B.Vehicle

    C.Compiler error at line 3

    D.Compiler error at line 5

    E.Exception thrown at runtime

    正确:31

    错误:44

     

     

     

    下:

     

    Java测试(下)

    1、下面关于继承的描述正确的是 A

    1. 在Java中只允许单一继承
    2. 在Java中一个类只能实现一个接口
    3. 在Java中一个类不能同时继承一个类和实现一个接口
    4. Java的单一继承使代码不可靠

     

    2、下列说法哪个正确( C )

    A.  不需要定义类,就能创建对象
    B.  对象中必须有数据域和方法
    C.  数据域可以是基本类型变量,也可以是一个对象
    D.  数据域必须是基本类型变量

     

    3、关于 Socket 通信编程,以下描述错误的是:( D)

    A.  服务器端通过new ServerSocket()创建TCP连接对象
    B.  服务器端通过TCP连接对象调用accept()方法创建通信的Socket对象
    C.  客户端通过new Socket()方法创建通信的Socket对象
    D.  客户端通过new ServerSocket()创建TCP连接对象
     
    题解:
    Client通过 new socket(ip,端口号)来建立与服务端连接

     

    4、BufferedReader的父类是以下哪个?D

    1. FilterReader
    2. InputStreamReader
    3. PipedReader
    4. Reader

     

    5、给出以下代码 

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    public class TestObj{

        public static void main(String[] args){

            Object o=new Object(){

                public boolean equals(Object obj){

                    return true;

                }

            };

            System.out.println(o.equals(“Fred”));

        }

    }

    请给出结果:(B)

    1. 运行时抛出异常
    2. true
    3. Fred
    4. 第三行编译错误

     

    6、在第16行插入哪段代码可以获得一个Point对象的坐标?(  D)

    10. class Line {
    11. public class Point { public int x,y;}
    12. public Point getPoint() { return new Point(); }
    13. }
    14. class Triangle {
    15. public Triangle() {
    16. // insert code here
    17. }
    18. }

    1. Point p = Line.getPoint();
    2. Line.Point p = Line.getPoint();
    3. Point p = (new Line()).getPoint();
    4. Line.Point p = (new Line()).getPoint();

     

     

    7、下列关于容器集合类的说法正确的是?C

    1. LinkedList继承自List
    2. AbstractSet继承自Set
    3. HashSet继承自AbstractSet
    4. WeakMap继承自HashMap

     

    题解:

    A.LinkedList是继承自AbstractSequentialList(抽象类,实现了List接口)的,并且实现了List接口。所以A错误。

    B.AbstractSet是实现了Set接口的,本身是一个抽象类。继承自AbstractCollection(抽象类,实现了Collection接口)。所以B错误。

    C.HashSet是继承自AbstractSet,实现了Set接口。所以C正确。

    D.WeakMap不存在于java集合框架的。只有一个叫做WeakHashMap(继承自AbstractMap)。

     

     

    8、(多选)关于多线程和多进程,下面描述正确的是(A C):

    1. 多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,拥有自己的栈空间。
    2. 线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于资源管理和保护。
    3. 线程的通信速度更快,切换更快,因为他们在同一地址空间内。
    4. 一个线程可以属于多个进程。

     

    题解:
    1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(通常说的主线程)。
    2、资源分配给进程,同一进程的所有线程共享该进程的所有资源。
    3、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
    4、处理机分给线程,即真正在处理机上运行的是线程。
    5、线程是指进程内的一个执行单元,也是进程内的可调度实体。

     

    9、(多选)在java中重写方法应遵循规则的包括(B C)

    1. 访问修饰符的限制一定要大于被重写方法的访问修饰符
    2. 可以有不同的访问修饰符
    3. 参数列表必须完全与被重写的方法相同
    4. 必须具有不同的参数列表

     

     

    10、Java 语言中创建一个对象使用的关键字是(C)

    A.  class
    B.  interface
    C.  new
    D.  create

     

    11、欲构造ArrayList类的一个实例,此类实现了List接口,下列哪个方法是正确的?

    1. ArrayList myList=new Object(B)
    2. List myList=new ArrayList()
    3. ArrayList myList=new List()
    4. List myList=new List()

     

    12、以下哪项不是java基础类型(C)

    1. int
    2. boolean
    3. String
    4. Float

     

    题解:

    原因:Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
    1、整数:包括int,short,byte,long
    2、浮点型:float,double
    3、字符:char
    4、布尔:boolean


    13、已知 声明并初始化二维数组 int a[ ][ ]={{1,2},{3,4},{5,6}} ,则 a[1][1] 的值为(C)

    1. 1
    2. 2
    3. 4
    4. 5

     

    14、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为C

    1. 隐藏
    2. 覆盖
    3. 重载
    4. Java不支持此特性

     

    15、Java的Daemon线程,setDaemon( A)设置必须要?

    1. 在start之前
    2. 在start之后
    3. 前后都可以

     

    题解:

    setDaemon()方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。

     

    16、有这么一段程序:

    1

    2

    3

    4

    5

    6

    7

    8

    public class Test{ 

        public String name="abc"; 

        public static void main(String[] args){ 

            Test test=new Test(); 

            Test testB=new Test(); 

            System.out.println(test.equals(testB)+","+test.name.equals(testB.name)); 

        } 

    }

    请问以上程序执行的结果是(C)

    1. true,true
    2. true,false
    3. false,true
    4. false,false

    17、以下多线程对int型变量x的操作,哪几个不需要进行同步(D)

    1. x=y;
    2. x++;
    3. ++x;
    4. x=1;

     

    题解:

    这个题只要看操作受不受多线程的影响,是否加锁

    A,因为y的初值不确定,所以要加锁

    B和C却需要执行2步操作,所以也需要加锁

    只有D的结果不受多线程影响

    所以选ABC

     

     

    18、可以把任何一种数据类型的变量赋给Object类型的变量。A

    1. 正确
    2. 错误

     

    19、事务隔离级别是由谁实现的?C

    1. Java应用程序
    2. Hibernate
    3. 数据库系统
    4. JDBC驱动程序

     

    20、类A1和类A2在同一包中,类A2有个protected的方法testA2,类A1不是类A2的子类(或子类的子类),类A1可以访问类A2的方法testA2。( A )

    A.  正确
    B.  错误

     

    21、

    1

    2

    3

    public interface IService {

    String NAME="default";

    }

    与上面等价表示是哪一项(D)?

    1. public String NAME=”default”;
    2. public static String NAME=”default”;
    3. private String NAME=”default”;
    4. public static final String NAME=”default”;

     

    22、ArrayList和Vector主要区别是什么?A

    1. Vector与ArrayList一样,也是通过数组实现的,不同的是Vector支持线程的同步
    2. Vector与ArrayList一样,也是通过数组实现的,不同的是ArrayList支持线程的同步
    3. Vector是通过链表结构存储数据,ArrayList是通过数组存储数据
    4. 上述说法都不正确

     

     

     

     

     

    23、面这条语句一共创建了多少个对象:String s="welcome"+"to"+360; A

    1. 1
    2. 2
    3. 3
    4. 4

     

    24、HashMap和HashTable的描述,错误的是?D

    1. 他们都实现了Map接口。
    2. HashMap非线程安全,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供额外同步。
    3. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
    4. 通过contains方法可以判断一个对象是否存在于HashMap或者Hashtable中。

     

    25、下列关于Java并发的说法中正确的是(B)

    1. CopyOnWriteArrayList适用于写多读少的并发场景
    2. ReadWriteLock适用于读多写少的并发场景
    3. ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
    4. 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了

     

    题解:

    A,CopyOnWriteArrayList适用于写少读多的并发场景

    B,ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥,

       读与读之间可以并发执行。在读多写少的情况下可以提高效率

    C,ConcurrentHashMap是同步的HashMap,读写都加锁

    D,volatile只保证多线程操作的可见性,不保证原子性

     

     

    26、(多选)下面选项中,哪些是interface中合法方法定义?(A C D)

    1. public void main(String [] args);
    2. private int getSum();
    3. boolean setFlag(Boolean [] test);
    4. public float get(int x);

     

    27、覆盖与重载的关系是(A)

    A.  覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中
    B.  覆盖方法和重载方法都可以不同名,也可以同名
    C.  final修饰的方法可以被覆盖,但不能被重载
    D.  覆盖与重载是同一回事

     

    28、在Java中,main()方法的返回值的类型是: C

    A.  public
    B.  static
    C.  void
    D.  String

     

     

    29、下面是findSum(int m.int n)方法的定义,方法调用findSum(1,5)的返回结果是(D )

    int findSum(int m, int n){

        int sum=0;

        for(int i=m;i<=n;i++){

            sum+=i;

        }

        return sum;

    }

    1. 1
    2. 5
    3. 10
    4. 15

     

    30、在 java 中 , 一个类(B)

    A.  可以继承多个类
    B.  可以实现多个接口
    C.  在一个程序中只能有一个子类
    D.  只能实现一个接口

     

    31、在某个类A中存在一个方法:void set(int x),以下不能作为这个方法的重载的声明的是(A)

    A.  void set(int y)
    B.  int set(int x,double y)
    C.  double set(int x,int y)
    D.  void set(int x,int y)

     

    32、执行下列程序的输出结果为(   D   )

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    public class Test {

     public static void main(String[] args) {

     String s1 = "HelloWorld";

     String s2 = new String("HelloWorld");

     if (s1 == s2) {

     System.out.println("s1 == s2");

     } else {

     System.out.println("s1 != s2");

     }

     if (s1.equals(s2)) {

     System.out.println("s1 equals s2");

     } else {

     System.out.println("s1 not equals s2");

     }

     }

     }

    1. s1 == s2
      s1 not equals s2
    2. s1 == s2
      s1 equals s2
    3. s1 != s2
      s1 not equals s2
    4. s1 != s2
      s1 equals s2

     

    33、以下那个数据结构是适用于"数据必须以相反的顺序存储然后检索" ? (A)

    A.  Stack
    B.  Queue
    C.  List
    D.  Liink List

     

    34、下面哪个Set类是排序的?C

    1. LinkedHashSet
    2. TreeSet
    3. HashSet
    4. AbstractSet

     

    题解:

    TreeSet自然排序,LinkedHashSet按添加顺序排序

     

    35、String s = new String("xyz");创建了几个StringObject?A

    1. 两个或一个都有可能
    2. 两个
    3. 一个
    4. 三个

     

    36、以下J2EE中常用的名词解释错误的是?B

    1. EJB容器:Enterprise java bean 容器
    2. JNDI:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
    3. JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
    4. JAF:JAVA安全认证框架。提供一些安全控制方面的框架。

     

    题解:

    J2EE中常用的名词解释

    1.web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接和容器中的环境变量接接口互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。

    2.Web container:实现J2EE体系结构中Web组件协议的容器。这个协议规定了一个Web组件运行时的环境,包括安全,一致性,生命周期管理,事务,配置和其它的服务。一个提供和JSP和J2EE平台APIs界面相同服务的容器。一个Web container 由Web服务器或者J2EE服务器提供。

    3.EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。一个实现了J2EE体系结构中EJB组件规范的容器。 这个规范指定了一个Enterprise bean的运行时环境,包括安全,一致性,生命周期,事务, 配置,和其他的服务。

    4.JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

    5.JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。

    6.JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。

    7.JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。

    8.RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。RMI-IIOP出现以前,只有RMI和CORBA两种选择来进行分布式程序设计。RMI-IIOP综合了RMI和CORBA的优点,克服了他们的缺点,使得程序员能更方便的编写分布式程序设计,实现分布式计算。首先,RMI-IIOP综合了RMI的简单性和CORBA的多语言性(兼容性),其次RMI-IIOP克服了RMI只能用于Java的缺点和CORBA的复杂性(可以不用掌握IDL)。

     

     

    37、从以下哪一个选项中可以获得Servlet的初始化参数? C

    1. Servlet
    2. ServletContext
    3. ServletConfig
    4. GenericServlet

    38、以下描述错误的一项是(C )?

    A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行  到了第几行,是线程隔离的
    B.原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
    C.方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的
    D.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
     
    题解:

    Java运行时内存

    1. 程序计数器,线程私有。可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变整个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能。

    由于JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。因此为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,所以线程私有。

    程序计数器是唯一一个在Java虚拟机规范中没有规定任何OOM的区域。

    2. Java虚拟机栈,线程私有。生命周期和线程相同。虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧。每个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机中入栈到出栈的过程。

    3. 本地方法栈,线程私有。和虚拟机栈的区别就在于一个是为了执行Java方法服务,一个是为了虚拟机使用到的Native方法服务。

    4. 堆,线程共享。存放对象实例和数组。

    5. 方法区,线程共享。存放已经被JVM加载的类信息,常量,静态变量,即时编译器编译后的代码。

     

     

    39、以下哪项不属于java类加载过程?B

    1. 生成java.lang.Class对象
    2. int类型对象成员变量赋予默认值
    3. 执行static块代码
    4. 类方法解析

     

    40、Math.floor(-8.5)=(D )

    1. (float)-8.0
    2. (long)-9
    3. (long)-8
    4. (double)-9.0

     

    41、列哪个选项是正确计算42度(角度)的余弦值?C

    1. double d=Math.cos(42)
    2. double d=Math.cosine(42)
    3. double d=Math.cos(Math.toRadians(42))
    4. double d=Math.cos(Math.toDegrees(42))

     

    42、下列关于构造函数说法正确的是(C)

    1. 构造函数的返回值为void
    2. 构造函数不可以被重载
    3. 构造函数可以是内联函数
    4. 构造函数可以没有参数

     

    43、下面有关重载函数的说法中正确的是   C

    1. 重载函数必须具有不同的返回值类型
    2. 重载函数形参个数必须不同
    3. 重载函数必须有不同的形参列表
    4. 重载函数名可以不同

     

    44、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为(C)

    1. 隐藏
    2. 重写
    3. 重载
    4. Java不支持此特性

     

    45、类声明中,声明一个类不能再被继承的关键字是(C)

    1. public
    2. abstract
    3. final
    4. static

     

    46、Java Application 中的主类需包含main方法,以下哪项是main方法的正确形参?B

    A.  String  args
    B.  String[] args
    C.  Char  arg
    D.  StringBuffer[] args

     

    47、如下Java语句 double x=2.0; int y=4; x/=++y; 执行后,x的值是(C)

    A.  0.5
    B.  2.5
    C.  0.4
    D.  2.0

     

    48、以下代码的输出的正确结果是   D

    1

    2

    3

    4

    5

    6

    public class Test {

    public static void main(String args[]) {

    String s = "祝你考出好成绩!";

    System.out.println(s.length());

    }

    }

     

    1. 24
    2. 16
    3. 15
    4. 8

    49、一个Java源程序文件中定义几个类和接口,则编译该文件后生成几个以.class为后缀的字节码文件。A

    1. 正确
    2. 错误

     

    50、下列哪种异常是检查型异常,需要在编写程序时声明?C

    1. NullPointerException
    2. ClassCastException
    3. FileNotFoundException
    4. IndexOutOfBoundsException

     

    51. (多选)在java中重写方法应遵循规则的包括(B C)

    A.访问修饰符的限制一定要大于被重写方法的访问修饰符

    B.可以有不同的访问修饰符

    C.参数列表必须完全与被重写的方法相同

    D.必须具有不同的参数列表

     

    52.(多选) final、finally和finalize的区别中,下述说法正确的有?(A B)

    A.final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

    B.finally是异常处理语句结构的一部分,表示总是执行。

    C.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源的回收,例如关闭文件等。

    D.引用变量被final修饰之后,不能再指向其他对象,它指向的对象的内容也是不可变的

    53.(多选) 下列说法哪个正确(A C D)

    A.abstract类只能用来派生子类,不能用来创建abstract类的对象。

    B.final类不但可以用来派生子类,也可以用来创建final类的对象。

    C.abstract不能与final同时修饰一个类。

    D.abstract类定义中可以没有abstract方法。

     

    54. 以下声明合法的是(B)

    A.default  String  s

    B.public  final  static  native  int  w( )

    C.abstract  double  d

    D.abstract  final  double  hyperbolicCosine( )

    55. 若有下列定义,下列哪个表达式返回false?(B)

    String s = "hello";

    String t = "hello";

    char c[] = {'h','e','l','l','o'} ;

    A.s.equals(t);
    B.t.equals(c);
    C.s==t;
    D.t.equals(new String("hello"));
     
    题解:
    A、D选项是对字符串内容的比较。JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池。代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。所以返回true。 

    C选项是引用地址的比较,同上也属于常量池的同一个字符串地址,所以相等返回true。

     
     
    56. 关于 JAVA 堆,下面说法错误的是(D)
    A.所有类的实例和数组都是在堆上分配内存的
    B.对象所占的堆内存是由自动内存管理系统回收
    C.堆内存由存活和死亡的对象,空闲碎片区组成
    D.数组是分配在栈中的
     
    题解:
    数组是一种对象,所有的对象类都是在堆内存中,基本数据类型在栈内存中
     
    57.java中,静态变量static在不同线程的不同实例中地址是否一样?他们储存在什么区域(C)
    A.地址一样,在堆栈区。
    B.地址不一样,在堆栈区。
    C.地址一样,在全局区。
    D.地址不一样,在全局区。
     
    题解:

    类信息、常量、静态变量等数据储存在方法区,只会在类加载的时候储存一次,地址一样。

    因为方法区又称作为Non-Heap(非堆),直接把ABD都排除了,我也不知道全局区是个啥...

     
     
    58. 如果要建立一个java.scut.computer的包,叙述正确的是?  (A )
    A.只需在代码中加入“package java.scut.computer;”一个语句,并且必须放在代码的第一行
    B.只需在代码中加入“package java.scut;”一个语句
    C.必须在代码中加入“package java.scut;”和“package java.scut.computer;”两个语句
    D.在代码中,不一定是第一句,只要是类定义前,加入package语句即可

    59.transient变量和下面哪一项有关(A)?

    A.Serializable
    B.Cloneable
    C.Runnable
    D.Throwable
    E.Comparable

    60.下列哪个说法是正确的(D)

    A.ConcurrentHashMap使用synchronized关键字保证线程安全
    B.HashMap实现了Collction接口
    C.Array.asList方法返回java.util.ArrayList对象
    D.SimpleDateFormat是线程不安全的

    61.当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?A

    A.CountDownLatch
    B.CyclicBarrier
    C.Semaphore
    D.Future
     
    题解:
    CountDownLatch 是等待一组线程执行完,才执行后面的代码。此时这组线程已经执行完。
    CyclicBarrier 是等待一组线程至某个状态后再同时全部继续执行线程。此时这组线程还未执行完。
     

    62.如果希望监听TCP端口9000,服务器端应该怎样创建socket?  B

    A.new Socket("localhost",9000);
    B.new ServerSocket(9000);
    C.new Socket(9000);
    D.new ServerSocket("localhost",9000);
     
    题解:
    客户端:

    ServerSocket (int port)

    Creates a server socket, bound to the specified port.

     

    服务端:

    Socket(InetAddress address, int port)

    Creates a stream socket and connects it to the specified port number at the specified IP address.

     

    63.(多选)下列有关java构造函数叙述正确的是(C D)

    A.构造器的返回值为void类型
    B.如果一个源文件中有多个类,那么构造器必须与公共类同名
    C.构造器可以有0个,1个或一个以上的参数
    D.每个类可以有一个以上的构造器

    64.下列js可以让一个input的背景颜色变成红色的是? A

    A.inputElement.style.backgroundColor = 'red';
    B.inputElement.backgroundColor = 'red';
    C.inputElement.style.backgroundColor = '#0000';
    D.inputElement.backgroundColor = '#0000';
    65.以下js表达式返回false的是(C)
    A.1==true
    B.“”==false
    C.false==null
    D.null==undefined

    66.下面哪条语句可以获取元素e相邻的下一个元素(D)

    A.e.next()
    B.e.nextElement()
    C.e.nextElementSibling()
    D.e.nextSibling()

    67.老王去年种了一块菜地,今年他又新开发出了一块比去年大的正方形菜地,这块新地的卷心菜的产量比去年多211只。请问他今年总共可从这两块菜地上收获多少只卷心菜?(假设面积相等的菜地去年和今年的产量一样)。 A

    A.11235
    B.9874
    C.7934
    D.8216
    E.13186

    68.一个包里有5个黑球,10个红球和17个白球。每次可以从中取两个球出来,放置在外面。那么至少取_____A___次以后,一定出现过取出一对颜色一样的球。

    A.16
    B.9
    C.4
    D.1

    69.2个空瓶换1瓶水,1元钱买1瓶水,20元钱一共能够喝多少瓶水?(可以朝老板借水或者瓶子)D

    A.19

    B.20

    C.30

    D.40

    70.下列关于修饰符混用的说法,错误的是( D)

    A.abstract不能与final并列修饰同一个类
    B.abstract 类中不建议有private的成员
    C.abstract 方法必须在abstract类或接口中
    D.static方法中能直接处理非static的属性

    71.方法通常存储在进程中的哪一区(D)

    A.堆区
    B.栈区
    C.全局区
    D.方法区


    72. Web程序中,当前用户上下文信息应该保存在下面哪个对象中(C)

    A.page
    B.request
    C.session
    D.Applicatio
    73. 在类设计中,类的成员变量要求仅仅能够被同一package下的类访问,请问应该使用下列哪个修饰词(D)
    A.protected
    B.public
    C.private
    D.不需要任何修饰词

    74.JVM内存不包含如下哪个部分(D )

    A.Stacks
    B.PC寄存器
    C.Heap
    D.Heap Frame
    75.关于访问权限,说法正确的是? (A )
    A.类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A可以访问类B的方法testB
    B.类A和类B在同一包中,类B有个protected的方法testB,类A不是类B的子类(或子类的子类),类A不可以访问类B的方法testB
    C.访问权限大小范围:public > 包权限 > protected > private
    D.访问权限大小范围:public > 包权限 > private > protected

     

     

     

    正确:38

    错误:37

  • 相关阅读:
    R语言学习笔记:向量化
    R语言笔记:快速入门
    再分析 返回值加引用&,const
    matlab 怎么保存plot的图 到指定文件夹
    不要在头文件中使用 using namespace std;
    散列表 (Hash table,也叫哈希表)
    重载操作符 operator overloading 学习笔记
    转 XMLHttpRequest().readyState的五种状态详解
    值得回味的基础知识理解加深
    完美解决fixed 水平居中问题
  • 原文地址:https://www.cnblogs.com/buhuiflydepig/p/11485377.html
Copyright © 2011-2022 走看看