10月28,K神开课讲数据科学,你来吗?


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
Babeltime游戏工作室招工程师、美术和策划
Tubi TV招安卓、前端和机器学习工程师
把贵司招聘信息放这里
查看: 1574|回复: 5
收起左侧

uber 电面, 已跪

[复制链接] |试试Instant~ |关注本帖
caigaa 发表于 2015-11-8 06:35:34 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 博士 全职@Uber - 内推 - 技术电面 |Failfresh grad应届毕业生

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x

电面连续被放两次鸽子,第三次跪了。。。

面的Infrastructure组
. From 1point 3acres bbs
聊了下project
然后问会不会数据库, Nosql (不会)
用过cloud service吗,AWS之类的 (没有)
用过哪些语言
不知道是不是这些和组不match,所以挂的

就一道题:. visit 1point3acres.com for more.
         给定: [“a“,1], ["b",2],  ["c",3]  
         返回一个string, ”a“的概率1/6, b的概率,2/6, c的概率 3/6.鏈枃鍘熷垱鑷1point3acres璁哄潧

follow up,怎么确定结果是不是对的
鏉ユ簮涓浜.涓夊垎鍦拌鍧.


.鏈枃鍘熷垱鑷1point3acres璁哄潧

评分

1

查看全部评分

rayord 发表于 2015-11-8 06:42:59 | 显示全部楼层
解决思路应该就是随机数吧, 写一个累积数组,然后随机数(1~6),如果是[1,1],返回a,如果是[2,3],返回b,如果是[4,6],返回c. follow up: 运行10000次,统计输出结果,计算下概率看符合不应该就可以了。Uber好像都是算法+测试用例。
回复 支持 反对

使用道具 举报

 楼主| caigaa 发表于 2015-11-8 06:46:17 | 显示全部楼层
rayord 发表于 2015-11-8 06:42
解决思路应该就是随机数吧, 写一个累积数组,然后随机数(1~6),如果是[1,1],返回a,如果是[2,3],返回b ...

我就是这个思路做的。中间编译程序发现了两个typo。。。汗,太大意了
回复 支持 反对

使用道具 举报

likenisha 发表于 2015-11-29 01:10:15 | 显示全部楼层
啥都不会真的是蛋疼,LZ后来如哪儿了
回复 支持 反对

使用道具 举报

returning 发表于 2016-1-27 14:28:10 | 显示全部楼层
rayord 发表于 2015-11-8 06:42. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
解决思路应该就是随机数吧, 写一个累积数组,然后随机数(1~6),如果是[1,1],返回a,如果是[2,3],返回b ...

如果数据很大的话,随机生成的是[2,3],你怎么确定对应的是b? 存放的是interval到char的mapping?-google 1point3acres
其实可以换个角度,存放数字到char的mapping,1->a, 3->b,6->c, 然后随机生成float数,如果在0-1之间就返回a, 1-3之间就返回b,3-6之间就返回c,所以就是binary search了。
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2016-2-7 11:39:34 | 显示全部楼层
写了下code,
  1. public class RandomWithWeight {-google 1point3acres
  2. .鏈枃鍘熷垱鑷1point3acres璁哄潧
  3.         static class  Node {
  4.                 String val;
  5.                 int weight;
  6.                 public Node(String val, int i) {
  7.                         this.val = val;
  8.                         this.weight = i;
  9.                 }. 鍥磋鎴戜滑@1point 3 acres
  10.         }. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  11.         public static String getRandomWithWeight(Node[] nodes) {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  12.                 for (int i = 1; i < nodes.length; i++) {. more info on 1point3acres.com
  13.                         nodes[i].weight = nodes[i - 1].weight + nodes[i].weight;
  14.                 }
  15.                 int len = nodes.length;
  16.                 double index = Math.random() * nodes[len - 1].weight;
  17.                 int res = binarySearch(index, nodes);
  18.                 return nodes[res].val;
  19.         }
  20.         private static int binarySearch(double index, Node[] nodes) {
  21.                 int start = 0;
  22.                 int end = nodes.length;
  23.                 while (start + 1 < end) {
  24.                         int mid = (end - start) / 2 + start;. more info on 1point3acres.com
  25.                         if (nodes[mid].weight  <= index) {
  26.                                 start = mid;. Waral 鍗氬鏈夋洿澶氭枃绔,
  27.                         } else {. visit 1point3acres.com for more.
  28.                                 end = mid;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  29.                         }
  30.                 }
  31.                 if (nodes[start].weight > index) {
  32.                         return start;
  33.                 } else {. Waral 鍗氬鏈夋洿澶氭枃绔,
  34.                         return end;. more info on 1point3acres.com
  35.                 }.鏈枃鍘熷垱鑷1point3acres璁哄潧
  36.         }
  37.        
  38.         public static void main(String[] args) {
  39.                 int countA = 0;
  40.                 int countB = 0;
  41.                 int countC = 0;
  42.                 for (int i = 0; i < 6000; i++) {
  43.                         Node[] nodes = {new Node("a", 1), new Node("b", 2), new Node("c", 3)};
  44.                         String res = getRandomWithWeight(nodes);
  45.                         if (res.equals("a")) {
  46.                                 countA++;. visit 1point3acres.com for more.
  47.                         } else if (res.equals("b")) {. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  48.                                 countB++;. from: 1point3acres.com/bbs
  49.                         } else if (res.equals("c")) {
  50.                                 countC++;
  51.                         }. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  52.                 }
  53.                 System.out.println(countA + " " + countB + " " + countC);
  54.         }
  55. }
    . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-9-20 21:20

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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