关闭

java笔试题(一)

标签: java
301人阅读 评论(0) 收藏 举报
分类:

1.提供java存取数据库能力的包是(A)
A java.sql B java.db C java.lang D java.util

[解析] java.lang 提供利用 Java 编程语言进行程序设计的基础类
java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的API。
sql ->结构化查询语言(Structured Query Language)简称SQL
java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
B中 没有java.db包

2.关于异常处理机制的叙述正确的是(C)

A catch部分捕捉到异常情况时,才会执行finally部分
B 当try区段的程序发生异常时,才会执行finally部分
C 当try区段不论程序是否发生错误及捕捉到异常情况,都会执行finally部分
D 以上都是

[解析] try(….){
}catch(….){
}finally(…){
}
满足try的条件的执行try后面花括号的语句,不满足的被catch中语句捕获到的执行catch花括号的语句,没有被catch捕获到或者catch执行完毕后和try执行完毕后都要执行finally中的语句。
在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定会执行。
由于程序执行return就意味着结束了对当前函数的调用并跳出这个函数体,因此任何语句执行都要放在return前执行(除非碰到exit函数),因此finally块里面的函数也是在return前执行的。
如果try-finally或者catch-finally中都有return语句,那么finally中的return语句会覆盖别处的,最终返回到调用者那里的是finally中的return值。

3.在类设计中,类的成员变量要求仅仅能够被同一package下的类访问,请问应该使用下列哪个修饰词(D)
A protected B public C private D 不需要任何修饰词
[解析] 只要记住protected一个特点是只要子类都能访问,不管在不在一个包。

4.有如下一段程序:

public class Test{
    private static int i = 1;
    public int getNext(){
         return i++;
    }
    public static void main(String [] args){
        Test test = newTest();
        Test testObject=newTest();
        test.getNext();
        testObject.getNext();
        System.out.println(testObject.getNext()); 
    }
}

请问最后打印出来的是什么?(B)
A 2 B 3 C 4 D 5
[解析]
return i++,先返回i,然后i+1;
第一次调用getNext()方法时,返回的是1,但此时i=2;
第二次调用 getNext()方法时,返回的是2,但此时i=3;
第三次调用 getNext()方法时,返回的是3,但此时i=4;

5.有这样一段程序:

public class Test{
    public static void main(String [] args){
        List list=new ArrayList();
        list.add("a");
        list.add("b");
        list.add("a");
        Set set=new HashSet();
        set.add("a");
        set.add("b");
        set.add("a");
        System.out.println(list.size()+","+set.size()); 
    }
}

请问运行主要的程序会打印出的是什么(C)
A 2,2 B 2,3 C 3,2 D 3,3

[解析] HashSet不能添加重复的元素,当调用add(Object)方法时候,首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;
如果已存在则调用Object对象的equals方法判断是否返回true,如果为true则说明元素已经存在,如为false则插入元素

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

[解析] 垃圾回收过程中的对象销毁–Finalization
就在移除一个对象并回收它的内存空间之前,Java垃圾回收器将会调用各个实例的finalize()方法,这样实例对象就有机会可以释放掉它占用的资源。尽管finalize()方法是保证在回收内存空间之前执行的,但是对具体的执行时间和执行顺序是没有任何保证的。多个实例之间的 finalize()执行顺序是不能提前预知的,甚至有可能它们是并行执行的。程序不应该预先假设实例执行finalize()的方法,也不应该使用 finalize()方法来回收资源。在finalize过程中抛出的任何异常都默认被忽略掉了,同时对象的销毁过程被取消。
JVM规范并没有讨论关于弱引用的垃圾回收,这是明确声明的。具体的细节留给实现者决定。垃圾回收是由守护进程执行的。

7.有这么一段程序:

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)
A true,true B true,false C false,true D false,false

[解析] 基本数据类型使用 ==和!=
==和!=比较的是对象的引用
equals()默认行为是比较引用,任意类都继承Object,默认的equals()比较的是引用,所以test.equals(testB)返回值为false
test.name.equals(testB.name) public String name=”abc”; 所以实际上是String比较,返回值是true

8.(7<<1)&15运算后的结果是( B )
A 15 B 14 C 8 D 7

[解析] << 和 >> 补位都是0
0111 << 1110
1110&1111=1110 ->14

9.如果有n个节点用二叉树来存储,那么二叉树的最小深度为( A )
A Log2(n+1) B Log2(n) C Log2(n-1) D n/2
[解析] n节点的二叉树,既然深度最小,那么就应该是完全二叉树了;
完全二叉树的高度计算节点和高度的关系是2^n -1;
反转过来通过节点求高度,那么就是log2(n+1)了。

10.下面程序的时间复杂度是

for(int i=1;i<n;i*=3)             
   for(int j=i/3;j<i;j++){             
        Foo();                   
}

已知n是一个正数,Foo()时间复杂度为0(1),上述代码的时间复杂度是(B)
A O(logn) B O(n) C O(n*log(n)) D O(n^2)

[解析] 外层循环,i的变化大概是 1 ,3 ,9,27 ,…… n(假设n=3^k,这个不影响复杂度的分析)内部循环,j从i/3到i,每次+1,大概需要比较的次数就是 2i/3,那就是 2/3( 1, 3, 9 ,27 ,……,n)
sum(内部循环次数)=(3^(k+1)-1)/3 =(3n-1)/3 所以是O(n)

11.下列关于数据库执行SQL语句的操作步骤描述正确的是(D)
A 解析并编译SQL语句
B 确定并优化数据获取路径
C 执行SQL,获取并返回数据
D 以上都正确

[解析] sql语句本质上就好比一个java文件,都是要经历先解析编译后,处理优化,最后执行返回结果的过程

12.关于PreparedStatement与Statement描述错误的是(D)
A 一般而言,PreparedStatement比Statement执行效率更高
B PreparedStatement会预编译SQL语句
C Statement每次都会解析/编译SQL,确立并优化数据获取路径
D Statement执行扫描的结果集比PreparedStatement大

[解析] 因为PreparedStatement有预编译的过程,所以第一次扫描的集合 PreparedStatement会大于等于Statement

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    最新评论
  • struts入门案例

    qq_28732915: 不错的技术,大力支持,现在我们每天接触的app实在是太多了,真的很有必要对它们进行一个体检,如果可以...