传说中的谷歌招聘委员会成员之一,从幕后走出来,教你学系统设计!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
天天打游戏、照样领工资、还办H1B
这份工作你要不要?
把贵司招聘信息放这里
查看: 5770|回复: 14
收起左侧

刚出炉一小时不到的Airbnb面筋,整个人都不好了。。。

[复制链接] |试试Instant~ |关注本帖
372284362 发表于 2016-8-16 08:44:32 | 显示全部楼层 |阅读模式

2017(1-3月) 码农类 硕士 全职@Airbnb - 内推 - 技术电面 |Otherfresh grad应届毕业生

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

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

x
约的四点电面,最开始他用google hangout给我打过来,结果没声音。。。之后听口音感觉像个中国人,最后问问题时候也确认了他是负责中国区这边的
.1point3acres缃
在coderpad上让我实现一个iterator of vector of vector of int,实现hasNext和next两个方法。要求能运行测试,这点跟之前找实习时候的面试就完全不一样了。不知道是airbnb特有的习惯,还是找全职都这样。毕竟好久没正经写过C++里的class了,刚开始有点儿慌。

. 1point3acres.com/bbs上来先实现还算顺利,先写完输入、输出。我最开始的想法是把输入flatten掉,之后就好办了。但是他要求我保留好原始数据结构,因为之后他还要要求我实现remove。我实现的方法是用两个index记录当前迭代到了第几个vector和这个vector的第几个元素。然后所有的更新都放在了hasNext里面,next中只剩一个return val; 写完之后他提醒我,不一定一个hasNext后跟一个next,有可能hasNext了好几次,然后next。可能经常刷leetcode,脑海中浮现的就是 while (xxx.hasNext()) cout << xxx.next() << endl; 有些思维定势了。。。然后加了个flag,记录一下当前的hasNext是否需要执行。等到下一个followup中间的时候我才反应上来,特么还可能是不调用hasNext,直接调用好几遍next。。。那我这个实现就错了。。。不过我test的时候还是一直用的上面的while循环,没第一时间发现问题。。。

然后他让我把remove加上。就是能把前一步next出来的元素从vector of vector of int中移掉。我用了一个新的vector<vector<int>>和vector<int>来记录已经迭代过的元素,然后写了个test。结果发现有bug。。。不过没时间改了。。。之后又细想了想,我这个实现还有点儿别的问题。比如remove之后,原数据中的空vector没保留下来。反正就是漏洞百出,写到这儿的时候又去看了下刚刚的代码,在想我怎么能写出来这么一坨翔的。。。. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

鉴于表现得实在是不太好,来这儿攒攒人品,希望能给个onsite的机会=_=


补充内容 (2016-8-18 02:02):.鐣欏璁哄潧-涓浜-涓夊垎鍦
已悲剧。。。

评分

2

查看全部评分

eins1179 发表于 2016-8-16 09:13:33 | 显示全部楼层
请问楼主是251. Flatten 2D Vector  这题吗
回复 支持 反对

使用道具 举报

 楼主| 372284362 发表于 2016-8-16 09:17:32 | 显示全部楼层
eins1179 发表于 2016-8-16 09:13
请问楼主是251. Flatten 2D Vector  这题吗

你这么一说还真是。。。。。。
回复 支持 反对

使用道具 举报

edyyy 发表于 2016-8-16 09:20:11 | 显示全部楼层

祝楼主好运
回复 支持 反对

使用道具 举报

rasperrypie 发表于 2016-8-17 00:59:14 | 显示全部楼层
请问LZ是怎么投的,网申还是内推呢?
回复 支持 反对

使用道具 举报

 楼主| 372284362 发表于 2016-8-17 04:45:27 | 显示全部楼层
rasperrypie 发表于 2016-8-17 00:59
请问LZ是怎么投的,网申还是内推呢?

内推的。。。。。。
回复 支持 反对

使用道具 举报

Jimmy123 发表于 2016-8-29 08:43:25 | 显示全部楼层
有没有大神可以给一个remove的implement?
回复 支持 反对

使用道具 举报

huwenchang8 发表于 2016-8-29 12:57:23 | 显示全部楼层
Jimmy123 发表于 2016-8-29 08:43
有没有大神可以给一个remove的implement?
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
java的话用collection的iterator可以直接remove
回复 支持 反对

使用道具 举报

timpark4 发表于 2016-8-29 13:20:53 | 显示全部楼层
楼主有没有了解到 airbnb new grad 今年招到什么时候?10月投会晚么
回复 支持 反对

使用道具 举报

Augustus 发表于 2016-8-29 14:32:44 | 显示全部楼层
又看到楼主发面经了。。。。。印象深刻的求逆序对归并排序。。。
回复 支持 反对

使用道具 举报

头像被屏蔽
yangoneone 发表于 2016-8-29 14:42:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

chaosMonkey 发表于 2016-10-9 17:51:40 | 显示全部楼层
hasNext()和next()的顺序是不是可以任意调用的?一个hasNext()后接多个next()的话,更新应该放到next()里面吧。这个感觉用迭代器而不是索引来做应该简单一些
回复 支持 反对

使用道具 举报

chaosMonkey 发表于 2016-10-9 17:53:26 | 显示全部楼层
而且做这个题的时候,一些边界情况是不是要确定好,比如说无效的next(),应该返回什么样的数据呢
回复 支持 反对

使用道具 举报

chaosMonkey 发表于 2016-10-9 18:05:08 | 显示全部楼层
简单写了点代码,不知道这样对不对. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  1. class 2Diterator{
  2. public:
  3.         2Diterator(vector<vector<int>>& vec2d){
  4.             row = vec2d.begin();
  5.             end = vec2d.end();
  6.             while(row != end && (*row).empty()){. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  7.                 row++;.鐣欏璁哄潧-涓浜-涓夊垎鍦
  8.             }
  9.             if(row != end)
  10.                 col = (*row).begin();
    . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  11.         }
  12.         int next(){
  13.                 if(!hasNext()){//如果连续调用next的话,这里应该也检查一下有效性
  14.                         return INT_MAX;//返回一个特殊值
  15.                 }
  16.             int res = *col;
  17.             col++;
  18.             getValidCol();
  19.             return res;
  20.         }
  21.         bool hasNext(){. more info on 1point3acres.com
  22.             return row != end;
  23.         }
  24.         void remove(){
  25.             if(!hasNext())
  26.                 return;
  27.             col = (*row).erase(col);
  28.             getValidCol();
  29.         }. From 1point 3acres bbs
  30. private:
  31.                 void getValidCol(){
  32.                         if(col == (*row).end()){
  33.                 while(row != end){
  34.                     row++;
  35.                     if(row != end && !(*row).empty()){
  36.                         col = (*row).begin();. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  37.                         return;
  38.                     }. from: 1point3acres.com/bbs
  39.                 }
  40.             }
  41.                 }
  42.         vector<vector<int>>::iterator row, end;. from: 1point3acres.com/bbs
  43.         vector<int>::iterator col;
  44. }
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-9-24 09:50

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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