论坛首页 招聘求职论坛

去淘宝面试后,哥悲剧了。。。

浏览 34660 次
精华帖 (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包里还有另外的方法可以实现这样的需求。。。
我说我真的不知道了,您能否告诉我一下这个方法怎么实现?他说你回去再看下这个包吧。我了个去,你整天是在工作还是在无聊研究这些源码?只有实际用到这些方法的时候,我才去深入研究一下。用不到的,你怎么设想场景,然后去研究呢。。。。说实话,淘宝有的是大牛,但是大多数人被招进去,都是做实事的。如果一个项目组中,每个人研究这么深的话,一是没必要,二是浪费时间资源,让其他人研究另外的技术去
暂时就说这两个问题吧。。。

第一次发帖,说得有点多,有点乱,希望淘宝的大牛们看见,就当我是在自我安慰吧。。
   发表时间:2011-10-27  
第二个问题答案,你看下这个类的用法java.util.concurrent.ExecutorService;
其实这两个问题都很实用并且实际,不像你说的只是纯研究~
0 请登录后投票
   发表时间:2011-10-27  
淘宝的问题确实很实际和有深度。
0 请登录后投票
   发表时间:2011-10-27  
平时接触不到这些 如何去弥补啊
0 请登录后投票
   发表时间:2011-10-27  
这人问题我怎么感觉在阿里的一个讲多线程的PPT上都讲到的
0 请登录后投票
   发表时间:2011-10-27   最后修改:2011-10-27
没什么意思,不熟悉某些类库很正常,让面试官指出你不如jdk设计实现的方面,然后PK之。
0 请登录后投票
   发表时间:2011-10-27  
如果我要限制最多3个人同时进行操作一个资源的话,

是java.util.concurrent.Semaphore吧
幸亏没问ConcurrentHashMap
0 请登录后投票
   发表时间:2011-10-27  
sgzlove2007 写道
第二个问题答案,你看下这个类的用法java.util.concurrent.ExecutorService;
其实这两个问题都很实用并且实际,不像你说的只是纯研究~

我回去后问了下淘宝兄弟公司的技术人员,是P6+的了,他们对Hashmap的这个问题也回答不上来,他们直接来了句,平时项目中用不到的。
问了第2个关于并发的问题,他们只知道多线程同步的方法,说明在项目中也没用到ExecutorService方面的技术。
无法解释。。。
0 请登录后投票
   发表时间:2011-10-27  
面试官都有自己的一套,答案肯定是固定的,你没用到不懂也没什么。
面试就那么回事儿
0 请登录后投票
   发表时间:2011-10-27  
第一个问题:看一下数据结构,哈希表的实现,中间对加载因子和容量有详细的介绍。
第二个问题:之前到时直接使用过ConcurrentLinkedQueue,但是是对于大量的任务分配使用,至于一个资源的同步的话,也可以的啊,用完了在塞进去,若是没有资源,就等待。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics