一亩三分地论坛

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

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

狗跪经

[复制链接] |试试Instant~ |关注本帖
jaztsong 发表于 2016-11-10 06:46:26 | 显示全部楼层 |阅读模式

2016(10-12月) 码农类 博士 实习@Google - 内推 - 技术电面 |Fail其他

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

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

x
之前就知道要跪,但不知道跪得怎么惨
以前没想过找实习,10月份开会偶然遇到狗家员工。聊了一些research的东西,感觉投机就要了内推。想不到想不到,内推后立马HR就要求三周之内电面。那只能硬着上了。这几个星期刚好要赶12月的会议,白天做实验搞research,晚上抽时间看题(真心只能看了,只能争取见多点,没时间刷了)。然后今天就把自己人生首面交代了。
一面是白哥。上来寒暄几句就来题:
1. 给一些商品的数量K[]和价格P[],和手里总共有的钱B。要求输出所有把B花完的case。感觉有点像cc150里面那个分硬币的题目,找个那个思路给了recursive的解法,中间磕磕碰碰有几个bug都被指出来,最后一个大bug他提出来,我没反应过来,就这么过去了(takeaway:题一定得上手练啊,看了很多题,只能帮助我知道大致解法,但写起来又不一样了)
2. 还剩10多分钟,给了个test的题目。给一个void sort(float buf[], int n) ,如何写个test函数去测试。没见过这种题,就写了个最傻最天真的版本:把sort后的buf逐一check下是不是下一个小于上一个,如果是就return false。但小哥说信不信我一个反例干到你。我胡扯两句就拜拜了

二面应该是耐心的国人大哥,解释很耐心,但每题都花大量时间明白他的意思. 鍥磋鎴戜滑@1point 3 acres
1.有一个类似test的题。给我一段stringtranspose的代码,让我看为何无法编译。代码大致如下:
  1. char ** stringtranspose(char ** old){
  2.     char** new[3][3];
  3.     for(int i=0;i<3;i++)
    . Waral 鍗氬鏈夋洿澶氭枃绔,
  4.   for(int j=0;j<3;j++)
  5.     new[i][j] = old[j][i];. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  6.    return new;
  7. }
复制代码
他指出是new没法return,因为new的空间在stack上会被destroyed掉。然后问我c++两种分配内存方式,我太菜只知道malloc。然后之支支吾吾半天我也搞不出来就move on了。

2. void writer(vector<string> list, File *file) 和 reader(vector<string> * input, File *file) 直线两个函数,把string array写进文件,然后又读出来。被上一题暴击以后,我已经缴枪了。花了几分钟清楚这题的意图以后,开始给各种好不单纯好不做作的傻X例子,e.g.,用空格隔开。。。。还好大哥脾气好没砸电话,都给我丢反例了。后来终于想到写一个header,把所有string的length以逗号隔开放进去,然后换行开始输出所有string。大哥说行吧。然后follow up 如果想直接读出第i的string咋办,如果string有成千上万个,我这个方法就不高效了。想不出来求他hint,他表示拒绝说一hint我就都知道了。. Waral 鍗氬鏈夋洿澶氭枃绔,

总体感觉google的题还是得靠基本功,反应能力。下星期还得跪facebook。对自己的安慰,跪跪更健康. from: 1point3acres.com/bbs


评分

2

查看全部评分

本帖被以下淘专辑推荐:

鼓頔娜夫 发表于 2016-11-10 08:28:12 | 显示全部楼层
lz是去nips嘛
回复 支持 反对

使用道具 举报

 楼主| jaztsong 发表于 2016-11-10 08:43:25 | 显示全部楼层
. 1point 3acres 璁哄潧
我是做网络的,不是搞data的。
回复 支持 反对

使用道具 举报

zzgzzm 发表于 2016-11-10 11:36:01 | 显示全部楼层
jaztsong 发表于 2016-11-10 08:43. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
我是做网络的,不是搞data的。

二面1题:原题Line 02应该是"char new[3][3]"吧,不然首先类型就不匹配了。然后这个名字"new"在C++中是keyword,不能用于普通变量名。最后就是返回local variable address的问题了。因为local variable定义在stack上,出了scope以后它的memory就被释放了,所以函数返回的pointer所指向的就是一个corrupted/undefined的address. 其实最后一个并不是“编译”错误(有的ciompiler会给warning),而是使用错误。之前2个倒是真正意义上的“编译错误”。
将Line02改成“char** res = new char*[3];”,然后每个res[j] = new char[3]这样所以空间在heap (dynamic memory)上建立就可以了。
  1. char ** stringtranspose(char ** old) {
  2.     char** res = new char*[3];
  3.     for (int i = 0; i < 3; i++) res[i] = new char[3];
  4.     for(int i=0;i<3;i++)
  5.     for(int j=0;j<3;j++)
  6.      res[i][j] = old[j][i];
  7.    . more info on 1point3acres.com
  8.    return res;
  9. }
复制代码
回复 支持 反对

使用道具 举报

Andrewchentao48 发表于 2016-11-10 12:10:06 | 显示全部楼层
楼主面后多久收到据信的。。
回复 支持 反对

使用道具 举报

zzgzzm 发表于 2016-11-10 12:25:14 | 显示全部楼层
二面2题:这个好像类似Leetcode 271. Encode and Decode Strings. 其实思路和LZ的记录string length差不多。但这个follow-up要求直接读第i个string怎么也不可能O(1)时间啊。不知道interview的期待是什么?
请问这个“File”是指 C++ cstdio里的“FILE”吗?
回复 支持 反对

使用道具 举报

鼓頔娜夫 发表于 2016-11-10 12:32:30 | 显示全部楼层
jaztsong 发表于 2016-11-10 08:43
我是做网络的,不是搞data的。

看来十二月是会议的集中期 冒昧啦
回复 支持 反对

使用道具 举报

 楼主| jaztsong 发表于 2016-11-10 22:52:43 | 显示全部楼层
zzgzzm 发表于 2016-11-10 11:36. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
二面1题:原题Line 02应该是"char new[3][3]"吧,不然首先类型就不匹配了。然后这个名字"new"在C++中是ke ...
. 1point3acres.com/bbs
大侠厉害啊。感觉很像。但是他问我c++的内存分配方式的时候,我提到malloc和new,他说这两个是一样的,让我再想其他方式。所以就放弃用new的方法了。不知道是不是我没明白他的意思。
回复 支持 反对

使用道具 举报

 楼主| jaztsong 发表于 2016-11-10 22:53:29 | 显示全部楼层
Andrewchentao48 发表于 2016-11-10 12:10
楼主面后多久收到据信的。。

暂时没收到,估计快了吧。
回复 支持 反对

使用道具 举报

鼓頔娜夫 发表于 2016-11-10 22:54:30 | 显示全部楼层
jaztsong 发表于 2016-11-10 22:52.鏈枃鍘熷垱鑷1point3acres璁哄潧
大侠厉害啊。感觉很像。但是他问我c++的内存分配方式的时候,我提到malloc和new,他说这两个是一样的,让 ...

感觉面试官想问的是dynamic vs static, malloc和new都属于dynamic, 面试题中属于static
回复 支持 反对

使用道具 举报

 楼主| jaztsong 发表于 2016-11-10 22:56:12 | 显示全部楼层
zzgzzm 发表于 2016-11-10 12:25
二面2题:这个好像类似Leetcode 271. Encode and Decode Strings. 其实思路和LZ的记录string length差不多 ...

是标准的File。我后来想到,只要O(1)找到string的开始(header的结束)就可以了,他说是的。时间来不及了,我想到把header的长度放在开头。但脑子想到了,代码写错了(没练手的悲剧)。
回复 支持 反对

使用道具 举报

zzgzzm 发表于 2016-11-10 23:23:48 | 显示全部楼层
jaztsong 发表于 2016-11-10 22:52
大侠厉害啊。感觉很像。但是他问我c++的内存分配方式的时候,我提到malloc和new,他说这两个是一样的,让 ...

malloc和new都是在heap上allocate memory,都属于dynamic的,对于C++这种没有自动清理闲置内存的都需要手动清除,唯一的区别就是new必须调用class的constructor,而malloc不会。但这都属于一大类的。
面试官问的应该是另一类在stack上allocate memory,也就是local variable占用的内存.
一个更简化的例子就是下面的f()的a是在stack上,返回address有问题;g()的a 在heap上,可以返回address.
  1. int* f() { int a[3]; return a; }
  2. int* g() { int* a = new int[3]; return a; }
    . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
复制代码
看了这么多面经还真没有见到G家这么注重C++语言内存管理的。我只知道Bloomberg特别爱考C++. 这个是和LZ的背景有关吗?请问LZ面的是general SDE职位吗?
回复 支持 反对

使用道具 举报

zhan1612 发表于 2016-11-11 00:08:26 | 显示全部楼层
二面2题我说下我的思路大家看看对不对。 首先是两个pinter, 一个是目录的(left), 一个是内容的(设为right)。 并从file的开头开辟vector<string>行的空间。
left是当前第i个的开始位置也就是right,还有这个string的end位置或者长度都行。 然后left换行记录地i+1个的开始以及结束位置, 然后right这时指向的第i+1的位置。. 1point3acres.com/bbs

读取的时候找第i个的话, 就先去第i行, 然后的这个string的开始位置以及结束位置。

就是如果某个string特别长或者是这个file一行放不下长度跟结束位置。
回复 支持 反对

使用道具 举报

 楼主| jaztsong 发表于 2016-11-11 00:39:15 | 显示全部楼层
zzgzzm 发表于 2016-11-10 23:23
malloc和new都是在heap上allocate memory,都属于dynamic的,对于C++这种没有自动清理闲置内存的都需要手 ...

我一个搞无线网的,不知道为什么搞这些来问我(对大选结果不满意?哈哈 开玩笑)。不过我觉得你说的new的方法应该是对的。
回复 支持 反对

使用道具 举报

zzgzzm 发表于 2016-11-11 00:52:05 | 显示全部楼层
jaztsong 发表于 2016-11-11 00:39
我一个搞无线网的,不知道为什么搞这些来问我(对大选结果不满意?哈哈 开玩笑)。不过我觉得你说的new的 ...

深有体会~~~我是非IT界的码工,所以对背景也不很对路,但面试时又会当作在职的对待。。。只能现学现卖了,呵呵
回复 支持 反对

使用道具 举报

slaink 发表于 2016-11-12 00:42:05 | 显示全部楼层
zzgzzm 发表于 2016-11-10 23:23
malloc和new都是在heap上allocate memory,都属于dynamic的,对于C++这种没有自动清理闲置内存的都需要手 ...

G家跟面试官有关。他要是懂网络你写了网络就问网络,要是写C++的他就问你C++,他要是搞搜索的还看到你写了deep learning就问你DL的东西。所以写简历上的东西都得懂……因为你不知道对方会把哪个拿起来问你……
回复 支持 反对

使用道具 举报

blooe 发表于 2016-11-12 02:24:42 | 显示全部楼层
楼主面完多久受到结果的?
回复 支持 反对

使用道具 举报

 楼主| jaztsong 发表于 2016-11-12 03:33:16 | 显示全部楼层
slaink 发表于 2016-11-12 00:42
G家跟面试官有关。他要是懂网络你写了网络就问网络,要是写C++的他就问你C++,他要是搞搜索的还看到你写 ...

是啊,没办法,自己菜。
BTW,你今年准备毕业了吗?有时间指导下啊,我在Fitz247(抱歉没权限私信)
回复 支持 反对

使用道具 举报

 楼主| jaztsong 发表于 2016-11-12 03:33:35 | 显示全部楼层
blooe 发表于 2016-11-12 02:24
楼主面完多久受到结果的?

还没收到呢。估计快了。
回复 支持 反对

使用道具 举报

slaink 发表于 2016-11-12 03:38:48 | 显示全部楼层
jaztsong 发表于 2016-11-12 03:33. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
是啊,没办法,自己菜。
BTW,你今年准备毕业了吗?有时间指导下啊,我在Fitz247(抱歉没权限私信)
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
18年毕业吧。我在icensa,lafun边上的那个楼
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-10 21:36

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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