Saturday, November 8, 2014

Yahoo

第0轮:做coding exercise,一个小时,实际5分钟就搞完了,后面一直在写testcase 
给三个参数,s,l,d,分别代表小砖长度,大砖长度,目标长度,砖的数量无限,问有无
可能达到目标长,返回true or false;
       比如1,2,5 返回true,因为1+2+2=5
       我的code:
       if(s > l || s <= 0 || l <= 0 || d <= 0)       
            throw new Exception ();
        for(int i = 0; i <= d; i += l)   
            if((d - i) % s == 0)
                return true;
        return false;
第一轮:1.上来先问我这code的问题,感觉面试官没看懂,拿了一堆类似1,X , Y的数
据测我程序,我都看不下去了,小砖长度为1,我第一次循环直接就true了啊,有毛好
测的。。后来我提示了一下,他测了个2,5, 8..还是第一次就出结果。。有意思么。。
        2.matrix rotate 90度。。非常基本的题,先让我跟他讲思路,怎么讲感觉他
都不理解,后来终于趁他若有所思的时候开始写code了,写完了他还不懂,又是4*4的
矩阵,每个element都要跑一遍给他看,简直无语,看完好像还是没懂我是啥意思
    3.design 数据库,纯建一个表就完事了,加点key,foreign key什么的
    4.merge two sorted linklist,这次他总算看懂我代码了,啥也没问
第二轮:1.OO design。design Duck。Duck has many species,different species 
有不同的叫声,但是飞翔和游泳是一样的。我就搞了个抽象类继承下什么的。后来变成
有N种飞行,问我怎么改,我SB了,写了N种飞行method在父类里,另外还有个主fly 
method,根据鸟的fly类型在主fly method里调用不同的method;然后他告诉我应该定
义一个fly class.这个没答好
        2.basic questions: deadlock, how to synchronize, database join, 
singleton 这个基本不难,就问的点比较杂
第三轮:1.has a Random5() which generate random number from 1-5. Write a 
function generate 1-125
      我的code:
      int Random125(){
        int result=0;
        result+=25*(Random5()-1);
        result+=5*(Random5()-1);
        result+=(Random5()-1);
        if(result==0)
            return 125;
        return result;
    }
    然后这面试官又说我这个不是evenly random,说中间的数出现的多,两边的数出
现的少。。我擦,这不可能啊。。解释了很久面试官不信不耐烦了搞下一题了
    2.问我怎么处理推特这样的大规模读写数据的请求,系统设计吧相当于。
      最后说到cache上,我拿LRU解决的,所以就implement LinkedHashMap,然后写
了个LRU算法。。最后问还有没有改进
      这个我基本都答上来了,还行

间隔着问些简历上的东西,我就不说了



CEO review,希望不出什么意外= =!

No comments:

Post a Comment