金蝶中间件2011校招笔试题

一、单选题(18分,每小题个2分)

1.关于软件测试的目的,下面观点错误的是()

A、未来发现错误而执行程序的过程

B、一个好的测试用例能够发现至今尚未发现的错误

C、证明程序是正确、没有错误的

D、一个成功的测试用例是发现了至今尚未发现的错误的测试

  2Given

     Integer i = new Integer(42);

     Long l = new Long(42);

     Double d = new Double(42.0);

 

     Which expression evaluates to True?

A.      (i == l)

B.      (i == d)

C.      (d == 1)

D.      (i.equals(d))

E.       (d.equals(l))

F.       (i.equals(l))

G.      (l.equals(42L))

  3What happens when you try to compile and run the following application?Choose all

     Correct options.

1.  public class Z {

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

3.  new Z();

4.  }

    5.

        6. Z() {

        7.     Z alias1 = this;

        8.     Z alias2 = this;

        9.     synchronized (alias1) {

        10.       try {

        11.          alias2.wait();

        12.          System.out.println("DONE WAITING");

        13.       }

        14.       catch (InterruptedException e) {

        15.          System.out.println("INTERRUPTED");

        16.       }

        17.       catch (Exception e) {

        18.          System.out.println("OTHER EXCEPTION");

        19.       }

        20.       finally {

        21.          System.out.println("FINALLY");

        22.       }

        23.   }

        24.   System.out.println("ALL DONE");

        25.  }

    26. }

     AThe application compiles and prints “DONE WAITING”

     BThe application compiles but doesn’t print anything

     CThe application compiles and print “FINALLY”

     DThe application compiles and print “ALL DONE”

     EThe application compiles and print “INTERRUPTED”

     FThe application compiles and print “DONE WAITING” and “FINALLY”

4Consider the following classes:

1.  class Person{

2.      public void printValue(int i,int j){/*.....*/}

3.      public void printValue(int i){/*....*/}

4.  }

5.  public class Teacher extends Person{

6.  public void printValue(){/*...*/}

7.  public void printValue(int i){/*...*/}

8.  public void printValue(String i){/*...*/}

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

10.    Person t = new Teacher();

    11.        char ch = 'y';

       12.     t.printValue(ch);

       13. }

    14.}

Which of the statements below is true?

A. Line 7 will not compile, because void methods cannot be overridden

B. Line 12 will not compile, because there is no version of printValue() that takes a char argument

C. The code will compile but will throw an exception at line 12 at runtime

D. The statement on line 12 will invoke the method on line 8

E.  The statement on line 12 will invoke the method on line 2

F.  The statement on line 12 will invoke the method on line 3

G. The statement on line 12 will invoke the method on line 7

5Consider the following statement, choose all correct options

   You are given a class hierarchy with an instance of the Class Dog. The class Dog is a child of

Mammal and the class Mammal is a child of the class Vertebrate. The class Vertebrate has a method called move which prints out the string “move” . The class Mammal overrides this method and prints out the string”walks”. The class Dog overrides this method and prints out the string “walks on paws”.

Given an instance(dog) of the class Dog,how can you access the ancestor method move in Vertebrate so it prints out the string “move”;

A. dog.super().super().move();

B. dog.parent().parent().move();

C. dog.move();

D. none of the above

6What will happen when you attempt to compile and run the following code.

public class Test {

    public static void main(String argv[]) {

       HHQ ht = new HHQ("my name");

       ht.start();

    }

}

 

class HHQ extends Thread {

    private String name = "";

 

    HHQ(String s) {

       name = s;

    }

 

    public void run() {

       inner();

       System.out.println("finished");

    }

 

    public void inner() {

       while (true) {

           try {

              System.out.println("waiting");

              wait();

           } catch (InterruptedException ie) {

           }

           System.out.println(name);

           notifyAll();

       }

    }

}

A. It will cause a compile time error

B. Compilation and output of “waiting”

C. Compilation and output of “waiting” followed by “finished”

D. Runtime error, output of “waiting” and an exception will be thrown

 7Which of the following most closely describes the process of overriding?

AA class with the same name replaces the functionality of a class defined earlier in the hierarchy

BA method with the same name completely replaces the functionality of a method earlier in the hierarchy

CA method with the same name but different parameters gives multiple uses for the same method name

DA class is prevented from accessing methods in its immediate ancestor

8Given the following code:

1 class A{

2    public void process(){System.out.print("A");}}

3 class B extends A{

4    public void process() throws IOException{

5   super.process();

6    System.out.print("B");

7   throw new IOException();

8    }

9    public static void main(String[] args) {

10      try{

11          new B().process();

12      }catch(IOException e){

13          System.out.println("Exception");

14      }

15   }

16 }

   What will happen when you attempt to compile and run it?

A. The program will run and output “A”,”B” and “Exception”

B. The program will run and output “A”

C. The program will run and output “B” and “Exception”

D. Compilation fails because of an error in line 11

E.  Compilation fails because of an error in line 4

F.  An IOException will thrown at runtime

9What will happen when you attempt to compile and run the following code in JDK 5 environment?

   1public class Test{

2  public static void increase(Integer i){

3     i++;

4}

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

6     Integer i = new Integer(0);

7     increase(i);

8     System.out.println(i);

9  }

10}

   ACompilation fails because of an error in line 7

   BCompilation fails because of an error in line 3

   CThe program will run and output “1”

   DThe program will run and output a random number

   EThe program will run and output “0”

二、不定项选择题(18分,每小题各2分)

 1.下述表达正确的有()

A、单元测试应该由试人员进行测试

B、软件质量是不可量化的

C、开发人员应该对代码质量负最主要的责任

D、软件配置管理的好坏对软件的最终质量没有影响

E、软件运行性能是由硬件配置所制约的,与程序所用的数据结构与算法无关

 2Which of the following demonstrate a “has a”relationship?

Apublic interface Person{ }

public class Employee extends Person{ }

Bpublic interface Shape { }

public interface Rectangle extends Shape{ }

Cpublic interface Colorable{ }

public class Shape implements Colorable{ }

Dpublic class Species{ }

public class Animal{

private Species species;

}

Einterface Component{ }

class Container implements Componet{

private Component[] children;

}

3Which of the following are true for the class java.util.TreeSet?

   AThe elements in the collection are ordered

   BThe collection is guaranteed to be immutable

   CThe elements in the collection are guaranteed to be unique

   DThe elements in the collection are accessed using a unique key

   EThe elements in the collection are guaranteed to by synchronized

4Given the following code fragment:

     1public void create(){

2.   Vector myVect;

3 myVect = new Vector();

4}

   Which of the following statement are true?

A. The statement on line 2 creates an object of class Vector

B. The declaration on line 2 does not allocate memory space for the variable myVect

C. The declaration on line 2 allocates memory space for a reference to a Vector object

D. The statement on line 3 create an object of class Vector

E.  The statement on line 3 allocates memory space for an object of class Vector

5Given the following code:

   class Base{

     static int oak=99;

}

public class Doverdale extends Base{

    public static void main(String argv[]){

       Doverdale d = new Doverdale();

       d.amethod();

    }

    public void amethod(){

       //Here

    }

}

Which of the following if placed after the comment//Here,will compile and modify the value of the variable oak?

A. super.oak=1;

B. oak=33;

C. Base.oak=22;

D. Oak=50.1;

6Which of the following statements are true about a variable created with the static modifier?

   AOnce assigned the value of a static variable can’t be altered

   BA static variable created in a method will keep the same value between calls

   COnly one instance of a static variable will exist for any amount of class instances

   DThe static modifier can only be applied to a primitive value

7Given the following class:

   public class A{

    public static void main(String argv[]){

       boolean b1 = true;

       if((b1==true)||place(true)){

           System.out.println("Hello True");

       }

       if(b1 | place((String)null)){

           System.out.println("Hello Null");

       }

    }

    public static boolean place(boolean location){

       if(location!=true){

           System.out.println("world True");

       }

       System.out.println("World True");

       return true;

    }

    public static boolean place(String str){

       if(str == null | str.length() == 0){

           System.out.println("World Null");

       }

       System.out.println("World String");

       return true;

    }

}

  What will happen when you attempt to compile and run it?

A. Compile fails

B. Output of “Hello True”      

C. Output of  “World Boolean” followed by “Hello True”,”World Null”,”World String” and “Hello Null”

D. Output of “Hello True” followed by “Hello Null”

E. Output of “Hello True”, then an exception is thrown at runtime

F. Output of “Hello True“ followed by “World null”,”World String” and “Hello Null”

8Which statement are true  about the garbage collection mechanisms?

  AThe garbage collection mechanism release memory at predictable times

  BA correct program must not depend upon the timing or order of garbage collection

  CGarbage collection ensures that a program will not run out of memory during execution

  DThe programmer can indicate that a reference through a local variable is no longer going to Java objects

  EThe programmer has a mechanism that explicitly and immediately frees the memory used by Java objects

  FThe garbage collection system never reclaims memory from objects while are still accessible to running user threads

9What will happen when you attempt to compile and run the following code?

   1public class Test{

2.   public static String hello(String[] strs,String s2){

3.      strs[0] = "<" + strs[0] + ">";

4.      s2.toUpperCase();

5.   return s2;

6}

7public static void main(String args[]){

8  String a = new String("t");

9  String[] b = new String[]{"t"};

10 String c = a.intern();

11    if(a.equals(b[0])){

12        System.out.print("1");

13    }

14    if(b[0] == c){

15        System.out.print("2");

16    }

17    if(a == c){

18        System.out.print("3");

19    }

20 a = hello(b,c);

21 System.out.print(a);

22 System.out.print(b[1]);

23 System.out.print(c);

24 }

25}

AThe program will run and output “12tt”

BThe program will run and output “123Tt”

CThe program will run and output “12Tt”

DCompilation fails because of an error in line 4

ECompilation fails because of an error in line 9

FThe program will run and output “12ttt”

三、填空题(每空3分,共51分)

  1、如下的代码实现了先进先出队列,请按注释要求填空。(每空各3分,共9分)

class FifoQueue{

    private transient Node head;

    private transient Node last;

   

    Node enq(Object x){ //入队

       Node p = new Node(x);

       if(last == null)

           last = head = p;

       else

              [1]  ;    //请在此补充一条语句

       return p;

    }

   

    Node deq(){ //出队

       Node p = head;

       if( [2] ){  //请在此补充一条表达式

           if((head = p.next) == null)

              [3];   //请在此补充一条语句

           p.next = null;

       }

       return p;

    }

static final class Node{

    /** The item being transferred */

    Object item;

    /** Next node in wait queue */

    Node next;

    /** Creates a node with initial item */

    Node(Object x) { item = x; }

}  

}

2.如下的代码采用合并排序对数组进行排序,请按注释要求填空。(每空各3分,共21分)

import java.lang.reflect.Array;

import java.util.Random;

 

public class Test{

   

    //将数组src中的Integer类型的元素按增序排列

    public static void main(String[] argv){

       Object[] src = new Object[100];

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

           src[i] = new Random().nextInt();

       }

       Object[] aux = cloneArray(src);

       mergeSort(aut,src,0,src.length);

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

           System.out.print(src[i] + ",");

       }

    }

   

    /**

     * Src is the source array that starts at index 0.数组元素实现java.lang.Comparable接口

     * Dest is the destination array that starts at index 0.数组元素实现java.lang.Comparable接口

     * low is the index in dest to start sorting

     * high is the end index in dest to end sorting

     */

    private static void mergeSort(Object[] src,Object[] dest,int low,int high){

       int length = high - low;

       //Insertion sort on smallest arrays. 当待排序元素的个数少于5时,采用插入排序

        if(length < 5){

           for(int i = low;i < high; i++){

              if(((Comparable)dest[j-1]).compareTo(dest[j]) > 0){

                  Object t = dest[j];

                         [4];        //请在此补充一条语句

                         [5];        //请在此补充一条语句

              }

           }

           return;

       }

       //Recursively sort halves of dest into src

       int mid = (low + high) >> 1;

       mergeSort(dest,src,low,mid);

                 [6];              //请在此补充一条语句

                

       //If list is already sorted,just copy from src to dest.This is an

       //optimization that results in faster sorts for nearly ordered lists.

       if(    [7]    ){  //请在此补充一条表达式

           System.arraycopy(src, low, dest, low, length);

           return;

       }

      

       //Merge sorted halves (now in src) into dest

       int p = low;

            [8];   //请在此补充一条语句

       for(int i = low;i < high; i++){

           if(  [9]       //请在此补充一条表达式

                 || p < mid && ((Comparable)src[p]).compareTo(src[q]) <=0){

              dest[i] = src[p++];

           } else {

                     [10];     //请在此补充一条语句

           }

       } 

    }

   

    /**

     *Clones an array within the specified bounds. This method assumes that a

     *is an array. 

     */

    private static T[] cloneArray(T[] a){

       int n = a.length;

       T[] result = (T[])Array.newInstance(a.getClass().getComponentType(), n);

       System.arraycopy(a, 0, result, 0, n);

       return result;

    }

}

3.以下为JDK1.5java.util.HashMap(哈希表)的实现,请根据给出的代码片段,完成put方法的填空(每空各3分,共6)

package java.util;

import java.io.*;

import java.security.KeyStore.Entry;

 

public class HashMap

       extends AbstractMap

       implements Map,Cloneable,Serializable

{

    /**

     * The table,resized as necessary.Length must always be a power of two.

     */

    transient Entry[] table;

   

    /**

     *The number of key-value mappings contained in this identity hash map.

     */

    transient int size;

   

    /**

     * The next size value at which to resize (capacity * load factor).

     */

    int threshold;

   

    /**

     * The number of times this HashMap has been structurally modified

     * Structural modifications are those that change te number of mappings in

     * the HashMap or otherwise modify its internal structure(e.g.

     * rehash).This field is used to make iterators on Collection-views of

     * the HashMap fail-fast. (See concurrentModificationException)

     */

    transient volatile int modCount;

   

    //其它代码段...省略

   

    /**

     * Associates the specified value with the specified key in this map.

     * If the map previously contained a mapping for this key,the old

     * value is replaced.

     *

     * @param key key with which the specified value is to be associated.

     * @param value value to be associated with the specified key.

     * @return previous value associated with specified key,or null

     *      if there was no mapping for key.A nullreturn can

     *      alse indicate that the hashMap previously associated

     *      null with the specified key.

     */

   

    public V put(K key,V value){

       if(key == null)

           return putForNullkey(value);

       int hash =hash( [11] ); //请在此补充一条表达式

       int i = indexFor(hash,table.length);

       for(Entry e = talbe[i];e != null;e=e.next){

           Object k;

           if(e.hash == hash && ((k = e.key) == key || [12] )){ //请在此补充一条表达式

              V oldValue = e.value;

              e.value = value;

              e.recordAccess(this);

              return oldValue;

           }

       }

       modCount++;

       addEntry(hash,key,value,i);

       return null;

    }

   

    static int hash(int h){

       h ^= (h >>> 20) ^ (h >>> 12);

       return h ^ (h >>> 7) ^ (h >>> 4);

    }

   

    /**

     * Returns index for hash code h.

     */

    static int indexFor(int h,int length){

       return h & (length-1);

    }

}    

4.请阅读以下代码,并根据代码上下文完成填空。 (每空各3分,共15分)

package examination;

 

import java.util.concurrent.locks.Condition;

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.ReentrantLock;

 

public class ThreadSafeBuffer{

   

    final Lock lock = new ReentrantLock();

   

    final Condition notFull = lock.newCondition();

    final Condition notEmpty = lock.newCondition();

   

    final Object[] data = new Object[1024];

    int putptr,takeptr,count;

   

    public void put(Object x) throws InterruptedException {

       lock.lock();

       try{

             [13]{ //请在此补充一条语句

              [14];  //请在此补充一条语句 

             }

             data[putptr] = x;

             if(++putptr == data.length){

                putptr = 0;

             }

            

             ++count;

            

                [15];  //请在此补充一条语句

       } finally {

           lock.unlock();

       }

    }

   

    public Object take() throws InterruptedException{

       lock.lock();

       try{

             [16]{ //请在此补充一条语句

              [17];  //请在此补充一条语句 

             }

            

             Object x = data[takeptr];

             if(++takeptr == data.length){

                takeptr = 0;

             }

            

             --count;

              notFull.signal();

              return x;

             

       } finally {

           lock.unlock();

       }

    }

}

你可能感兴趣的:(中间件,compilation,class,string,output,object)