一亩三分地论坛

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

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

新鲜出炉amazon实习面经

[复制链接] |试试Instant~ |关注本帖
lycheebuchi 发表于 2016-1-26 08:17:58 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 实习@Amazon - 内推 - 技术电面 |Otherfresh grad应届毕业生

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

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

x
约的早上9点面试,9点01分收到来自西雅图的电话,口音标准(应该不是印度人,但貌似也不是白人)。上来先问了之前做了哪些project,用什么framework。我说我一般用C++,他表示他这些年都是写JAVA,C++忘得差不多了。我本着随便聊的态度说哦我之前写Android有用过JAVA但是不太熟练,然后不造为啥开始讨论我之前写的Android app(醉了),结果不知不觉就扯了15分钟。小哥说那我们开始问些技术问题吧,就让设计一个方法,找出交易数据中交易时间最早的那个卖家的id,同时这个卖家只有一条交易记录(不知道我说清楚没,反正就是database中有很多条交易记录,然后这些记录中包含了交易时间和卖家id,有的卖家有很多交易记录有的只有一条,找出只有一条交易记录的卖家中最早交易的那个)。我第一反应是这不就是OOD么,所以让我写个类么?小哥说哦不不不,不用管数据结构随便写= =。反正就开始瞎写,一边写一边简单说下我的思路,然后再设计几个test cases,yy一下测试结果。也问了一下时间复杂度之类的问题。这题做完就已经45分钟了TAT,楼主的内心真是崩溃的。最后小哥说you will get your result soon...
啊希望能有offerTAT,找实习真是烦死了TAT。


补充内容 (2016-1-27 07:35):
TAT才过了一天已经收到拒信了。。

评分

1

查看全部评分

gjxwin 发表于 2016-2-1 05:00:14 | 显示全部楼层
不懂是不是这个意思?欢迎大家讨论。。。

class time {
    int year;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
    int month;
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴    int day;
    public time (int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
}
public class Transcation {
    private int id;
    private time date;
    public Transcation(int id, time date) {
        this.id = id; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
        this.date = date;
    }

    public Transcation find (List<Transcation> list) {. more info on 1point3acres.com
        Collections.sort(list, new Comparator<Transcation>() {
            @Override
. more info on 1point3acres.com            public int compare(Transcation o1, Transcation o2) {
                if (o1.date.year != o2.date.year) return o1.date.year - o2.date.year;
                else if (o1.date.month != o2.date.month) return o1.date.month - o2.date.month;
                else return o1.date.day - o2.date.day;-google 1point3acres
            }
        });
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();//id -> index
        for (int i = 0; i < list.size(); i++) {
            if (!map.containsKey(list.get(i).id)) map.put(list.get(i).id, i);
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷            else map.put(list.get(i).id, -1);
        }

        for (Transcation t : list) {.1point3acres缃
            if (map.get(t.id) != -1)
                return list.get(map.get(t.id));
        }
        return null;
. From 1point 3acres bbs    }

    public static void main(String[] args) {-google 1point3acres
        Transcation t1 = new Transcation(1, new time(2015, 1, 2));
        Transcation t2 = new Transcation(1, new time(2013, 2, 3)); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
        Transcation t3 = new Transcation(2, new time(2015, 1, 1));. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
        Transcation t4 = new Transcation(3, new time(2015, 2, 1));. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
        List<Transcation> list = new ArrayList<Transcation>(Arrays.asList(t1, t2, t3, t4));
        Transcation res = t1.find(list);
.鏈枃鍘熷垱鑷1point3acres璁哄潧
        System.out.println("id: " + res.id);
        System.out.println("time: " + res.date.year + "/" + res.date.month + "/" + res.date.day);. visit 1point3acres.com for more.
    }. from: 1point3acres.com/bbs
}
回复 支持 1 反对 0

使用道具 举报

ljdsoft 发表于 2016-1-26 08:41:39 | 显示全部楼层
是不是先根据id放到一个hashmap里面,然后再遍历一遍这个hashmap找到最早时间且只有一个交易的id?
回复 支持 反对

使用道具 举报

 楼主| lycheebuchi 发表于 2016-1-26 09:16:03 | 显示全部楼层
ljdsoft 发表于 2016-1-26 08:41
是不是先根据id放到一个hashmap里面,然后再遍历一遍这个hashmap找到最早时间且只有一个交易的id?
.鏈枃鍘熷垱鑷1point3acres璁哄潧
我是先按date排序然后再按id排,其实觉得有问题但是面试官说sounds work...我也就假装是对的了
回复 支持 反对

使用道具 举报

tong-1324 发表于 2016-1-26 11:00:36 | 显示全部楼层
恭喜恭喜!offer在路上!
回复 支持 反对

使用道具 举报

mchzh 发表于 2016-1-26 11:43:40 | 显示全部楼层
lycheebuchi 发表于 2016-1-26 09:16
我是先按date排序然后再按id排,其实觉得有问题但是面试官说sounds work...我也就假装是对的了

是不是跟海量数据的处理相关了
回复 支持 反对

使用道具 举报

lsyzju 发表于 2016-2-1 00:38:02 | 显示全部楼层
楼主可以详细说下这道题还有什么要求吗 我感觉你的做法没什么问题啊
可能是我没有明白题的意思
谢谢
回复 支持 反对

使用道具 举报

aangel 发表于 2016-2-1 05:37:38 | 显示全部楼层
gjxwin 发表于 2016-2-1 05:00. Waral 鍗氬鏈夋洿澶氭枃绔,
不懂是不是这个意思?欢迎大家讨论。。。

class time {

我也觉得这个是对的,还有别的tricky的地方吗
回复 支持 反对

使用道具 举报

喜马拉雅疯子 发表于 2016-2-2 03:15:55 | 显示全部楼层
我觉得楼楼上的方法是对滴。。如果是big scale的data,用external sorting排序, hashtable就改用 trie存吧。但是方法应该是这样做没错
回复 支持 反对

使用道具 举报

123呆板彻底 发表于 2016-2-2 03:38:18 | 显示全部楼层
喜马拉雅疯子 发表于 2016-2-2 03:15
我觉得楼楼上的方法是对滴。。如果是big scale的data,用external sorting排序, hashtable就改用 trie存吧 ...

我说一个想法,用hash map来map id 和记录,遍历的时候如果发现有多于一条记录就将key置为null,然后用keyset来遍历整个table,找出对应最小时间的那个key。这样是O(n) time 的解法
回复 支持 反对

使用道具 举报

123呆板彻底 发表于 2016-2-2 03:38:43 | 显示全部楼层
不是key,是key对应的value置为null
回复 支持 反对

使用道具 举报

minniedisney 发表于 2016-2-2 03:41:14 | 显示全部楼层
O(n)就可以做了吧,先遍历transaction建hashmap,key为id,value为该id交易次数,再遍历该hashmap,找到value为1时间最早的。用sort的话就要O(nlogn)惹
回复 支持 反对

使用道具 举报

喜马拉雅疯子 发表于 2016-2-2 04:45:38 | 显示全部楼层
minniedisney 发表于 2016-2-2 03:41
. visit 1point3acres.com for more.O(n)就可以做了吧,先遍历transaction建hashmap,key为id,value为该id交易次数,再遍历该hashmap,找到val ...

对滴对滴。找最早的不用排序
回复 支持 反对

使用道具 举报

minniedisney 发表于 2016-2-2 04:52:20 | 显示全部楼层
喜马拉雅疯子 发表于 2016-2-2 04:45.鏈枃鍘熷垱鑷1point3acres璁哄潧
对滴对滴。找最早的不用排序

回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-5 11:19

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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