一亩三分地论坛

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

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

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

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

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

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

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

x
约的四点电面,最开始他用google hangout给我打过来,结果没声音。。。之后听口音感觉像个中国人,最后问问题时候也确认了他是负责中国区这边的. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴

在coderpad上让我实现一个iterator of vector of vector of int,实现hasNext和next两个方法。要求能运行测试,这点跟之前找实习时候的面试就完全不一样了。不知道是Airbnb特有的习惯,还是找全职都这样。毕竟好久没正经写过C++里的class了,刚开始有点儿慌。
.鏈枃鍘熷垱鑷1point3acres璁哄潧
上来先实现还算顺利,先写完输入、输出。我最开始的想法是把输入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没保留下来。反正就是漏洞百出,写到这儿的时候又去看了下刚刚的代码,在想我怎么能写出来这么一坨翔的。。。. 1point 3acres 璁哄潧

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


补充内容 (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 | 显示全部楼层
.1point3acres缃
祝楼主好运
回复 支持 反对

使用道具 举报

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;//返回一个特殊值.1point3acres缃
  15.                 }
  16.             int res = *col;. from: 1point3acres.com/bbs
  17.             col++;
  18.             getValidCol();
  19.             return res;
  20.         }
  21.         bool hasNext(){
  22.             return row != end;
  23.         }
  24.         void remove(){. 鍥磋鎴戜滑@1point 3 acres
  25.             if(!hasNext())
  26.                 return;
  27.             col = (*row).erase(col);. 1point 3acres 璁哄潧
  28.             getValidCol();
  29.         }
  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.                     }
  39.                 }
  40.             }. visit 1point3acres.com for more.
  41.                 }
  42.         vector<vector<int>>::iterator row, end;
  43.         vector<int>::iterator col;
    鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  44. }
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-8 20:16

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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