栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > Java面试题

Java基础面试题-面试总结版

Java面试题 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础面试题-面试总结版

1.使用Java输出10个不重复的数字,数字范围在1-100之间。

解答:刚看到这道题时我反复思考的是“不重复”这3个字,我想到了Set集合保存的是不重复的数据,然后写了些。面试官看了之后说我写的有问题,让我再写写看。于是我又想了想,重写了一份,面试官看了之后勉强满意。回来我把我写的code在Eclipse运行了一下,发现代码赘余,经过修改后,代码如下,有更简单的或者别的思路的欢迎告知。

[java] view plaincopyprint?

package com.ldfsoft.test;import java.util.HashSet;import java.util.Set;public class RandomTest {public static void main(String[] args) {numTest();}static void numTest(){Set set= new HashSet();for(int i=0;i<10;i++){while(true){int num=(int) (Math.random()*100);if(!set.contains(num)){System.out.println(num);set.add(num);break;}}}}}

2.Java中HashMap,TreeMap,linkedHashMap的区别。

解答:HashMap与TreeMap我倒是知道,linkedHashMap我还是第一次听说,只能空着。本人顺便提一下HashTable,这个也面试的较多。查询网上资料,区别如下所示:
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMapHashtable linkedHashMap 和TreeMap
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。
Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null,允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。
Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。
linkedHashMap保存了记录的插入顺序,在用Iterator遍历linkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比linkedHashMap慢,因为linkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
linkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用linkedHashMap可以实现,它还可以按读取顺序来排列,像连接池中可以应用。以下代码实例可以看出HashMap,linkedHashMap,TreeMap的区别:

[java] view plaincopyprint?

package com.ldfsoft.test;import java.util.HashMap;import java.util.Iterator;import java.util.linkedHashMap;import java.util.Map;import java.util.TreeMap;public class Ceshi{@SuppressWarnings(“unchecked”)public static void main(String[] args) {//HashMapSystem.out.println(“——HashMap无序输出——“);HashMap hsMap=new HashMap();hsMap.put(“3″,”Value3”);hsMap.put(“1″,”Value1”);hsMap.put(“2″,”Value2”);hsMap.put(“b”,”ValueB”);hsMap.put(“a”,”ValueA”);Iterator it = hsMap.entrySet().iterator();while (it.hasNext()) {Map.Entry e = (Map.Entry) it.next();System.out.println(“Key: ” +e.getKey() + “–Value: “+ e.getValue());}//TreeMapSystem.out.println(“——TreeMap按Key排序输出——“);TreeMap teMap=new TreeMap();teMap.put(“3″,”Value3”);teMap.put(“1″,”Value1”);teMap.put(“2″,”Value2”);teMap.put(“b”,”ValueB”);teMap.put(“a”,”ValueA”);Iterator tit = teMap.entrySet().iterator();while (tit.hasNext()) {Map.Entry e = (Map.Entry) tit.next();System.out.println(“Key: ” +e.getKey() + “–Value: “+ e.getValue());}//linkedHashMapSystem.out.println(“–linkedHashMap根据输入的顺序输出–“);linkedHashMap lhsMap=new linkedHashMap();lhsMap.put(“3″,”Value3”);lhsMap.put(“1″,”Value1”);lhsMap.put(“2″,”Value2”);lhsMap.put(“b”,”ValueB”);lhsMap.put(“a”,”ValueA”);Iterator lit =lhsMap.entrySet().iterator();while (lit.hasNext()) {Map.Entry e = (Map.Entry) lit.next();System.out.println(“Key: ” +e.getKey() + “–Value: “+ e.getValue());}}}

3. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?

解答xml两种形式 dtd schema,他们的本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX:Streaming API for XML (StAX)

4. 写一个Singleton出来。

解答: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

[java] view plaincopyprint?

public class Singleton {private Singleton(){}   //在自己内部定义自己一个实例,是不是很奇怪?   //注意这是private 只供内部调用   private static Singleton instance = newSingleton();   //这里提供了一个供外部访问本class的静态方法,可以直接访问   public static Singleton getInstance(){     return instance;   }}

第二种形式:

[java] view plaincopyprint?

public class Singleton {  private static Singleton instance = null;  public static synchronized Singleton getInstance() {  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次  //使用时生成实例,提高了效率!  if (instance==null)    instance=new Singleton();return instance;   }}

其他形式: 定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/264185.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号