05 November 2013

IMG-THUMBNAIL

算是国企里面非常厉害的了,而且效益也不错。但是今年没怎么招人。

###一、单项选择题

#####1. 为了区分重载多态中同名不同方法,要求(A)

  • A. 形式参数个数或者类型不同
  • B. 返回值类型不同
  • C. 调用时用类名或对象名做前缀
  • D. 形式参数名称不同

#####2. 给定Java代码如下,运行时, 会产生(B) String s = null; s.concat(“abc”);

  • A. ArithmeticException
  • B. NullPointerException
  • C. IOExcepiton
  • D. EOFException

#####3. 给定如下Java代码,编译时会在(C)出现错误。 public class Sugon { static int arr[] = new int[10]; public static void main(String args[]) { System.out.println(arr[1]); } }

  • A. 编译时将产生错误
  • B. 编译时正确,运行时将产生错误
  • C. 输出零
  • D. 输出空

#####4. 表(TEACHER)包含以下列 ID NUMBER(7) PK SALARY NUMBER(7, 2) SUBJECT_ID NUMBER(7)

分别执行以下两个SQL语句:(B)

SELECT ROUND(SUM(salary), -2) FROM teacher;
SELECT subject_id, ROUND(SUM(salary), -2) FROM teacher GROUP BY id 
  • A. 语句1将返回每个老师一个结果
  • B. 语句2将返回多个结果
  • C. 结果相同,显示不同
  • D. 将有一个句子产生错误

#####5. 下面哪个是正确的类声明?假设每一段文本都作为一个名称为GPUTest.java的文件的全部内容?(A)

  • A.

      public class GPUTest {
          public int x = 0;
          public GPUTest(int x) {
              this.x = x;
          }
      } 
    
  • B.

      public class gpuTest {
          public int x = 0;
          public gpuTest(int x) {
              this.x = x;
          }
      }
    
  • C.

      public class GPUTest extends MyBaseClass, MyOtherBaseClass {
          public int x = 0;
          public GPUTest(int xval) {
              x = xval;
          }
      }
    
  • D.

      protected class GPUTest {
          private int x = 0;
          private GPUTest (int xval) {
              x = xval;
          }
      }
    

首先说明了文件是GPUTest.java,那么,这个名称就要和该文件中public声明的类文件名相同,包括大小写,排除B。Java只有单继承,C错。class只能用public和空修饰,D错。

#####6. 如果只想得到1000个元素组成的序列中第5个元素之前的部分排列的序列(D)方法最快。

  • A. 冒泡排序
  • B. 快速排序
  • C. Shell排序
  • D. 堆排序

这个题要求查询序列中最小的5个元素。希尔排序和快速排序,都是在整个序列排序结束之后,才能够实现。冒泡和堆排序能够优先获得最小的5个元素,而堆排序被叫做是高级的冒泡排序,交换次数少于冒泡排序。

#####7.在Java中下列关于自动类型转换的说法正确的是(A)

  • A. 基本类型和String类型相加结果一定是字符串类型
  • B. char类型和int类型相加结果一定是字符
  • C. double类型可以自动转换为int
  • D. char + int + double + “”的结果一定是double

#####8. 以下不属于Thread类提供的线程控制方法是(C)

  • A. sleep()
  • B. interrupted
  • C. init()
  • D. yield()

#####9. 执行下面PL/SQL代码块,被插入到表EXAMPLE中的行数为(B) BEGIN FOR i IN 1..6 LOOP IF i=2 OR i=3 THEN null; ELSE INSERT INTO example(one) VALUES(i); END IF; ROLLBACK; END LOOP; COMMIT; END;

  • A. 0
  • B. 1
  • C. 2
  • D. 3

###二、填空题

#####1. 类变量在类中声明,而不是在类的某个方法中声明,它的作用域是(整个当前类)。

#####2. 一个完整的URL地址由(协议类型)、(主机地址)、端口和文件四部分组成。

#####3. Java中线程4个状态,初始状态、运行状态、阻塞状态、阻塞状态。

#####4. 如下第4行执行后foo的值是(basketball)。 String foo = “base”; foo.substring(0, 3); foo.concat(“ket”); foo += “ball”;

#####5. Throwable类有两个字类:(Error)类和(Exception)类。

#####6. 用Thread t new Thread(r)创建一个新的线程的时候,表达式r instanceof Thread的值是(false)。

#####7. 下面选项中有2个可以放在程序中间没有任何问题,请选出 来(CE)

  • A. private synchronized Object o;
  • B. void go() {synchronized() {}}
  • C. public synchronized void go() {}
  • D. private synchronized(this) void go() {}
  • E. void go() {synchronized(Object.class){}}

synchronized 不能用来修饰成员变量,A错。如果用来修饰代码块,并且要指出修饰的对象时,不能为空,B错。synchronized修饰函数时不需要(this)。C正确,用来修饰函数,并且同步的是this对象。E正确,class literals synchronize,同步类的所有实例。

###三、简答题

#####1. sleep()和wait()的区别和联系? sleep()不会将线程控制权交出去,线程会暂停指定时间。wait()会交出去,然后处于就绪状态。

#####2. 你认为在表上建立索引可以提高数据库系统的效率吗?为什么? 不一定。建立太多的索引将会影响更新和插入的速度,因为插入和更新之后还需要更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where子句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。

#####3. 简述synchronized和java.util.concurrent.locks.Lock的异同?

Lock有比Synchronized更精确的线程域城予以和更好的性能。Synchronized会自动释放锁,但是Lock一定要求程序员手工释放,并且必须在finally从句中释放。

###四、代码题

#####1. 有一对猫咪,一公一母,从出生后第三年起每年都生一对小猫(假设一公一母),孩子长到第三年后每个月又生一对猫,假如猫都不死,问每年的猫总对数为多少?请使用Java语言编写一个获取每年猫对数的程序方法。 int func(int year) { if (year > 0 && year <= 2) { return 2; } return func(year - 1) + func(year - 2); }

原文链接:中科曙光2014校园招聘笔试,转载请注明来源!

EOF