锁定老帖子 主题:去淘宝面试后,哥悲剧了。。。
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-27
最后修改:2011-10-27
1、Hashmap中有哪些属性或者参数可以提高它的性能? 我听到这个问题后,脑袋直接短路,平时在coding的时候,用到Hashmap时,都是这样的:Map<String, Object> newMap = new HashMap<String, Object>();然后就直接往里面放元素了,想来想去,还真想不出来声明的时候,能加上哪些属性或者参数。然后回来,看了下Hashmap的源码,发现还真有两个属性,可以在创建时使用,一个是初始容量,一个是加载因子。但是回头想一下,即使知道这两个属性可以优化性能,但是在实际使用中,这两个值要怎么配合才能达到最优呢?如果传入的这两个值不协调的话,有可能还会降低Hashmap的性能。哎,喜欢研究的淘宝专家们,研究是为实际应用服务的,我想仅仅知道这两个属性的话,在实际应用中不一定派上用场,第一个问题就到这里,下面是代码: /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 16; /** * The maximum capacity, used if a higher value is implicitly specified * by either of the constructors with arguments. * MUST be a power of two <= 1<<30. */ static final int MAXIMUM_CAPACITY = 1 << 30; /** * The load factor used when none specified in constructor. */ static final float DEFAULT_LOAD_FACTOR = 0.75f; 2、如果开发高并发程序,你一般是如何实现的呢? 这个问题其实是在问concurrent包里的一些知识,幸好之前在项目中用到过,就和他聊了起来,java.util.concurrent.automic以及java.util.concurrent.lock包中的一些类啊,方面啊,都说了下。 然后面试人员又问了,如果我要限制最多3个人同时进行操作一个资源的话,你对资源是怎么处理的呢? 我说首先设置一个poolSize=3,然后可以用java.util.concurrent.lock包下面的Lock类里的lock和unlock方法对资源进行加锁与解锁操作。 结果面试人员又问了,还有没有其他方法? 如果有的话,就只有多线程中的同步操作了。 面试人员说,concurrent包里还有另外的方法可以实现这样的需求。。。 我说我真的不知道了,您能否告诉我一下这个方法怎么实现?他说你回去再看下这个包吧。我了个去,你整天是在工作还是在无聊研究这些源码?只有实际用到这些方法的时候,我才去深入研究一下。用不到的,你怎么设想场景,然后去研究呢。。。。说实话,淘宝有的是大牛,但是大多数人被招进去,都是做实事的。如果一个项目组中,每个人研究这么深的话,一是没必要,二是浪费时间资源,让其他人研究另外的技术去 暂时就说这两个问题吧。。。 第一次发帖,说得有点多,有点乱,希望淘宝的大牛们看见,就当我是在自我安慰吧。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-10-27
第二个问题答案,你看下这个类的用法java.util.concurrent.ExecutorService;
其实这两个问题都很实用并且实际,不像你说的只是纯研究~ |
|
返回顶楼 | |
发表时间:2011-10-27
淘宝的问题确实很实际和有深度。
|
|
返回顶楼 | |
发表时间:2011-10-27
平时接触不到这些 如何去弥补啊
|
|
返回顶楼 | |
发表时间:2011-10-27
这人问题我怎么感觉在阿里的一个讲多线程的PPT上都讲到的
|
|
返回顶楼 | |
发表时间:2011-10-27
最后修改:2011-10-27
没什么意思,不熟悉某些类库很正常,让面试官指出你不如jdk设计实现的方面,然后PK之。
|
|
返回顶楼 | |
发表时间:2011-10-27
如果我要限制最多3个人同时进行操作一个资源的话,
是java.util.concurrent.Semaphore吧 幸亏没问ConcurrentHashMap |
|
返回顶楼 | |
发表时间:2011-10-27
sgzlove2007 写道 第二个问题答案,你看下这个类的用法java.util.concurrent.ExecutorService;
其实这两个问题都很实用并且实际,不像你说的只是纯研究~ 我回去后问了下淘宝兄弟公司的技术人员,是P6+的了,他们对Hashmap的这个问题也回答不上来,他们直接来了句,平时项目中用不到的。 问了第2个关于并发的问题,他们只知道多线程同步的方法,说明在项目中也没用到ExecutorService方面的技术。 无法解释。。。 |
|
返回顶楼 | |
发表时间:2011-10-27
面试官都有自己的一套,答案肯定是固定的,你没用到不懂也没什么。
面试就那么回事儿 |
|
返回顶楼 | |
发表时间:2011-10-27
第一个问题:看一下数据结构,哈希表的实现,中间对加载因子和容量有详细的介绍。
第二个问题:之前到时直接使用过ConcurrentLinkedQueue,但是是对于大量的任务分配使用,至于一个资源的同步的话,也可以的啊,用完了在塞进去,若是没有资源,就等待。 |
|
返回顶楼 | |