黑马程序员技术交流社区

标题: 不看OCJP考题你永远不知道自己的JAVA基础有多差(二) [打印本页]

作者: 杨_扬    时间: 2012-7-2 04:17
标题: 不看OCJP考题你永远不知道自己的JAVA基础有多差(二)
欢迎大家收藏我的博客方便查找往期内容及跟踪学习
http://blog.csdn.net/crazybass81/article/category/1149502
上期答案:
问题1. 给出如下函数:
11. public static int sum(List list) {
12.                 int sum = 0;
13.                 for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
14.                         int i = ((Integer)iter.next()).intValue();
15.                         sum += i;
16.                 }
17.                 return sum;
18. }
请在下列选项中选出三个改动,使得函数可以使用泛型且不会提示泛型未检测警告?
(Choose three.)
A. Remove line 14.
B. Replace line 14 with "int i = iter.next();".
C. Replace line 13 with "for (int i : intList) {".
D. Replace line 13 with "for (Iterator iter : intList) {".
E. Replace the method declaration with "sum(List<int> intList)".
F. Replace the method declaration with "sum(List<Integer> intList)".
答案 A C F
知识点:
1. 在JAVA的泛型中不能使用基本数据类型
2. 使用迭代器遍历容器
遍历容器的三种方式
List<String> userlist = new ArrayList<String>();  
userlist.add(“aa");  
userlist.add(“bb");  
userlist.add(“cc");  
//使用普通for循环
for(int i=0; i<userlist.size(); i++){  }  
//使用Iterator迭代器
Iterator it = userlist.iterator();  
while(it.hasNext()){  }
for (;it.hasNext();it.next() ){ }
//使用增强for循环   
for(String s : userlist){  }  

问题2:在算法中要求使用java.util.List数据结构,该算法要求可以方便的添加“add”一个元素,但是不要求支持随机快速访问元素,请问你会选择下列的那个类?
A.        java.util.Queue
B.        java.util.ArrayList
C.        java.util.LinearList
D.        java.util.LinkedList
答案:D
知识点:
接口List与Queue的异同
ArrayList与LinkedList的异同
Queue接口与List、Set同一级别,都是继承了Collection接口。
java.util.Queue接口,用以支持队列的常见操作。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优 点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用element()或者peek()方法
ArrayList与LinkedList都是List接口的实现类
ArrayList实现了List接口,它是以数组的方式来实现的,数组的特性是可以使用索引的方式来快速定位对象的位置,因此对于快速的随机取得对象的需求,使用ArrayList实现执行效率上会比较好。
LinkedList是采用链表的方式来实现List接口的,采用链表实现的。
LinearList 双向链表,JAVA中没有这个类

问题3:
11. // 此处插入代码
12.         private N min max;
13.         public N getMin() { return min; }
14.         public N getMax() { return max; }
15.         public void add(N added) {
16.                 if (min == null )
17.                         min = added;
18.                 if (max == null )
19.                         max = added;
20.         }
21. }
下列选项中,哪两个插入第11行位置后可以是的代码完整且正确:
A. public class MinMax<?> {
B. public class MinMax<? extends Number> {
C. public class MinMax<N extends Object> {
D. public class MinMax<N extends Number> {
E. public class MinMax<? extends Object> {
F. public class MinMax<N extends Integer> {
答案: D F
知识点:
在泛型中通配符“?”的用法
泛型的上下限概念

问题4:
12. import java.util.*;
13. public class Explorer2 {
14.         public static void main(String[] args) {
15.                 TreeSet<Integer> s = new TreeSet<Integer>();
16.                 TreeSet<Integer> subs = new TreeSet<Integer>();
17.                 for(int i = 606; i < 613; i++)
18.                 if(i%2 == 0) s.add(i);
19.                 subs = (TreeSet)s.subSet(608, true, 611, true);
20.                 s.add(629);
21.                 System.out.println(s + " " + subs);
22.         }
23. }
以上代码的运行结果是
A. 编译失败.
B. 运行时有异常抛出.
C. [608 610 612 629] [608 610]
D. [608 610 612 629] [608 610 629]
E. [606 608 610 612 629] [608 610]
F. [606 608 610 612 629] [608 610 629]
Answer: E
知识点:
请参考JAVA帮助文档中关于Set接口部分的说明
public NavigableSet<E> subSet(E fromElement,
                        boolean fromInclusive,
                        E toElement,
                        boolean toInclusive)
fromElement - 返回 set 的低端点
fromInclusive - 如果低端点要包含在返回的视图中,则为 true
toElement - 返回 set 的高端点
toInclusive - 如果高端点要包含在返回的视图中,则为 true

第五题
1. public class Score implements Comparable<Score> {
2.         private int wins losses;
3.         public Score(int w int l) { wins = w; losses = l; }
4.         public int getWins() { return wins; }
5.         public intgetLosses() { return losses; }
6.         public String toString() {
7.                 return "<" + wins + "" + losses + ">";
8.         }
9.         // insert code here
10. }
下列那个方法可以使得该类完整?
A. public int compareTo(Object o){/*more code here*/}
B. public int compareTo(Score other){/*more code here*/}
C. public int compare(Score s1Score s2){/*more code here*/}
D. public int compare(Object o1Object o2){/*more code here*/}
知识点:
Comparable接口的实现

--------------------------------------------------分割线------------------------------------------------
本期新题
第六题
11. public class Person {
12.         private String name;
13.         public Person(String name) {
14.                 this.name = name;
15.         }
16.         public int hashCode() {
17.                 return 420;
18.         }
19. }
下列哪个叙述是正确的:
A.        在HashMap查找某个Person键值所需要的时间依赖于Map的大小。
B.        执行删除一个Person键的操作,将删除HashMap中所有类型为Person的键
C.        在HashSet中插入第二个Person对象,将导致第一个Person对象被移除。
D.        在HashSet中查找一个Person对象是否存在的时间是一个常数,不依赖于HashSet的大小

第七题
5. import java.util.*;
6. public class SortOf {
7.        public static void main(String[] args) {
8.               ArrayList<Integer> a = new ArrayList<Integer>();
9.               a.add(1); a.add(5); a.add(3);
11.            Collections.sort(a);
12.            a.add(2);
13.            Collections.reverse(a);
14.            System.out.println(a);
15.       }
16. }
该程序片段的运行结果是?
A. [1 2 3 5]
B. [2 1 3 5]
C. [2 5 3 1]
D. [5 3 2 1]
E. [1 3 5 2]
F. 编译失败
G. 运行时有异常抛出

第八题
Given
11. public interface Status {
12.        /* 此处插入代码*/ int MY_VALUE = 10;
13. }
下列哪三个选项可以用于第12行
A. final
B. static
C. native
D. public
E. private
F. abstract
G. protected

第九题
5. class Atom {
6.        Atom() { System.out.print("atom "); }
7. }
8. class Rock extends Atom {
9.        Rock(String type) { System.out.print(type); }
10. }
11. public class Mountain extends Rock {
12.        Mountain() {
13.               super("granite ");
14.               new Rock("granite ");
15.        }
16.        public static void main(String[] a){ newMountain(); }
17. }
上述代码片段的运行结果是?
A. 编译失败.
B. atom granite
C. granite granite
D. atom granite granite
E. An exception is thrown at runtime.
F. atom granite atom granite

第十题
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.                // 此处插入代码
17.        }
18. }
在16行处插入代码获得一个Class Point的实例?
A. Point p = Line.getPoint();
B. Line.Point p = Line.getPoint();
C. Point p = (new Line()).getPoint();
D. Line.Point p = (new Line()).getPoint();

作者: 韦念欣    时间: 2012-7-2 08:25
不错不错,值得学习!
作者: 周素强    时间: 2012-7-2 16:05
期待你的下一期

作者: 许庭洲    时间: 2012-7-10 15:45
值得学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2