一亩三分地论坛

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

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

T家Onsite

[复制链接] |试试Instant~ |关注本帖
ymqytw 发表于 2015-12-31 05:16:25 | 显示全部楼层 |阅读模式

2016(7-9月) 码农类 硕士 全职@Twitter - 内推 - Onsite |Otherfresh grad应届毕业生

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

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

x
12/18 SF office
1) 三哥,SWE,一个巨大的graph,用多个machine存,每个machine存了一部分edge,找出所有的联通分量。三哥说想考MapReduce
2) 国人小哥,senior,聊了简历。两个容积分别为v1, v2升的瓶子,能不能倒来倒去得到p升的水。用BFS
白人小哥午餐,senior
3) 白人小哥,senior,system design:1TB的data,经常被访问,read-heavy,1000 server;聊了简历。我用的3-tier
4) 白人小哥,senior,聊了简历,leetcode https://leetcode.com/problems/copy-list-with-random-pointer/

下面是我们实验室的一个三哥告诉我的他的面经:
1) 经典题 design parking lot. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
2) http://www.programcreek.com/2012 ... matrix-zeroes-java/
3) 4个数,算24点,可以用+,-,*,/,^.鐣欏璁哄潧-涓浜-涓夊垎鍦
4) 雷同检测器,检测2个document是不是相似
5) 问了一堆比较简单的小问题

求offer,求大米

评分

1

查看全部评分

leixiang5 发表于 2015-12-31 09:10:33 | 显示全部楼层
目测楼主要offer了。恭喜楼主。谢谢分享。
回复 支持 反对

使用道具 举报

ammmmy11 发表于 2016-1-7 07:53:22 | 显示全部楼层
求问楼主选了什么组
回复 支持 反对

使用道具 举报

returning 发表于 2016-1-7 22:04:24 | 显示全部楼层
请问24点是怎么求的,谢谢了。
回复 支持 反对

使用道具 举报

 楼主| ymqytw 发表于 2016-1-8 12:34:47 | 显示全部楼层
ammmmy11 发表于 2016-1-7 07:53
求问楼主选了什么组

我记得好像是plantform和revenue
回复 支持 反对

使用道具 举报

 楼主| ymqytw 发表于 2016-1-8 12:39:17 | 显示全部楼层
returning 发表于 2016-1-7 22:04
请问24点是怎么求的,谢谢了。

之前写的,不知道还有什么更好的方法吗?

import java.util.*;

public class game_24 {
        public class numWithFormula {
                double num;
                String formula;
                public numWithFormula(double n, String s){
                        num = n;
                        formula = s;
                }
        }
        public List<String> get_formulas(int[] nums){
                List<String> ret = new ArrayList<String>();
                List<numWithFormula> input = new ArrayList<numWithFormula>();
                for(int num : nums){
                        input.add(new numWithFormula(num, Integer.toString(num)));
                }
                helper(input, ret);. 1point3acres.com/bbs
                return ret;
        }
        private void helper(List<numWithFormula> nums, List<String> ret){
                if(nums.size() == 1){
                        if(nums.get(0).num == 24). 鍥磋鎴戜滑@1point 3 acres
                                ret.add(nums.get(0).formula);
                        return;
                }
                char[] ops = new char[]{'+', '-', '*', '/', '^'};
                int sz = nums.size();
                numWithFormula num1, num2;
                for(int i = 0; i < sz; i++){. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                        num1 = nums.get(i);
                        nums.remove(i);
                        for(int j = i; j < sz-1; j++){
                                num2 = nums.get(j);
                                nums.remove(j);
                                for(char op : ops){
                                        double temp1 = 0, temp2 = 0;
                                        switch(op){
                                                case '+':
                                                        temp1 = num1.num + num2.num;
                                                        temp2 = num2.num + num1.num;
                                                        break; 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
                                                case '-':
                                                        temp1 = num1.num - num2.num;
                                                        temp2 = num2.num - num1.num;
                                                        break;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                                                case '*':
                                                        temp1 = num1.num * num2.num;
                                                        temp2 = num2.num * num1.num;
                                                        break;
                                                case '/':
                                                        temp1 = num1.num / num2.num;
                                                        temp2 = num2.num / num1.num;
                                                        break;. 鍥磋鎴戜滑@1point 3 acres
                                                case '^':. 1point 3acres 璁哄潧
                                                        temp1 = Math.pow(num1.num, num2.num);
                                                        temp2 = Math.pow(num2.num, num1.num);
                                                        break;
                                               
                                        }
                                        nums.add(new numWithFormula(temp1, "(" + num1.formula + op + num2.formula + ")"));
                                        helper(nums, ret);
. 鍥磋鎴戜滑@1point 3 acres                                        nums.remove(nums.size() - 1);
                                        nums.add(new numWithFormula(temp2, "(" + num2.formula + op + num1.formula + ")"));
                                        helper(nums, ret);
                                        nums.remove(nums.size() - 1);
                                }
                                nums.add(j, num2);
                        }
                        nums.add(i, num1);
                }
        }
       
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int[] nums = new int[]{2,5,7,11};
                game_24 g = new game_24();
                List<String> ret = g.get_formulas(nums);
                for(String s : ret){
                        System.out.println(s);
.1point3acres缃                }
        }
}. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
回复 支持 反对

使用道具 举报

returning 发表于 2016-1-10 12:29:02 | 显示全部楼层
ymqytw 发表于 2016-1-8 12:39
之前写的,不知道还有什么更好的方法吗?

import java.util.*;

如果不考虑合并数字的情况(比如1,2,3,4可以考虑数字12),那么这个代码好像是对的,但是感觉效率不高啊,而且似乎没有考虑permutation。实际上因为24点只有4个数字,是不是可以考虑缓存所有的结果,比如,把{1,2,4}3个数字所有可能算出的结果缓存起来。所以我可能这样写代码:
基本思路是沿用permutation的code,每次把一个数字置换到当前第一个位置,然后算剩下数字可能组成的所有结果,并且把结果存起来。根据剩下数字的结果和当前数字,就可以算出当前所有结果。例子(基本沿用lc 上permutation的code),对数字1,2,3,4:
假设当前第一个数字是2,考察第二个index,把数字3置换到第二个index,,所有

.鐣欏璁哄潧-涓浜-涓夊垎鍦
补充内容 (2016-1-10 12:31):.鏈枃鍘熷垱鑷1point3acres璁哄潧
所以现在前两位是2和3,计算剩下1和4所有可能的结果,然后和第二位3的结果结合,就可以算出[3] [1,4]所有的结果。
.1point3acres缃
补充内容 (2016-1-10 13:21):
这个思路有问题,lz原来的思路是对的。关键是,如何遍历(A+B)*(C+D)这种形式。而且这题其实很难做cache存储以前的计算结果。这是因为,假设已有AB计算结果,加入C的结果不能直接从AB结果得到。
回复 支持 反对

使用道具 举报

Iancss 发表于 2016-2-22 12:49:08 | 显示全部楼层
Hi, LZ MapReduce求连通分量,你当时是怎么做的?还有第二问BFS是指从0开始每一轮加水,直到P吗?
回复 支持 反对

使用道具 举报

 楼主| ymqytw 发表于 2016-2-29 10:19:13 | 显示全部楼层
Iancss 发表于 2016-2-22 12:49
Hi, LZ MapReduce求连通分量,你当时是怎么做的?还有第二问BFS是指从0开始每一轮加水,直到P吗?
. 1point 3acres 璁哄潧
LZ当时第一轮是自己想的一个方法用的DHT,感觉做的不好,效率不高。烙印也不给提示,总是摇着头说Yes。最后结束时问他,他说想要考MR。
第二问:是的
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-4 18:12

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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