一亩三分地论坛

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

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

Amazon Intern 第二轮电面

[复制链接] |试试Instant~ |关注本帖
ausjtgn 发表于 2016-1-9 07:47:55 | 显示全部楼层 |阅读模式

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

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

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

x
面试官叫Ian,上来闲聊,然后就开始做题。
Find all numbers in a given array that occur odd number of times.

. Waral 鍗氬鏈夋洿澶氭枃绔,题目不难,我说要么用hashmap要么sort然后一个一个比,让实现sort,二十分钟的时候写完了,漏了一个corner case,准备在最后加个判定条件不让加,说可以在前面加more concise。我想了半天没想到,他又说你先go through一遍就知道了。折腾了半天我还是没想出来怎样加可以更加concise(我觉得我的代码已经够concise了),最后告诉我你可以把前面两个if合并成一个,我当时就千万只草泥马奔腾而过,然后留五分钟问问题面试结束。全程就在被各种被挑刺,面试官就是不肯move on,不知道是故意的还是就准备了这一道题,还是有更优的解法?总之不是很愉快,看地理小伙伴都是四五个问题连着来,我从头到尾就一个,好心虚。


补充内容 (2016-1-9 08:07):
错了,是第一轮电面. visit 1point3acres.com for more.
. more info on 1point3acres.com
补充内容 (2016-1-9 08:07):
一共一个OA一个电面

评分

2

查看全部评分

本帖被以下淘专辑推荐:

gouber 发表于 2016-1-9 07:52:24 | 显示全部楼层
实习也会有二轮电面?楼主一面问的什么呀?
回复 支持 反对

使用道具 举报

xiaozhuxiaozhu 发表于 2016-1-9 07:55:38 | 显示全部楼层
lz前面的2个if statements是什么?你用的啥sort???
回复 支持 反对

使用道具 举报

puppetartist 发表于 2016-1-9 07:55:58 | 显示全部楼层
为什么有2轮电面?
回复 支持 反对

使用道具 举报

iPhD 发表于 2016-1-9 07:57:09 | 显示全部楼层
真希望我也就能遇到这样一道题。。。。你漏了哪个corner case呀?
回复 支持 反对

使用道具 举报

 楼主| ausjtgn 发表于 2016-1-9 08:08:04 | 显示全部楼层
xiaozhuxiaozhu 发表于 2016-1-9 07:55. from: 1point3acres.com/bbs
lz前面的2个if statements是什么?你用的啥sort???

就是Collections.sort啊
回复 支持 反对

使用道具 举报

xiaozhuxiaozhu 发表于 2016-1-9 08:09:52 | 显示全部楼层
ausjtgn 发表于 2016-1-9 08:08
鏉ユ簮涓浜.涓夊垎鍦拌鍧. 就是Collections.sort啊


我以为需要写一个heap sort,或者quick sort, bubble sort呢。。
. from: 1point3acres.com/bbs

补充内容 (2016-1-9 08:11):. 鍥磋鎴戜滑@1point 3 acres
你意思是Arrays.sort()? 一般sory array[]这种会用arrays.sort?
回复 支持 反对

使用道具 举报

 楼主| ausjtgn 发表于 2016-1-9 08:12:18 | 显示全部楼层
iPhD 发表于 2016-1-9 07:57
真希望我也就能遇到这样一道题。。。。你漏了哪个corner case呀?

我的for loop走到最后漏掉最后一个数,我想最后加一个条件判断要不要把最后一个数加上
回复 支持 反对

使用道具 举报

iPhD 发表于 2016-1-9 08:16:05 | 显示全部楼层
ausjtgn 发表于 2016-1-9 08:12
我的for loop走到最后漏掉最后一个数,我想最后加一个条件判断要不要把最后一个数加上

是呀,我自己稍微写了下,sort后再数次数是很容易出bug.....感觉还是用hashmap好点。。。
回复 支持 反对

使用道具 举报

 楼主| ausjtgn 发表于 2016-1-9 08:19:46 | 显示全部楼层
xiaozhuxiaozhu 发表于 2016-1-9 08:09
我以为需要写一个heap sort,或者quick sort, bubble sort呢。。

他给我的是一个list所以我用collections了  
回复 支持 反对

使用道具 举报

 楼主| ausjtgn 发表于 2016-1-9 08:22:20 | 显示全部楼层
iPhD 发表于 2016-1-9 08:16. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
是呀,我自己稍微写了下,sort后再数次数是很容易出bug.....感觉还是用hashmap好点。。。
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
他没让用hashmap。。。其实我感觉最后加一个if就好了,第一次见这种不让加的啊,太坑了
回复 支持 反对

使用道具 举报

iamwds 发表于 2016-1-9 09:16:29 | 显示全部楼层
羡慕楼主只问一道问题

这是我写,
.1point3acres缃
public static List<Integer> find(List<Integer> list) {
                List<Integer> res = new ArrayList<>();
                if (list == null || list.size() == 0) {
                        return res;. from: 1point3acres.com/bbs
                }
                Collections.sort(list);
                int pre = list.get(0);
                int count = 1;
                for (int i = 1; i < list.size(); i++) {
                        if (list.get(i) == pre) {
                                count++;
                        } else {// 1 2 2 3
                                if (count % 2 == 1) {
-google 1point3acres                                        res.add(pre);
                                }. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                                pre = list.get(i);
                                count = 1;. 鍥磋鎴戜滑@1point 3 acres
                        }
                }. From 1point 3acres bbs

                if (count % 2 == 1) {.鏈枃鍘熷垱鑷1point3acres璁哄潧
                        res.add(pre);. 1point 3acres 璁哄潧
                }. more info on 1point3acres.com

                return res;. Waral 鍗氬鏈夋洿澶氭枃绔,
        }
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

补充内容 (2016-1-9 09:21):
还能再简洁一些吗?
回复 支持 反对

使用道具 举报

 楼主| ausjtgn 发表于 2016-1-9 09:53:23 | 显示全部楼层
iamwds 发表于 2016-1-9 09:16
羡慕楼主只问一道问题

这是我写,

我跟你的几乎一样 只不过把count改成了一个boolean

补充内容 (2016-1-9 09:54):
我想加最后那个if  他死活不让 真是纠结死了
回复 支持 反对

使用道具 举报

Josh 发表于 2016-1-9 12:47:56 | 显示全部楼层
我晕,全程一道题?太坑了吧。。。有没有其他的非coding的问题呢?
回复 支持 反对

使用道具 举报

liujunlovecs 发表于 2016-1-9 13:46:55 | 显示全部楼层
这样做符合要求么?
  1.         public List<Integer> find(List<Integer> nums) {. Waral 鍗氬鏈夋洿澶氭枃绔,
  2.                 List<Integer> result = new ArrayList<>();
  3.                 if (nums == null) {
  4.                         return result;
  5.                 }
  6.                
  7.                 Collections.sort(nums);
  8.                 int length = nums.size();
  9.                
  10.                 for (int i = 0; i < length; i++) {
  11.                         int count = 1;
  12.                         int val = nums.get(i);
  13.                         while (i + 1 < length && nums.get(i) == nums.get(i + 1)) {
  14.                                 i++;
  15.                                 count++;
  16.                         }
  17.                         if (count % 2 == 1) {
  18.                                 result.add(val);
  19.                         }
  20.                 }
  21.                
  22.                 return result;
  23.         }
复制代码
回复 支持 反对

使用道具 举报

xiaozhuxiaozhu 发表于 2016-1-9 21:47:45 | 显示全部楼层
liujunlovecs 发表于 2016-1-9 13:46. 鍥磋鎴戜滑@1point 3 acres
这样做符合要求么?

当发现当先值和前一个值不一样的时候,你要重置count

补充内容 (2016-1-9 22:18):
我看错了,不好意思
回复 支持 反对

使用道具 举报

xiaozhuxiaozhu 发表于 2016-1-9 22:11:59 | 显示全部楼层
二十分钟的时候写完了。。
lz为什么用了20分钟,感觉这个题的难度,应该得做个3道才ok吧。面试官可能是黑你啊,不过也可能是诚心给你offer。
这道题是啥corner case??
回复 支持 反对

使用道具 举报

Liuology 发表于 2016-1-9 23:24:55 | 显示全部楼层
  1.         public List<Integer> find(List<Integer> nums) {
  2.                 List<Integer> result = new ArrayList<>();
  3.                 if (nums == null) {
  4.                         return result;
  5.                 }
  6.                 Collections.sort(nums);
  7.                 int count = 1;
  8.                 int i = 1;
  9.                 while(i <= nums.size()) {
  10.                     while (i < nums.size() && nums.get(i) == nums.get(i - 1)) {
  11.                         count++;
  12.                         i++;
  13.                     }. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  14.                     if (count % 2 == 1) {
  15.                             rst.add(nums[i - 1]);
  16.                     }
  17.                     count = 1;

  18.                 }
  19.                 return res;
  20.         }
复制代码
. more info on 1point3acres.com




补充内容 (2016-1-9 23:27):
need an i++ at the end of the outer while loop
回复 支持 反对

使用道具 举报

shadow7429 发表于 2016-1-11 10:16:12 | 显示全部楼层
用两个list 然后遍历一遍是不是更好一点?
回复 支持 反对

使用道具 举报

luofeidream 发表于 2016-1-11 10:44:32 | 显示全部楼层
你可以sort完之后自己在数组尾append一个哨兵?这样就不用再多写判断了
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-10 02:19

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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