日期:2014-05-20  浏览次数:20880 次

阿里爸爸笔试题求解!!
1 请编写代码实现快速输出map里的键值对.

2 请写代码造成永久区溢出

3 请列举java中常见的几种远程调用方式,并说明应用场景

4 下面的代码大部分情况下没有问题,在什么情况下会有问题?为什么?
Java code

public class Stack {

    LinkedList list = new LinkedList();

    public synchronized void push(Object x){

       synchronized(this){

           list.addLast(x);

           notify();

       }

    } 

    public synchronized Object pop() throws Exception{

       synchronized(this){

           if(list.size() <= 0){

              wait();

           }

           return list.removeLast();

       }

    }

    public static void main(String[] args) {
 

    }

}



还有一个设计题,感觉非常不好处理~.改天发帖单独求教!

------解决方案--------------------
Java code

1.
for(Map.Entry<String, String> entry : map.entrySet()){
            System.out.println(entry.getKey()+","+entry.getValue());
}

------解决方案--------------------
1.不知道快速是要多快,直接遍历算快吗?(通过Entry对象)
2.永久区是指java虚拟机中的那个方法区吗?如果是那么你一直往运行时常量池里面放数据就好了。并且不要让他回收。
Java code

List<String> list = new ArrayList<String>();
int i = 0;
while(true){
    list.add(String.valueOf(i++).intern());
}

------解决方案--------------------
看不懂呢

有待学习
------解决方案--------------------
探讨

引用:

System.out.println(map.toString());
这样算快吗。。。。。

...
这有意义吗?

利用Map.Entry 来迭代也不知道满足不满足笔试题的答案..

------解决方案--------------------
顶一个
探讨
Java code


1.
for(Map.Entry<String, String> entry : map.entrySet()){
System.out.println(entry.getKey()+","+entry.getValue());
}



Java code


2.
//-XX:PermSize=10M -XX:MaxP……

------解决方案--------------------
第四題貌似也沒啥問題,難道是加多了list溢出算問題?
------解决方案--------------------
if(list.size() <= 0) 需要改为 while(list.size() <= 0)

这里必用while 不能用if 否则产生所谓的虚假唤醒。 

------解决方案--------------------
二楼的回答很不错呢
------解决方案--------------------
探讨

if(list.size() <= 0) 需要改为 while(list.size() <= 0)

这里必用while 不能用if 否则产生所谓的虚假唤醒。