一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 939|回复: 3
收起左侧

LiveRamp OA面经

[复制链接] |试试Instant~ |关注本帖
he2004365 发表于 2015-9-29 22:38:34 | 显示全部楼层 |阅读模式

2015(7-9月) 码农类 硕士 全职@LiveRamp - 网上海投 - 在线笔试 |Failfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
网上已经有很多Liveramp的面经了,我就不在赘述了~我遇到的是青蛙过河的那道题。分享出自己写的代码, 代码根据http://www.1point3acres.com/bbs/ ... p;page=2#pid1997335,二楼大神的bucket思路写的, 代码有bug, 需要的人自己再调试调试,我在做OA的时候,自己写了几个test case, 都过了。 但是大数据不没试过,可能挂就挂在考虑corner case不全上吧。其他两道题,就是问怎么给你同事解释你上面写的代码,如果你的同事知道题意, 但是不懂你写的代码什么意思。 然后就是why liveRamp。 这两题都没法分享经验了,就跟写作文似得,自己看着上吧。
主要思路: 根据数组大小创建 N = X/D 个bucket, 每个bucket里面的叶子是青蛙都可以达到的,因为bucket内部的距离小于D, 然后想要到X, 就需要建立N - 1次connection。
代码:
public static int frog(int[] num, int X, int D){
                if(num[0] < D && num[0] > X){
                        return 0;
                }
                int N = (int) Math.ceil((double) X / D); // total bucket Number
                System.out.println("the total number of bucket: "+ N);
                Bucket[] bucket = new Bucket[N];
                for(int i = 0; i < N; i++){
                        bucket = new Bucket(1, 1); // create new bucket object
                }
                int count = 0; // must be equal to N - 1
                Map<Bucket, Integer> map = new HashMap<Bucket, Integer>();
                for(int i = 0; i < N; i++){
                        map.put(bucket, 0);
                }
                System.out.println("map size" + map.size());
                for(int i = 0; i < num.length; i++){
                        int bucketNum = (int) num / D;
//                        if (map.containsKey(bucket[bucketNum])){
//                continue;
//                        }
                        bucket[bucketNum].min = Math.min(bucket[bucketNum].min, num);
                        bucket[bucketNum].max = Math.max(bucket[bucketNum].max, num);
                       
                        int preMax = bucketNum == 0 ? Integer.MIN_VALUE : bucket[bucketNum - 1].max;
                        int nextMin = (bucketNum == N - 1) ? Integer.MAX_VALUE : bucket[bucketNum + 1].min;
                       
                         boolean canReachPrev = bucket[bucketNum].min - preMax <= D;
             boolean canReachNext = nextMin - bucket[bucketNum].max <= D;

             if(canReachPrev){ // can be affect previous bucket
                     if(bucketNum != 0 &&  map.get(bucket[bucketNum - 1]) == 0){
                             count++;
                         map.put(bucket[bucketNum - 1], 1);
                     }
                     //map.put(bucket[bucketNum - 1], 1);
             }
             if(canReachNext){ // can be affect next bucket
                     if(bucketNum != N - 1 && map.get(bucket[bucketNum + 1]) == 0) {
                             count++;
                             map.put(bucket[bucketNum + 1],  1);
                     }
                     //count++;
                     //map.put(bucket[bucketNum + 1], 1);
             }
             map.put(bucket[bucketNum], 1);
             //System.out.println("the count number: " + count);
             if(count == N - 1 && num + D >= X){ // set up N - 1 connection
                     return i;
             }
                       
                }
                return -1;
        }
//        public static void print(int[] num){
//                for(int i = 0; i < num.length; i++) {
//                        System.out.print(num + " ");
//                }
//        }
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
}
class Bucket{
        int min;
        int max;
        public Bucket(int min, int max){
                this.min = min;
                this.max = max;
        }
        public boolean contains(int num) {
        return min <= num && max >= num;
        }
}
求大神怒射大米,小弟快没米了,接下来还有别家的面试啊!谢谢各位大大。

评分

3

查看全部评分

swing 发表于 2015-10-3 14:37:19 | 显示全部楼层
楼主不好意思啊,问一下你OA过了没~
回复 支持 反对

使用道具 举报

 楼主| he2004365 发表于 2015-10-4 01:13:05 | 显示全部楼层
swing 发表于 2015-10-3 14:37
楼主不好意思啊,问一下你OA过了没~

并没有过,不知道是代码原因还是因为我做晚了。邮件让三天之内做完,不过因为有事情,第五天才做。哎~
回复 支持 反对

使用道具 举报

swing 发表于 2015-10-4 07:51:10 | 显示全部楼层
he2004365 发表于 2015-10-4 01:13
并没有过,不知道是代码原因还是因为我做晚了。邮件让三天之内做完,不过因为有事情,第五天才做。哎~
.鐣欏璁哄潧-涓浜-涓夊垎鍦
谢谢楼主~
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-6 18:28

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表