当前位置:首页 > 开发 > IT生活 > 正文

一个电话面试后总结

发表于: 2014-11-10   作者:a-john   来源:转载   浏览:
摘要: 今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。 面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:   在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。   然后对list和map分别举几个类型:   list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了

今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。

面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:

 

在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。

 

然后对list和map分别举几个类型:

 

list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了。就说了LinkedList是按照顺序存储的,ArrayList则是随机的。

后来翻了一下书:两者的不同之处不仅在于执行某些类型的操作时的性能,而且LinkedList包含的操作也多于ArrayList。

ArrayList:擅长于随机访问元素,但是在List的中间插入和移除元素较慢。

LinkedList:通过较低的代价在List中间进行元素的插入和删除操作,提供了优化的顺序访问。但是在随机访问方面相对比较慢,特性集较ArrayList更大。

它们都是具有相同接口和外部行为的简单的序列,但是它们对某些操作所花费的代价却有天壤之别。在ArrayList中,随机访问元素是一个花费固定时间的操作;但是,对LinkedList来说,随机选取元素需要在列表中移动,这种代价是高昂的,访问越靠近表尾的元素,花费的时间越长。而另一方面,如果想在序列中间插入一个元素,LinkedList的开销却比ArrayList要小。

 

map方面:举了hashmap,treemap,linkedhashmap。

谈到hashmap的时候,我对它只有“它是最快获得元素的方式”这个概念。然后被问到了hashcode,怎么产生hashcode的。我知道它和equals都可以用来比较两个对象是否相等,而且都可以重写。一般equals相等的两个对象,hashcode也基本相等。hashcode相等的,equals可能相等,可能不相等。但是hashcode是怎么产生的还真不知道。

回头查了一下,原来,hashcode是一个本地方法。在Object类中的代码是:

 public native int hashCode();

如果不对它进行重写,那么两个地址不同的对象,hashcode是不会相同的。但是我们往往要比较的是两个对象的内容,那么就要对hashcode进行重写。举个例子:

 public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;

            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }

 这是String重写后的hashcode。那么就可以用它来比较两个String的内容是否相同了。

 

public class TestEqualAndHash {
	
	public static void main(String[] args) {
		String a = "abc";
		String b = "abc";
		System.out.println(a==b);
		System.out.println(a.hashCode()==b.hashCode());
		User u1 = new User();
		User u2 = new User();
		System.out.println(u1==u2);
		System.out.println(u1.hashCode()==u2.hashCode());
	}
}
class User{
}
Output:
true
true
false
false

 可以看出,String经过重写,a,b相等;但是User没有重写过equals和hashcode,所以不相等。

 

一个电话面试后总结

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本人大三学生一枚,就想试试参加了阿里的春季招聘,简历顺利通过,然后一段时间之后等到了阿里的电
3月7日增加更新,以下是QQ上简单面试问的问题: 你有github账号或者是个人博客么?面试官对我说,面
今天中午接到阿里巴巴的电话面试,电面了将近一个小时左右。感觉自己发挥得并不好,好多基础的只是
http://blog.sina.com.cn/s/blog_6eea02c50100n2al.html 堆排序 B+,B- 怎么判断平衡树 平衡二叉树
问题一: 按1 TextView 里面显示1后,按2,2把1替换了,显示的是2,而不是12 解决办法,添加两
  前几天接到IBM的电话面试了,虽然被PASS了,还是发个博记录一下吧。这大概是我第一次比较正式的
  前几天接到IBM的电话面试了,虽然被PASS了,还是发个博记录一下吧。这大概是我第一次比较正式的
博客已经迁移至 萌萌的IT人 ,谢谢支持 --------------------------------------------------   
一个 IT 农民工的总结 - 各互联网巨头公司员工面试流程分享 IT 是一个人才日益紧缺的行业,2012年的
题目一: linux进程间通信(IPC)有几种方式,下面将将简单的简述一下: 一。管道(pipe) 管道是Linux
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号