由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Citadel面经+分享奇葩经历
相关主题
subsetstd::unordered_map 和 Java的Hashmap有啥米区别
发几个面经(7) Google 电面+onsite新鲜Amazon面经
AMAZON onsite 3月面经问几个关于hash, map, set的问题
问一个G家面试题上个Yahoo电面面经, 给恶心坏了。。
Second round phone interview with eBayamz 和 two sigma 面经
Bloomberg的电面 希望对你有用兼攒rpindeed公司的一道coding contest题
一道算法题请教个面试题, tree和hashmap的区别
几个Java面试题 (转载)Box 2 hour coding exercise
相关话题的讨论汇总
话题: int话题: routes话题: new话题: charx话题: biginteger
进入JobHunting版参与讨论
1 (共1页)
Z**********4
发帖数: 528
1
一面:
给一个电话号码盘,就是跟手机上一样。
然后有一个国际象棋的马在1的位置,问有多少中路径可以刚好十步跳到9. 注意*跟#不
用考虑,但是得考虑0.
跳法就是1可以跳到6, 6可以跳到0, 0也可以跳到4, 4跳到9。
递归解决。
onsite
1. boggle的游戏。类似于leetcode的wordsearch。唯一的区别是,最好把dictionary
里面的单词放入trie里面,这样
匹配的时候会快点。
2. 聊工作经验。面试官是个老美,声音小,语速快。
感觉对我的经验不是很感兴趣。
并且也没有问code问题。
问了一些宽泛的问题,比如如果要load 1million records到内存,用什么数据结构。
我答看需要执行什么query。如果类似于找到exact matched record就用hash。如果
是找类似于满足一定大小关系的records,应该用ordered map。他很不满意,也不知道
该怎么回答了。但是很确定会挂了。
果然他问了30分钟以后说,你还有什么问题,问吧。
随便问了几个问题,被告知等待。他去叫下一个面试官。
正打算换换脑子,hr过来说,不好意思,下面的人有会议,you are free to go。
于是大家都不想搞得太尴尬,我就说听起来不错。这就结束啦。
n****e
发帖数: 2401
2
哈哈,秒据了

dictionary

【在 Z**********4 的大作中提到】
: 一面:
: 给一个电话号码盘,就是跟手机上一样。
: 然后有一个国际象棋的马在1的位置,问有多少中路径可以刚好十步跳到9. 注意*跟#不
: 用考虑,但是得考虑0.
: 跳法就是1可以跳到6, 6可以跳到0, 0也可以跳到4, 4跳到9。
: 递归解决。
: onsite
: 1. boggle的游戏。类似于leetcode的wordsearch。唯一的区别是,最好把dictionary
: 里面的单词放入trie里面,这样
: 匹配的时候会快点。

d******8
发帖数: 2191
3
good lesson, good luck!

dictionary

【在 Z**********4 的大作中提到】
: 一面:
: 给一个电话号码盘,就是跟手机上一样。
: 然后有一个国际象棋的马在1的位置,问有多少中路径可以刚好十步跳到9. 注意*跟#不
: 用考虑,但是得考虑0.
: 跳法就是1可以跳到6, 6可以跳到0, 0也可以跳到4, 4跳到9。
: 递归解决。
: onsite
: 1. boggle的游戏。类似于leetcode的wordsearch。唯一的区别是,最好把dictionary
: 里面的单词放入trie里面,这样
: 匹配的时候会快点。

G******n
发帖数: 572
4
第一题怎么做?
G******n
发帖数: 572
5
还有lz是在哪申请的?

dictionary

【在 Z**********4 的大作中提到】
: 一面:
: 给一个电话号码盘,就是跟手机上一样。
: 然后有一个国际象棋的马在1的位置,问有多少中路径可以刚好十步跳到9. 注意*跟#不
: 用考虑,但是得考虑0.
: 跳法就是1可以跳到6, 6可以跳到0, 0也可以跳到4, 4跳到9。
: 递归解决。
: onsite
: 1. boggle的游戏。类似于leetcode的wordsearch。唯一的区别是,最好把dictionary
: 里面的单词放入trie里面,这样
: 匹配的时候会快点。

h**********w
发帖数: 39
6
lz最近发面经好多,赞一个,rp+1
v***0
发帖数: 5096
7
这个公司我当年拒过两次,一次intern一次full time
一直有说法公司文化有问题,看来当年选择没错。

dictionary

【在 Z**********4 的大作中提到】
: 一面:
: 给一个电话号码盘,就是跟手机上一样。
: 然后有一个国际象棋的马在1的位置,问有多少中路径可以刚好十步跳到9. 注意*跟#不
: 用考虑,但是得考虑0.
: 跳法就是1可以跳到6, 6可以跳到0, 0也可以跳到4, 4跳到9。
: 递归解决。
: onsite
: 1. boggle的游戏。类似于leetcode的wordsearch。唯一的区别是,最好把dictionary
: 里面的单词放入trie里面,这样
: 匹配的时候会快点。

Z**********4
发帖数: 528
8
谢谢:)

【在 d******8 的大作中提到】
: good lesson, good luck!
:
: dictionary

Z**********4
发帖数: 528
9
对啊 人生完整啦!

【在 n****e 的大作中提到】
: 哈哈,秒据了
:
: dictionary

v***0
发帖数: 5096
10
另外这个公司的package也一般。

【在 v***0 的大作中提到】
: 这个公司我当年拒过两次,一次intern一次full time
: 一直有说法公司文化有问题,看来当年选择没错。
:
: dictionary

相关主题
Bloomberg的电面 希望对你有用兼攒rpstd::unordered_map 和 Java的Hashmap有啥米区别
一道算法题新鲜Amazon面经
几个Java面试题 (转载)问几个关于hash, map, set的问题
进入JobHunting版参与讨论
Z**********4
发帖数: 528
11
递归。暴力就可以。
但是如果它要问第100步刚好走到9估计就不行了。
感觉可以dp

【在 G******n 的大作中提到】
: 第一题怎么做?
Z**********4
发帖数: 528
12
哈哈。谢谢。
就是想赞人品~~

【在 h**********w 的大作中提到】
: lz最近发面经好多,赞一个,rp+1
Z**********4
发帖数: 528
13
给力啊~
佩服。

【在 v***0 的大作中提到】
: 这个公司我当年拒过两次,一次intern一次full time
: 一直有说法公司文化有问题,看来当年选择没错。
:
: dictionary

v***0
发帖数: 5096
14
这种雇写手写review的公司想来也不是什么好地方
“Very interesting hedge fund”
Software Developer (Former Employee) New York, NY
Pros – Salary, benefits are exceptional; work with the latest technologies;
flexible work arrangements; growing company;
Cons – None really -- be prepared to work hard, but have fun because the wo
rk is so amazing;
Advice to Senior Management – Don't change anything -- it's a good work env
ironment -- rewarding personally and economically
Yes, I would recommend this company to a friend – I'm optimistic about the
outlook for this company

【在 Z**********4 的大作中提到】
: 给力啊~
: 佩服。

v***0
发帖数: 5096
15
连老婆都不让怀孕。
Cons – See the title. A new hire passed all the exams and get an official o
ffer from Hong Kong office. The new hire then let them know his wife is preg
nant since he needs to ask some information. After knowing that, Citadel too
k the offer back with the reason that they lost the confidence of the new hi
re.

technologies;
wo
env
the

【在 v***0 的大作中提到】
: 这种雇写手写review的公司想来也不是什么好地方
: “Very interesting hedge fund”
: Software Developer (Former Employee) New York, NY
: Pros – Salary, benefits are exceptional; work with the latest technologies;
: flexible work arrangements; growing company;
: Cons – None really -- be prepared to work hard, but have fun because the wo
: rk is so amazing;
: Advice to Senior Management – Don't change anything -- it's a good work env
: ironment -- rewarding personally and economically
: Yes, I would recommend this company to a friend – I'm optimistic about the

h*******e
发帖数: 1377
16
店面是dp阿,rebecca9的微软面经里面有的 算法复杂度
O(stepNum * 10)

【在 Z**********4 的大作中提到】
: 递归。暴力就可以。
: 但是如果它要问第100步刚好走到9估计就不行了。
: 感觉可以dp

m*****k
发帖数: 731
17
why?
递归都写出来了, 多少步不就是个输入参数么?
我跑了跑,
reach('1', '9', 10);
返回
1-->8-->3-->4-->0-->6-->7-->#-->5-->*-->9
reach('1', '9', 100);
无解。

【在 Z**********4 的大作中提到】
: 递归。暴力就可以。
: 但是如果它要问第100步刚好走到9估计就不行了。
: 感觉可以dp

G******n
发帖数: 572
18
#不考虑。
无解是说超过time limit了?

【在 m*****k 的大作中提到】
: why?
: 递归都写出来了, 多少步不就是个输入参数么?
: 我跑了跑,
: reach('1', '9', 10);
: 返回
: 1-->8-->3-->4-->0-->6-->7-->#-->5-->*-->9
: reach('1', '9', 100);
: 无解。

G******n
发帖数: 572
19
哦我还以为是数学题。。我来跑一跑,你的答案是多少

【在 Z**********4 的大作中提到】
: 递归。暴力就可以。
: 但是如果它要问第100步刚好走到9估计就不行了。
: 感觉可以dp

Z**********4
发帖数: 528
20
GodofPen说的对,
我说不行了就是说递归太慢 100 肯定run 死了。
# *的确不能算。

【在 m*****k 的大作中提到】
: why?
: 递归都写出来了, 多少步不就是个输入参数么?
: 我跑了跑,
: reach('1', '9', 10);
: 返回
: 1-->8-->3-->4-->0-->6-->7-->#-->5-->*-->9
: reach('1', '9', 100);
: 无解。

相关主题
上个Yahoo电面面经, 给恶心坏了。。请教个面试题, tree和hashmap的区别
amz 和 two sigma 面经Box 2 hour coding exercise
indeed公司的一道coding contest题L店面
进入JobHunting版参与讨论
Z**********4
发帖数: 528
21
我忘了。。六百多好像。。

【在 G******n 的大作中提到】
: 哦我还以为是数学题。。我来跑一跑,你的答案是多少
t**********h
发帖数: 2273
22
尼玛,这不算秒据吧,最多算面到一半被赶出去了。这个很正常,很多很吊的公司都这样

【在 n****e 的大作中提到】
: 哈哈,秒据了
:
: dictionary

y***n
发帖数: 1594
23
其实我觉得这样好,大家都不要浪费时间,像相亲一样,不行就走。
m*****k
发帖数: 731
24
public static int reach(char start, char end , int steps){
HashMap keyboard = new HashMap<>();
keyboard.put('1', new int[]{0,0});
keyboard.put('2', new int[]{0,1});
keyboard.put('3', new int[]{0,2});
keyboard.put('4', new int[]{1,0});
keyboard.put('5', new int[]{1,1});
keyboard.put('6', new int[]{1,2});
keyboard.put('7', new int[]{2,0});
keyboard.put('8', new int[]{2,1});
keyboard.put('9', new int[]{2,2});
keyboard.put('*', new int[]{3,0});
keyboard.put('0', new int[]{3,1});
keyboard.put('#', new int[]{3,2});
return reach( start, end , steps, keyboard, "");
}

private static int reach(char start, char end, int steps,
HashMap keyboard, String path) {
if(steps == 0){

if(start==end){
System.out.println(path);
System.out.println();
return 1;
}
else{
return 0;
}

}
else{
int[] startPosition = keyboard.get(start);
int startX = startPosition[0];
int startY = startPosition[1];

int routes = 0;
for(char charX: keyboard.keySet()){
if(path.contains(charX+"")){
continue;
}
int[] position = keyboard.get(charX);
int x = position[0];
int y = position[1];

if(Math.abs(startX - x)==2 && Math.abs(startY - y)==1 || Math.abs
(startX - x)==1 && Math.abs(startY - y)==2 ){
int temp = reach( charX, end, steps - 1, keyboard, path.
equals("")? start + "-->" + charX : path + "-->" + charX);
routes+=temp;
}
}
return routes;
}

}
public void testReach(){
int routes = InterviewQs.reach('1', '9', 6);
System.out.println(routes);
routes = InterviewQs.reach('1', '9', 100);
System.out.println(routes);
}

一秒都不到。
# * does not matter at all, 不需要注释掉就行了。
看结果吧:
1-->6-->7-->#-->5-->*-->9
1
0
无解表示不可能100步从1到9
# * 注释掉后10步从1到9也无解,
你们有解的话贴个路径出来看看吧,我看看我哪儿错了。

【在 Z**********4 的大作中提到】
: GodofPen说的对,
: 我说不行了就是说递归太慢 100 肯定run 死了。
: # *的确不能算。

m*****n
发帖数: 2152
25
显然用dp最快(2*N^2),递归的话是O(2^N);
int main()
{
vector > table{
{4,6},{6,8},{7,9},{4,8},{0,3,9},
{},{0,1,7},{2,6},{1,3},{2,4}
};
vector count(10, 0);
count[1] = 1;
for(int ipos=1; ipos<11; ipos++)
{
vector temp(10, 0);
for(int idigit=0; idigit<10; idigit++)
{
for_each(table[idigit].begin(), table[idigit].end(),
[&](int elem){temp[idigit]+=count[elem];});
}
count = temp;
}
cout << "total count = " << count[9] << endl;
}
答案是 696次。
Z**********4
发帖数: 528
26
我看了下,的确没啥问题。
我当时没有run 100了。。他要求9我就不想自找麻烦看看100可不可以搞定。。
不过也很惊奇,你这个竟然没有超时。你要不要试试看1000会不会超时?

【在 m*****k 的大作中提到】
: public static int reach(char start, char end , int steps){
: HashMap keyboard = new HashMap<>();
: keyboard.put('1', new int[]{0,0});
: keyboard.put('2', new int[]{0,1});
: keyboard.put('3', new int[]{0,2});
: keyboard.put('4', new int[]{1,0});
: keyboard.put('5', new int[]{1,1});
: keyboard.put('6', new int[]{1,2});
: keyboard.put('7', new int[]{2,0});
: keyboard.put('8', new int[]{2,1});

Z**********4
发帖数: 528
27
这个办法果然代码简洁很多。
有个问题
那个foreach的后面的[&]是什么意思?意思是函数地址?

【在 m*****n 的大作中提到】
: 显然用dp最快(2*N^2),递归的话是O(2^N);
: int main()
: {
: vector > table{
: {4,6},{6,8},{7,9},{4,8},{0,3,9},
: {},{0,1,7},{2,6},{1,3},{2,4}
: };
: vector count(10, 0);
: count[1] = 1;
: for(int ipos=1; ipos<11; ipos++)

m*****n
发帖数: 2152
28
跳100次的是 4090112886582542336 次,跳1000次溢出了。

【在 Z**********4 的大作中提到】
: 我看了下,的确没啥问题。
: 我当时没有run 100了。。他要求9我就不想自找麻烦看看100可不可以搞定。。
: 不过也很惊奇,你这个竟然没有超时。你要不要试试看1000会不会超时?

m*****n
发帖数: 2152
29
lambda 函数,取引用,C++11的新功能。

【在 Z**********4 的大作中提到】
: 这个办法果然代码简洁很多。
: 有个问题
: 那个foreach的后面的[&]是什么意思?意思是函数地址?

Z**********4
发帖数: 528
30
哈哈,这样这个foreach就跟
underscore.js里面的_.each一样差不多啦!
有意思。

【在 m*****n 的大作中提到】
: lambda 函数,取引用,C++11的新功能。
相关主题
一道FB的followup 问题发几个面经(7) Google 电面+onsite
来讨论个uber的电面题AMAZON onsite 3月面经
subset问一个G家面试题
进入JobHunting版参与讨论
Z**********4
发帖数: 528
31
那我觉得这一题用递归解也是完全可以达。

【在 m*****n 的大作中提到】
: 跳100次的是 4090112886582542336 次,跳1000次溢出了。
h*******e
发帖数: 1377
32
mark

【在 m*****n 的大作中提到】
: 显然用dp最快(2*N^2),递归的话是O(2^N);
: int main()
: {
: vector > table{
: {4,6},{6,8},{7,9},{4,8},{0,3,9},
: {},{0,1,7},{2,6},{1,3},{2,4}
: };
: vector count(10, 0);
: count[1] = 1;
: for(int ipos=1; ipos<11; ipos++)

m*****n
发帖数: 2152
33
是啊,现在C++,java,python是越来越像了。

【在 Z**********4 的大作中提到】
: 哈哈,这样这个foreach就跟
: underscore.js里面的_.each一样差不多啦!
: 有意思。

m*****k
发帖数: 731
34
请教一下,跳100次的是 4090112886582542336 次 是啥意思啊?
696又是咋回事?

【在 m*****n 的大作中提到】
: 跳100次的是 4090112886582542336 次,跳1000次溢出了。
m*****k
发帖数: 731
35
啥六百多啊?
跳10步从1到9有六百多不同跳法?
贴个路径出来看看好不?

【在 Z**********4 的大作中提到】
: 我忘了。。六百多好像。。
m*****k
发帖数: 731
36
long s = System.currentTimeMillis();
int routes = reach('1', '9', 1000);
System.out.println(routes);
long e = System.currentTimeMillis();
System.out.println(e - s);
返回
0
8
8毫秒

【在 Z**********4 的大作中提到】
: 我看了下,的确没啥问题。
: 我当时没有run 100了。。他要求9我就不想自找麻烦看看100可不可以搞定。。
: 不过也很惊奇,你这个竟然没有超时。你要不要试试看1000会不会超时?

t*******e
发帖数: 274
37
没看懂这个table是什么意思? 这种解法有java version的么?c++实在苦手

【在 m*****n 的大作中提到】
: 显然用dp最快(2*N^2),递归的话是O(2^N);
: int main()
: {
: vector > table{
: {4,6},{6,8},{7,9},{4,8},{0,3,9},
: {},{0,1,7},{2,6},{1,3},{2,4}
: };
: vector count(10, 0);
: count[1] = 1;
: for(int ipos=1; ipos<11; ipos++)

t*******e
发帖数: 274
38
终于知道dp那个解法怎么得出696种路径了,它允许一个数字键被多次访问。
部分解如下:
1-->8-->1-->8-->1-->8-->3-->8-->3-->4-->9
1-->8-->1-->8-->1-->8-->1-->6-->0-->4-->9
1-->8-->1-->8-->1-->8-->1-->6-->7-->2-->9
1-->8-->1-->8-->1-->8-->1-->8-->3-->4-->9

【在 m*****k 的大作中提到】
: 啥六百多啊?
: 跳10步从1到9有六百多不同跳法?
: 贴个路径出来看看好不?

m*****k
发帖数: 731
39
OMG!
谢谢你!
那就把continue注释掉,
的确得出696了。
now run 100 does take too long.

【在 m*****k 的大作中提到】
: long s = System.currentTimeMillis();
: int routes = reach('1', '9', 1000);
: System.out.println(routes);
: long e = System.currentTimeMillis();
: System.out.println(e - s);
: 返回
: 0
: 8
: 8毫秒

Z**********4
发帖数: 528
40
兄弟 难为你了
我忘了提醒同一个数字键可以被多次访问。。

【在 m*****k 的大作中提到】
: OMG!
: 谢谢你!
: 那就把continue注释掉,
: 的确得出696了。
: now run 100 does take too long.

相关主题
问一个G家面试题一道算法题
Second round phone interview with eBay几个Java面试题 (转载)
Bloomberg的电面 希望对你有用兼攒rpstd::unordered_map 和 Java的Hashmap有啥米区别
进入JobHunting版参与讨论
Z**********4
发帖数: 528
41
最后还是得上dp。

【在 m*****k 的大作中提到】
: OMG!
: 谢谢你!
: 那就把continue注释掉,
: 的确得出696了。
: now run 100 does take too long.

m*****k
发帖数: 731
42
那就再加个map存中间结果不就dp了么。
public static BigInteger reach(char start, char end, int steps) {
Map keyboard = new TreeMap<>();
Map pathsMap = new HashMap<>();
keyboard.put('1', new int[] { 0, 0 });
keyboard.put('2', new int[] { 0, 1 });
keyboard.put('3', new int[] { 0, 2 });
keyboard.put('4', new int[] { 1, 0 });
keyboard.put('5', new int[] { 1, 1 });
keyboard.put('6', new int[] { 1, 2 });
keyboard.put('7', new int[] { 2, 0 });
keyboard.put('8', new int[] { 2, 1 });
keyboard.put('9', new int[] { 2, 2 });
//keyboard.put('*', new int[]{3,0});
keyboard.put('0', new int[] { 3, 1 });
//keyboard.put('#', new int[]{3,2});
return reach(start, end, steps, keyboard, "", pathsMap);
}
private static BigInteger reach(char start, char end, int steps, Map<
Character, int[]> keyboard, String path,
Map pathsMap) {
if (steps == 0) {
if (start == end) {
System.out.println(path);
System.out.println();
return BigInteger.ONE;
} else {
return BigInteger.ZERO;
}
} else {
String key = start + "-" + end + "-" + steps;
BigInteger paths = pathsMap.get(key);
if (paths != null) {
return paths;
}
int[] startPosition = keyboard.get(start);
int startX = startPosition[0];
int startY = startPosition[1];
BigInteger routes = BigInteger.ZERO;
for (char charX : keyboard.keySet()) {
if (path.contains(charX + "")) {
//continue;
}
int[] position = keyboard.get(charX);
int x = position[0];
int y = position[1];
if (Math.abs(startX - x) == 2 && Math.abs(startY - y) == 1 |
| Math.abs(startX - x) == 1
&& Math.abs(startY - y) == 2) {
BigInteger temp = reach(charX, end, steps - 1, keyboard,
path.equals("") ? start + "-->" + charX
: path
+ "-->" + charX, pathsMap);
routes = routes.add(temp);
}
}
pathsMap.put(key, routes);
return routes;
}
}
public void testReach() {
BigInteger routes =reach('1', '9', 10);
System.out.println(routes);
routes = InterviewQs.reach('1', '9', 100);
System.out.println(routes);
routes = InterviewQs.reach('1', '9', 1000);
System.out.println(routes);
}
得到
696
161326776045551861650639200341458944
5755469127911337978907905189388895948285161975385919087010608542550728215754
3098806982869783933438688666317090663581570571220159209666265828797940405008
0195814408998009258564884590288989879453462828464073845025495674738321705016
1407076971753536452865941814100676939481337447683253416477183189051839890694
6545293067858343682376465068439420004636984010558406656
速度还ok啦
m*****k
发帖数: 731
43
请教一下
>>dp(2*N^2),why?
为何不是 N*N*steps, where N = number of digits, here N = 10
2 哪儿来的?
>>递归的话是O(2^N);
为何不是N^steps , where N = number of digits
2 哪儿来的?

【在 t*******e 的大作中提到】
: 没看懂这个table是什么意思? 这种解法有java version的么?c++实在苦手
m*****k
发帖数: 731
44
int 算100时不够用吧

【在 m*****n 的大作中提到】
: 显然用dp最快(2*N^2),递归的话是O(2^N);
: int main()
: {
: vector > table{
: {4,6},{6,8},{7,9},{4,8},{0,3,9},
: {},{0,1,7},{2,6},{1,3},{2,4}
: };
: vector count(10, 0);
: count[1] = 1;
: for(int ipos=1; ipos<11; ipos++)

m*****k
发帖数: 731
45
{4,6},{6,8},{7,9},{4,8},{0,3,9},
{},{0,1,7},{2,6},{1,3},{2,4}
啥意思啊?肯定是从马的跳步出来的但就是看不懂,大神点拨一二?

【在 Z**********4 的大作中提到】
: 这个办法果然代码简洁很多。
: 有个问题
: 那个foreach的后面的[&]是什么意思?意思是函数地址?

1 (共1页)
进入JobHunting版参与讨论
相关主题
Box 2 hour coding exerciseSecond round phone interview with eBay
L店面Bloomberg的电面 希望对你有用兼攒rp
一道FB的followup 问题一道算法题
来讨论个uber的电面题几个Java面试题 (转载)
subsetstd::unordered_map 和 Java的Hashmap有啥米区别
发几个面经(7) Google 电面+onsite新鲜Amazon面经
AMAZON onsite 3月面经问几个关于hash, map, set的问题
问一个G家面试题上个Yahoo电面面经, 给恶心坏了。。
相关话题的讨论汇总
话题: int话题: routes话题: new话题: charx话题: biginteger