java基础知识记录

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包里还有另外的方法可以实现这样的需求。。。

猜你喜欢

转载自zhmeup.iteye.com/blog/1679893