职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 705|回复: 9

知名公司java面试题之二

[复制链接]
jinchang 发表于 2011-8-18 10:37 | 显示全部楼层 |阅读模式
  1. 1.(集合框架)下面都属于线程安全的类是(BD )。
  2. 线程同步就是线程安全的
  3. A.ArrayList//不同步
  4. B.Vector//同步,其余功能与ArrayList一样
  5. C.HashMap//不同步
  6. D.HashtableA.//同步,其余功能和Hashtable一样
  7. 2.(集合框架)ArrayList的初始化内容如下:
  8. ArrayList list = new ArrayList();
  9. list.add("java");
  10. list.add("aaa");
  11. list.add("java");
  12. list.add("java");
  13. list.add("bbb");
  14. 下面可以删除list中所有的“java”的代码是:(A)
  15. A.for (int i = list.size() - 1; i >= 0; i--) {//规定是逆序删除,每删除一个,会重新排序
  16. if ("java".equals(list.get(i))) {
  17. list.remove(i);
  18. }
  19. }
  20. B.for (int i = 0; i < list.size(); i++) {
  21. if ("java".equals(list.get(i))) {
  22. list.remove(i);
  23. }
  24. }
  25. C.list.remove("java"); //只能删除第一个
  26. D.list.removeAll("java");//括号中的参数是集合的类型
  27. 3.下面的代码用于输出字符数组ch中每个字符出现的次数,应该填入的代码是(D)
  28. public static void main(String[] args) {
  29. char[] ch = { 'a', 'c', 'a', 'b', 'c', 'b' };
  30. HashMap map = new HashMap();
  31. for (int i = 0; i < ch.length; i++) {
  32. < 填入代码 >
  33. }
  34. System.out.println(map);
  35. }
  36. //map中没有contains方法,这个方法只有List和Set中有
  37. A.if (map.contains(ch[i])) {
  38. map.put(ch[i], map.get(ch[i]) + 1);
  39. } else {
  40. map.put(ch[i], 1);
  41. }
  42. B.if (map.contains(ch[i])) {
  43. map.put(ch[i], (Integer) map.get(ch[i]) + 1);
  44. } else {
  45. map.put(ch[i], 1);
  46. }
  47. C.if (map.containsKey(ch[i])) {
  48. map.put(ch[i], (int) map.get(ch[i]) + 1);
  49. } else {
  50. map.put(ch[i], 1);
  51. }
  52. D.if (map.containsKey(ch[i])) {
  53. map.put(ch[i], (Integer) map.get(ch[i]) + 1);
  54. } else {
  55. map.put(ch[i], 1);
  56. }
  57. 4.(集合框架) 题示代码的功能为:对于一个存放Integer对象的ArrayList,内容为:{1,2,3 },对其进行循环遍历:
  58. List list=new ArrayList();
  59. list.add(1);
  60. list.add(2);
  61. list.add(3);
  62. for(int i=0;i<《插入代码1》;i++){
  63. Integer obj=(Integer)《插入代码2》;
  64. System.out.println(obj);
  65. }
  66. 那么《插入代码1》和《插入代码2》处的代码分别为(C)
  67. A. list.getObject(i) list.length()
  68. B. list.length() list.getObject(i) //集合没有length,只要数组才有,集合是size()
  69. C. list.size() list.get(i)
  70. D. list.get(i) list.size()
  71. 5.题示代码的功能为:对于一个存放Person对象的ArrayList进行循环遍历,并取到每个Person对象的idCard和userName。
  72. public class Person{
  73. private Long idCard;
  74. pirvate String userName;
  75. //一下是getter和setter方法
  76. ……
  77. }
  78. List<Person> list=new ArrayList<Person>();
  79. Person p1=new Person();
  80. p1.setIdCard(new Long(1001));
  81. p1.setUserName(“terry”);
  82. Person p2=new Person();
  83. p2.setIdCard(new Long(1002));
  84. p2.setUserName(“tom”);
  85. list.add(p1);
  86. list.add(p2);
  87. for(《插入代码》){
  88. System.out.println(person.getIdCard()+”:”+person.getUserName());
  89. }
  90. 那么《插入代码》处的代码为(D)
  91. A. List list:person
  92. B. List list:Person //遍历list中的Person
  93. C. Person person:List
  94. D. Person person:list//在list中遍历person
  95. 6.已知类Foo的定义如下:
  96. public class Foo {
  97. int value;
  98. Foo(int value) {
  99. this.value = value;
  100. }
  101. public boolean equals(Object obj) {
  102. if (obj instanceof Foo) {
  103. Foo foo = (Foo) obj;
  104. return value == foo.value;
  105. } else {
  106. return false;
  107. }
  108. }
  109. 运行下面程序段:
  110. ArrayList list = new ArrayList();
  111. HashSet set = new HashSet();
  112. list.add(new Foo(1));
  113. set.add(new Foo(1));
  114. System.out.println(《插入代码》);
  115. 如果控制台输出的结果是true,false,那么《插入代码》处应填入的代码是(C)
  116. A. list.contains(new Foo(1)) + ","+ set.contains(new Foo(1))
  117. B. set.contains(new Foo(1)) + ","+ list.contains(new Foo(1))
  118. C. new Foo(1).equals (new Foo(1)) + ","+ list.contains(new Foo(1))
  119. D. new Foo(1).equals (new Foo(1)) + ","+ set.contains(new Foo(1))//没有重写hashCode()方法
  120. 7.(集合框架)题目代码的功能是:采用Iterator进行循环遍历到集合中的每一个元素,并将其移除,《插入代码》处应填入的代码是(A)
  121. ArrayList list = new ArrayList();
  122. list.add("java");
  123. list.add("php");
  124. list.add(".net");
  125. 《插入代码》
  126. A. Iterator it=list.iterator();
  127. while(it.hasNext()){
  128. it.next();
  129. it.remove();
  130. }
  131. B. Iterator it=list.iterator();
  132. while(it.hasNext()){
  133. it.remove();
  134. }
  135. C. Iterator it=list.iterator();
  136. while(it. hasNext()){
  137. Object obj=it.next();
  138. list.remove(obj);
  139. }
  140. D. Iterator it=list.iterator();
  141. while(it.hasNext()){
  142. list.remove();
  143. }
  144. 8.题示代码的功能为:循环遍历输出Map当中的每一个元素
  145. Map<String,Integer> map=new HashMap<String,Integer>();
  146. map.put(“jessica”,100);
  147. map.put(“tom”,200);
  148. map.put(“den”,300);
  149. Set《插入代码1》 set =《插入代码2》;(D)
  150. for (《插入代码3》 per : set) {
  151. System.out.println(per.getKey() + ":" + per.getValue());
  152. }
  153. A.
  154. <Entry>
  155. map.keySet()
  156. Entry
  157. B.
  158. <Entry>
  159. map.entrySet()
  160. Entry
  161. C.
  162. <Map.Entry<String, Integer>>
  163. map.keySet()
  164. Map.Entry<String, Integer>
  165. D.
  166. <Map.Entry<String, Integer>>
  167. map.entrySet()
  168. Map.Entry<String, Integer>
  169. 9.请看一下代码:(A)
  170. Map<String,Double> map=new HashMap<String,Double>();
  171. map.put(“tom”,123.6);
  172. map.put(“jim”,234.5);
  173. map.put(“terry”,45.3);
  174. 《插入代码》
  175. 《插入代码》处要实现的功能是把key为“jim”的value值在原有数字的基础上添加100
  176. A. map.put(“jim”,map.get(“jim”)+100);
  177. B. map.set(“jim”,map.get(“jim”)+100);
  178. C. map.put(“jim”,234.5);
  179. D. map.set(“jim”,234.5);
  180. 10.下列代码的运行结果是(“_”表示空白): (B)
  181. public class Base{
  182. private void test() {
  183. String aStr = "_One_";
  184. String bStr = aStr;//改变时候创建了新的对象,所以以前的没变化
  185. bStr =aStr.trim();
  186. System.out.println("[" + aStr + "," + bStr + "]");
  187. }
  188. static public void main(String[] a) {
  189. new Base().test();
  190. }
  191. }
  192. A. [One,_One_]
  193. B. [_One_,One]
  194. C. [One,One]
  195. D. [_One_,_One_]
复制代码
愚人 发表于 2011-8-18 10:37 | 显示全部楼层
有答案的面试题也值得一看,考的大多是j2ee里经常用到的list和map的细节,有的还做错了。。。

fl 发表于 2011-8-18 10:37 | 显示全部楼层
基础很重要啊

话说我当年 发表于 2011-8-18 10:38 | 显示全部楼层
看的蛋疼啊。

无处不在 发表于 2011-8-18 10:38 | 显示全部楼层
还不错的面试题

feiguo 发表于 2011-8-18 10:38 | 显示全部楼层
集合确实成大问题。。。通常都是ArrayList和HashMap直接拿来就用

走就走吧 发表于 2011-8-18 10:38 | 显示全部楼层
招新手。。。

hxy 发表于 2011-8-18 10:38 | 显示全部楼层
怎么感觉第六题答案应该是D

走就走吧 发表于 2011-8-18 10:38 | 显示全部楼层
可以解释下第六题吗?

fossil 发表于 2011-8-18 10:39 | 显示全部楼层
第六题答案应该是A和D,Set集合在调用add(X),contains(X)方法时都会调用hashCode()方法比较hashCode值,如果hashCode值相同才会调用equals()方法否则不会调用,如果hashCode值相等,equals()返回true,才表示X对象已经存在。

您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 21:05 , Processed in 0.142340 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表