一亩三分地论坛

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

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

uber电面

[复制链接] |试试Instant~ |关注本帖
fezfeng 发表于 2015-9-9 02:51:32 | 显示全部楼层 |阅读模式

2015(7-9月) 码农类 硕士 全职@Uber - 内推 - 技术电面 |Failfresh grad应届毕业生

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

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

x
最近状态有点醉,做题的时候各种晕晕乎乎,今天一个binary search用了(left+right)/2 overflow 看了半天没看出来,还是太弱,各种基础不牢。。
言归正传,uber家上周五的电面,白人小哥,security engineer,面试时自称是" the very first security engineer at Uber" 来得时候匆匆忙忙,上气不接下气的感觉,先让我讲了十分钟实习经历他调整了一下,然后coderpad上面做题。
第一道题:find the max element in an unsorted array! 对,你没看错。可能是有生以来遇到的最简单的面试问题了,秒解后小哥还赞赏了一下有些人会naive得排序。。。这可能是为后面打下了伏笔。。
第二道题:有一大堆meeting, 有start time和end time,都是integer,且在一天之内,代表一天内的第几分钟。然后让返回boolean代表这些是否有overlap,然后楼主就naive了,就写了个comparator sort了,按start time 排序后一个个检查下一个的start time是否小于上一个的end time。然后小哥说有没有更好的办法,提示了一下说用一个数组。然后楼主恍然大悟,就开了个1440 大小的bit的数组写了个O(n)的。
后面他问了一些security方面的问题,主要是xss attack和sql injection如何防护。讲了一下他在组里的职责就结束了。面完感觉应该能过,但周六收到了拒信,有点遗憾但是还是要move on了,又一个dream company,哎。。。

评分

3

查看全部评分

 楼主| fezfeng 发表于 2015-9-10 06:25:07 | 显示全部楼层
dobestdobest 发表于 2015-9-10 06:10
楼主是用 java.util.BitSet 做的吗?就像下面这样?

我当时并没有想到bitset 用的是boolean[] 初始化都是false,来一个meeting就把相应时间段全变成true,如果发现之前就是true直接return。和你思路差不多。
回复 支持 1 反对 0

使用道具 举报

cjlm007 发表于 2015-9-9 04:47:58 | 显示全部楼层
第一题感觉就是伏笔
回复 支持 反对

使用道具 举报

alucardzhou 发表于 2015-9-9 07:47:28 | 显示全部楼层
第二题的意思是这样么?:有个Meeting类的Array。每个Meeting 包含start time和end time两个integer类的属性。都是代表一天内的第几分钟。
这个1440的bit真是很精妙。24*60=1440.
回复 支持 反对

使用道具 举报

lijing2441 发表于 2015-9-9 09:24:43 | 显示全部楼层
1440原来是这个意思。。之前做过Meeting Rooms,但是好像不太一样
回复 支持 反对

使用道具 举报

f1371342385 发表于 2015-9-9 10:07:35 | 显示全部楼层
LZ,über电面的话是要求当场运行的吗?
回复 支持 反对

使用道具 举报

 楼主| fezfeng 发表于 2015-9-10 01:19:07 | 显示全部楼层
f1371342385 发表于 2015-9-9 10:07
LZ,über电面的话是要求当场运行的吗?

是的,coderpad上写好要可运行的,通常他让你自己写testcase然后把结果跑对。
回复 支持 反对

使用道具 举报

 楼主| fezfeng 发表于 2015-9-10 01:21:29 | 显示全部楼层
alucardzhou 发表于 2015-9-9 07:47
第二题的意思是这样么?:有个Meeting类的Array。每个Meeting 包含start time和end time两个integer类的属 ...

惭愧。。表达太差。就是这个意思。
回复 支持 反对

使用道具 举报

f1371342385 发表于 2015-9-10 01:24:45 | 显示全部楼层
fezfeng 发表于 2015-9-10 01:19
是的,coderpad上写好要可运行的,通常他让你自己写testcase然后把结果跑对。

好的 感谢LZ提供有用的信息哈
回复 支持 反对

使用道具 举报

TerrenceLi 发表于 2015-9-10 02:38:01 | 显示全部楼层
请问lz为什么会被问security方面的问题啊?。。一点都不懂。
回复 支持 反对

使用道具 举报

alucardzhou 发表于 2015-9-10 03:06:14 | 显示全部楼层
fezfeng 发表于 2015-9-9 12:21
惭愧。。表达太差。就是这个意思。
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
楼主第一时间分享滚烫的面经。光这种精神就已经难能可贵。
回复 支持 反对

使用道具 举报

 楼主| fezfeng 发表于 2015-9-10 05:29:56 | 显示全部楼层
TerrenceLi 发表于 2015-9-10 02:38. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
请问lz为什么会被问security方面的问题啊?。。一点都不懂。

哦 他是security engineer, 然后我简历上有提上过network security的课程,然后他提到了问了些。我其实投了两个:growth和backend,并不知道为什么是个security team的人面我,可能第一轮就是个没有偏重组的整体面试吧。
回复 支持 反对

使用道具 举报

dobestdobest 发表于 2015-9-10 06:10:13 | 显示全部楼层
楼主是用 java.util.BitSet 做的吗?就像下面这样?
  1. import java.util.BitSet;. 鍥磋鎴戜滑@1point 3 acres
  2. . from: 1point3acres.com/bbs
  3. public class Solution2 {
  4.     public static void main(String[] args) {
  5.         Meeting[] meetings = {. from: 1point3acres.com/bbs
  6.                 new Meeting(1, 2),
  7.                 new Meeting(3, 5),
  8.                 new Meeting(5, 6),
  9.         };

  10.         Answer2 ans = new Answer2();. From 1point 3acres bbs
  11.         System.out.println(ans.isOverlap(meetings));
  12.     }
  13. }
  14. . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  15. class Answer2 {
  16.     public boolean isOverlap(Meeting[] meetings) {. 1point3acres.com/bbs
  17.         int slots = 24 * 60;
  18.         BitSet ret = new BitSet(slots);
  19.         for (Meeting meeting : meetings) {
  20.             BitSet bitSet = new BitSet(slots);
  21.             bitSet.set(meeting.start, meeting.end + 1);
  22.             if (ret.intersects(bitSet)) return true;
  23.             ret.or(bitSet);
    . 鍥磋鎴戜滑@1point 3 acres
  24.         }
  25.         return false;
  26.     }. more info on 1point3acres.com
  27. }
复制代码
回复 支持 反对

使用道具 举报

dobestdobest 发表于 2015-9-10 06:41:44 | 显示全部楼层
fezfeng 发表于 2015-9-10 06:25
我当时并没有想到bitset 用的是boolean[] 初始化都是false,来一个meeting就把相应时间段全变成true,如 ...

明白了,那你就要实现上面的set(), intersects(), 和 or() 这些方法
估计代码量不少,可能要100多行
回复 支持 反对

使用道具 举报

 楼主| fezfeng 发表于 2015-9-10 07:10:19 | 显示全部楼层
dobestdobest 发表于 2015-9-10 06:41. from: 1point3acres.com/bbs
明白了,那你就要实现上面的set(), intersects(), 和 or() 这些方法
估计代码量不少,可能要100多行

不用的,比如第一个meeting是(50,100),那就把boolean[1440] 的第50到100全变成true,第二个meeting如果是(70,150)那当我尝试把70设成true的时候发现它已经是true,就返回有overlap就好了,大概是:. more info on 1point3acres.com
public boolean hasOverlap(Meeting[] meetings){. from: 1point3acres.com/bbs
boolean[] array = new boolean[1440];. 1point 3acres 璁哄潧
for(Meeting m:meetings){. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
    for(int i = m.start; i <=m.end;++i){
        if(array) return true;
        else array = true;
    } .鏈枃鍘熷垱鑷1point3acres璁哄潧
}  
return false;
}
回复 支持 反对

使用道具 举报

dobestdobest 发表于 2015-9-10 07:15:55 | 显示全部楼层
fezfeng 发表于 2015-9-10 07:10. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
不用的,比如第一个meeting是(50,100),那就把boolean[1440] 的第50到100全变成true,第二个meeting如果 ...

不错. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
你这个好
回复 支持 反对

使用道具 举报

handsomeboy123 发表于 2015-9-11 13:13:02 | 显示全部楼层
前两天面了Uber,没收到消息,估计也是挂了
回复 支持 反对

使用道具 举报

zyz0104 发表于 2015-9-12 10:47:16 | 显示全部楼层
请问那如果时间是(40, 50),(50,60)怎么处理呢?会重合一个50的点,但这个貌似应该是没有overlap的吧?
回复 支持 反对

使用道具 举报

austurela 发表于 2015-9-12 12:31:35 | 显示全部楼层
lz全给最优解了怎么还会挂呐
回复 支持 反对

使用道具 举报

 楼主| fezfeng 发表于 2015-9-12 22:57:36 | 显示全部楼层
zyz0104 发表于 2015-9-12 10:47
请问那如果时间是(40, 50),(50,60)怎么处理呢?会重合一个50的点,但这个貌似应该是没有overlap的吧 ...
-google 1point3acres
他当时让我认为这也算是有overlap。但如果按你的这种规则,在设置boolean[] 的时候, 应该是for(int i = m.start; i < m.end; i++) 这样就可以了。但这样的输入范围应该是0-1440, 而我当时跟他确认了一下输入范围0-1439, 反正根据他的要求做些小变化吧。
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-5 00:38

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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