一亩三分地论坛

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

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

G家SDET电话加面

[复制链接] |试试Instant~ |关注本帖
xuepanchen 发表于 2015-5-8 02:59:28 | 显示全部楼层 |阅读模式

2015(4-6月) 码农类 硕士 全职@Google - 网上海投 - 技术电面 |Otherfresh grad应届毕业生

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

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

x
先说一下背景:第三次来放G家面经了,之前去了ONSITE面的是SDE,之后通知我说虽然没过HC,但觉得我还行,可能比较适合SDET,问我有没有兴趣最后再电面两轮SDET,当然就答应了。
. 1point 3acres 璁哄潧
第一轮:
一个比较年长的面试官,迟到了五分钟,一开始只是电话打来没进GOOGLE DOC,后来开始出题了我说能不能把题目同时也打在DOC里,这才进了DOC。
1. 一个程序,每次给相同的INPUT,但是会得到不同的OUTPUT,问你可能是什么原因。
类似CTCI上的原题,一开始有点紧张,这题答的一般。
2. 给你一个程序,输入是一个单词,要求输出所有能用这个单词中的一些字母重新排列能得到的字典里的单词,比如给你WEDNESDAY,输出应该是{DAY,SAY,SAW,SEDAN,...}。问我要怎么测试这个程序。
我说测试的难点在于如何得到EXPECTED OUTPUT,得到后就用EXPECTED OUTPUT去和真的OUTPUT比较,看看是不是一样。然后面试官问那怎么得到EXPECTED OUTPUT,我心想,这不就和设计本来这个程序一样了嘛。。。我就说取所给你这个单词所有字母集合的每个子集,然后看每个子集中所有的PERMUTATION是不是在字典里,存在的就加到EXPECTED OUTPUT里面。面试官又问那用什么字典,我就楞了一下,说就用我们普通使用的字典,会很大,这也就是为什么我一开始说最难的部分是找EXPECTED OUTPUT。
3. LEETCODE 3SUM 小变形,每个三个数的组合中三个数之和要小于给你的TARGET NUMBER,找所有满足要求的组合数量. 鍥磋鎴戜滑@1point 3 acres
我就快速地写了一下。我用的是C++,是把函数包装在一个CLASS里面,就和LEETCODE上一样。然后面试官问我为啥要用CLASS,我又楞了一下,我说用CLASS是个好的符合OOD的编程习惯。面试官又问那好在哪里呢?是不是不用CLASS就没法调用你这个函数了?我说当然不是,用CLASS方便以后继承时候可以代码重用,面试官也就没说什么。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
4. 用RAND2()去实现RAND6()。
也是CTCI类似的原题。我一开始给出的方法有点问题,感觉面试官很不耐烦,面试时间四十分钟不到就打断我说时间不多了,你问问题吧。奇葩的地方来了,我就问你最喜欢GOOGLE的什么地方。面试官突然说,你问这个问题是因为你真的想知道,还是只是觉得这是个好问题。。。我说当然是因为我想知道,他就大概说了几句。他说的时候我把函数改了一下,等他说完我就说我又把刚才RAND6()改了一下,现在应该对了,你看一下。他估计也就瞄了一眼没说什么。
最后就说感谢我的参与,还没等我说完BYEBYE就把电话给挂了。。。
. visit 1point3acres.com for more.
第二轮:
一个年轻的面试官,还是迟到了五分钟。
1. 先上来简单问了一下做过的一个PROJECT。. 1point 3acres 璁哄潧
2. 给你两个用STRING表示的INT,让你写加法。写完之后问你用那些TESTCASE。. 1point 3acres 璁哄潧
3. 这次是用STRING表示的两个DECIMAL,就是会有小数部分,同样让你写加法。我就是把整数和小数分开处理,然后都是调用上一个实现的方法。之后同样是设计TESTCASE。一开始没有考虑到如果输入不合法,比如一个数有多个小数点什么的,提醒之后我说要先判断一下两个输入是不是都合法。
最后还是简单的问了问题,小哥还挺热情地祝了我好运什么的,也就结束了,时间也只有四十分钟,感觉大家应该都挺忙的样子。


感觉第一面面的一般,有点紧张,第二面还是不错的。还是祝自己好运吧,也祝大家都有好运。DREAM BIG,KEEP WALKING

评分

4

查看全部评分

xman 发表于 2015-12-25 11:04:44 | 显示全部楼层
rand2() -> rand6
先(2 * rand2() + rand2())产生rand4(),0~3, 然后 2 * rand4() + rand2() 产生0~7 取小于6的数,关键是要保证每个数概率均等。
int rand6(){
        while(true){
                int rand4 = 2 * rand2() + rand2();  //  0 ~ 3, equally likely.鏈枃鍘熷垱鑷1point3acres璁哄潧
                int rand = 2 * rand4 + rand2();  // 0+0, 0+1, 2+0, 2+1, 4+0,4+1, 6+0, 6+1.
                if(rand < 6){
                        return rand;. visit 1point3acres.com for more.
                }
        }


}
回复 支持 2 反对 0

使用道具 举报

woshiee123 发表于 2015-6-5 04:15:39 | 显示全部楼层
求问这种 知道一个random 求另一个random 的规律  
回复 支持 反对

使用道具 举报

 楼主| xuepanchen 发表于 2015-6-5 07:55:40 | 显示全部楼层
woshiee123 发表于 2015-6-5 04:15
求问这种 知道一个random 求另一个random 的规律

你可以看一下Cracking the Code Interview里面的原题
回复 支持 反对

使用道具 举报

stevenlordiam 发表于 2015-6-13 06:49:26 | 显示全部楼层
1. 一个程序,每次给相同的INPUT,但是会得到不同的OUTPUT,问你可能是什么原因。
. more info on 1point3acres.com
恕我愚钝,是因为random 或者shuffle 函数么。。。求楼主指点是CC150哪题,好像没有印象有类似的  
回复 支持 反对

使用道具 举报

 楼主| xuepanchen 发表于 2015-6-13 09:27:32 | 显示全部楼层
stevenlordiam 发表于 2015-6-13 06:49
1. 一个程序,每次给相同的INPUT,但是会得到不同的OUTPUT,问你可能是什么原因。

恕我愚钝,是因为rand ...

我是觉得和TEST那章里面的第二题挺像的,就是给你一个程序,这个程序每次都在不同的地方CRASH,问你原因是什么。

我能想到的我这道题的答案,一是其中有随机数生成,二是变量没有初始化,导致每次随机分配的值不同,三是有external dependencies,比如某个参数和当前的系统时间有关,或是依赖其他某个程序,所以每次运行输出都不一样

欢迎讨论其他可能的原因哈
回复 支持 反对

使用道具 举报

stevenlordiam 发表于 2015-6-13 13:21:34 | 显示全部楼层
xuepanchen 发表于 2015-6-13 09:27. 1point 3acres 璁哄潧
我是觉得和TEST那章里面的第二题挺像的,就是给你一个程序,这个程序每次都在不同的地方CRASH,问你原因 ...

多谢楼主解答,现在懂了 ~
回复 支持 反对

使用道具 举报

ossacomu 发表于 2015-6-14 11:35:21 | 显示全部楼层
举个例子,比如strtok()
回复 支持 反对

使用道具 举报

UmassJin 发表于 2015-6-14 12:07:23 | 显示全部楼层
谢谢楼主分享经验,麻烦楼主能说一下用”RAND2()去实现RAND6()“是在CICT哪一类吗 没有找到。。。麻烦啦
回复 支持 反对

使用道具 举报

 楼主| xuepanchen 发表于 2015-6-14 12:11:23 | 显示全部楼层
UmassJin 发表于 2015-6-14 12:07
谢谢楼主分享经验,麻烦楼主能说一下用”RAND2()去实现RAND6()“是在CICT哪一类吗 没有找到。。。麻烦啦

你好,是CTCI第五版的17.11题哈。书上原题是用RAND5()去实现RAND7() :D
回复 支持 反对

使用道具 举报

UmassJin 发表于 2015-6-16 02:42:03 | 显示全部楼层
xuepanchen 发表于 2015-6-14 12:11. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
你好,是CTCI第五版的17.11题哈。书上原题是用RAND5()去实现RAND7() :D

谢谢楼主!找到啦!:)
回复 支持 反对

使用道具 举报

UmassJin 发表于 2015-6-16 02:42:12 | 显示全部楼层
xuepanchen 发表于 2015-6-14 12:11. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
你好,是CTCI第五版的17.11题哈。书上原题是用RAND5()去实现RAND7() :D

谢谢楼主!找到啦!:)
回复 支持 反对

使用道具 举报

Nevermindeaf 发表于 2015-7-4 05:09:10 | 显示全部楼层
请问楼主一面第二题后来有找到正确的做法么?
回复 支持 反对

使用道具 举报

 楼主| xuepanchen 发表于 2015-7-13 09:17:05 | 显示全部楼层
Nevermindeaf 发表于 2015-7-4 05:09
请问楼主一面第二题后来有找到正确的做法么?
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
没有哎,主要是我都不知道面试官想要的是什么。。。
回复 支持 反对

使用道具 举报

likenisha 发表于 2015-12-26 02:16:13 | 显示全部楼层
字典那个是用字典树咯
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2016-2-1 23:54:00 | 显示全部楼层
xuepanchen 发表于 2015-6-13 09:27
我是觉得和TEST那章里面的第二题挺像的,就是给你一个程序,这个程序每次都在不同的地方CRASH,问你原因 ...

这个随机分配值应该只针对于c, or c++吧?
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2016-2-1 23:57:33 | 显示全部楼层
xman 发表于 2015-12-25 11:04
rand2() -> rand6
先(2 * rand2() + rand2())产生rand4(),0~3, 然后 2 * rand4() + rand2() 产生0~7  ...

这个是不是可以4 * rand4() + rand4()只取0-13, 这个好像是有规律的吧?
回复 支持 反对

使用道具 举报

bobzhang2004 发表于 2016-2-2 00:08:59 | 显示全部楼层
第二题{DAY,SAY,SAW,SEDAN,...}感觉是permutation和subset的结合啊,dfs找出所有的可能性,然后用一个trie实现的字典查找在不在字典中
回复 支持 反对

使用道具 举报

haifengc 发表于 2016-2-2 12:03:56 | 显示全部楼层
楼主后来通过了吗?
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-8 23:28

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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