阿里巴巴java工程师面试题-2016年

问答题

一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?

二、Vector,ArrayList, LinkedList的区别是什么?

三、HashTable, HashMapTreeMap区别?

四、TomcatApacheJBoss的区别?

五、说出平均速度最快的排序算法是,并实现其中一种。

参考答案

一、答:1String是字符串常量,StringBufferStringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。

2、String不可变是因为在JDKString类被声明为一个final类。

3、StringBuffer是线程安全的,而StringBuilder是非线程安全的。

二、答:1VectorArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。

2、List中的元素有序、允许有重复的元素,Set中的元素无序、不允许有重复元素。

3、Vector线程同步,ArrayListLinkedList线程不同步。

4、LinkedList适合指定位置插入、删除操作,不适合查找;ArrayListVector适合查找,不适合指定位置的插入、删除操作。

5、ArrayList在元素填满容器时会自动扩充容器大小的50%,而Vector则是100%,因此ArrayList更节省空间。

三、答:1HashTable线程同步,HashMap非线程同步。

2、HashTable不允许<,>有空值,HashMap允许<,>有空值。

3、HashTable使用EnumerationHashMap使用Iterator

4、HashTablehash数组的默认大小是11,增加方式的old*2+1HashMaphash数组的默认大小是16,增长方式一定是2的指数倍。

5、TreeMap能够把它保存的记录根据键排序,默认是按升序排序。

四、答:1ApacheHttp服务器,Tomcatweb服务器,JBoss是应用服务器。

2、Apache解析静态的html文件;Tomcat可解析jsp动态页面、也可充当servlet容器。

五、堆排序,归并排序,快速排序。

/**
     * 查找出中轴(默认是最低位low)的在numbers数组排序后所在位置
     * 
     * @param numbers 带查找数组
     * @param low   开始位置
     * @param high  结束位置
     * @return  中轴所在位置
     */
    public static int getMiddle(int[] numbers, int low,int high)
    {
        int temp = numbers[low]; //数组的第一个作为中轴
        while(low < high)
        {
        while(low < high && numbers[high] > temp)
        {
            high--;
        }
        numbers[low] = numbers[high];//比中轴小的记录移到低端
        while(low < high && numbers[low] < temp)
        {
            low++;
        }
        numbers[high] = numbers[low] ; //比中轴大的记录移到高端
        }
        numbers[low] = temp ; //中轴记录到尾
        return low ; // 返回中轴的位置
}

个人资料
游弋的蔷薇
等级:7
文章:27篇
访问:3.8w
排名: 10
上一篇: 腾讯数据类笔试题-2015年
下一篇:阿里巴巴java研发工程师面试题-2016年
猜你感兴趣的圈子:
阿里巴巴笔试面试圈
标签: low、numbers、中轴、high、hashtable、面试题
隐藏