一亩三分地

 找回密码 注册账号

扫描二维码登录本站

最近看过此主题的会员


码农求职神器Triplebyte
不用海投
内推多家公司面试

Total Comp Calculator
输入offer信息
系统自动计算每年收入

科技公司如何
用数据分析驱动产品开发
coupon code 250off 立减$250

深入浅出AB Test
从入门到精通
coupon code 250off 立减$250
游戏初创公司招聘工程师、UIUX Designer和游戏策划
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
查看: 1822|回复: 20
收起左侧

Airbnb 北京onsite

[复制链接] |试试Instant~
我的人缘0

分享帖子到朋友圈
Ht1990 发表于 2019-6-17 20:12:13 | 显示全部楼层 |阅读模式
本楼: 👍   100% (3)
 
 
0% (0)   👎
全局: 👍   100% (13)
 
 
0% (0)    👎

2019(4-6月) 码农类General 本科 全职@Airbnb - 内推 - Onsite  | Fail/Rej | 在职跳槽

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

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
北京Airbnb onsite 已跪,分享两道onsite题
第一题打印图形-baidu 1point3acres
Snip20190617_3.png


实现一个 print(int n) 的函数打印图形


第二题  x-or tree

给定树的顶点个数  n
和多叉树的多条边
2 1  //2为子节点、1为父节点
3 1
4 5
7 5
5 3
6 2
9 6
8 9
10 9

给定初始化数组表示每个节点的值
1 0 0 1 0 1 0 1 0

目标数组,每个节点的值-baidu 1point3acres
1 1 0 1 0 1 1 1 0

每个节点的值修改时,他的孙子节点(递归下去,孙子节点的孙子节点)对应值需要反转(0-》1,1-》0)

求重初始化数组到目标数组最少需要修改几个节点,需要修改的节点是什么





评分

参与人数 10大米 +31 收起 理由
清道神君 + 20
zzssggjj + 2 很有用的信息!
qdlym + 1 给你点个赞!
jane19930412 + 1 很有用的信息!
jiangyouno0 + 1 给你点个赞!
wilburjiang + 1 赞一个
hyserendipity + 2 很有用的信息!
magicsets + 1 给你点个赞!
crazycodyman + 1 给你点个赞!
holybearchen + 1 给你点个赞!

查看全部评分


上一篇:阿里巴巴前端挂经
下一篇:baidu挂经

本帖被以下淘专辑推荐:

  • · Airbnb|主题: 10, 订阅: 0
我的人缘0
qdaudioqd 发表于 2019-6-25 19:55:47 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   45% (270)
 
 
54% (323)    👎
谢谢楼主分享!
回复

使用道具 举报

我的人缘0
magicsets 发表于 2019-6-18 11:49:15 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   98% (768)
 
 
1% (8)    👎
第一题是打印一个分形(fractal),分形具有递归结构,当前n的某个坐标上的字符可以由n - 1子分形的某个对应字符平移(复杂的还可以旋转拉伸——也就是affine transform)得到。

写了一份参考代码:
[C++] 纯文本查看 复制代码
#include <iostream>
#include <memory>

class Shape {
 public:
  virtual ~Shape() {}
  virtual int GetNumRows() const = 0;
  virtual int GetNumCols() const = 0;
  virtual char GetCell(int row, int col) const = 0;

  static std::unique_ptr<Shape> Create(int degree);
};

// 最基础的三角形
class BaseTriangle : public Shape {
 public:
  int GetNumRows() const override { return 2; }
  int GetNumCols() const override { return 4; }

  char GetCell(int row, int col) const override {
    constexpr char kShape[2][4] = {
        {' ', '/', '\\', ' ' }, {'/', '_', '_', '\\' }};
    return kShape[row][col];
  }
};

// 否则是一个递归分形,某个位置的字符可以依靠平移坐标再通过子分形计算
class TriangleFractal : public Shape {
 public:
  TriangleFractal(int degree)
      : sub_fractal_(Shape::Create(degree - 1)),
        half_num_rows_(sub_fractal_->GetNumRows()),
        half_num_cols_(sub_fractal_->GetNumCols()),
        half_half_num_cols_(half_num_cols_ / 2),
        num_rows_(half_num_rows_ * 2),
        num_cols_(half_num_cols_ * 2) {}

  int GetNumRows() const override { return num_rows_; }
  int GetNumCols() const override { return num_cols_; }

  char GetCell(int row, int col) const override {
    // 上面部分
    if (row < half_num_rows_) {
      if (col >= half_half_num_cols_ &&
          col < half_num_cols_ + half_half_num_cols_) {
        return sub_fractal_->GetCell(row, col - half_half_num_cols_);
      }
      return ' ';
    }
    // 左下部分
    if (col < half_num_cols_) {
      return sub_fractal_->GetCell(row - half_num_rows_, col);
    }
    // 右下部分
    return sub_fractal_->GetCell(row - half_num_rows_, col - half_num_cols_);
  }

 private:
  const std::unique_ptr<Shape> sub_fractal_;
  const int half_num_rows_;
  const int half_num_cols_;
  const int half_half_num_cols_;
  const int num_rows_;
  const int num_cols_;
};

std::unique_ptr<Shape> Shape::Create(int degree) {
  // 要求degree大于等于1,这里就不做check了
  if (degree == 1) {
    return std::make_unique<BaseTriangle>();
  }
  return std::make_unique<TriangleFractal>(degree);
}

void PrintShape(int degree) {
  std::unique_ptr<Shape> shape = Shape::Create(degree);
  for (int i = 0; i < shape->GetNumRows(); ++i) {
    for (int j = 0; j < shape->GetNumCols(); ++j) {
      std::cout << shape->GetCell(i, j);
    }
    std::cout << "\n";
  }
}

int main(int argc, char* argv[]) {
  for (int n = 1; n < 5; ++n) {
    std::cout << "n = " << n << "\n";
    PrintShape(n);
    std::cout << "\n";
  }
  return 0;
}

评分

参与人数 2大米 +2 收起 理由
maple1986 + 1 很有用的信息!
Ht1990 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

我的人缘0
 楼主| Ht1990 发表于 2019-6-18 11:18:57 | 显示全部楼层
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (13)
 
 
0% (0)    👎
crazycodyman 发表于 2019-6-18 11:15
这比地里的面经难多了,是不是外企在国内自动提高bar啊

跟airbnb的朋友聊了聊,18年底之前的面试题还和地理的面经相似度很大,19年这半年已经换了不少题了,如果去面地理的题还是要准备,但出现原题的概率也就50%吧
回复

使用道具 举报

我的人缘0
 楼主| Ht1990 发表于 2019-6-17 20:13:57 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (13)
 
 
0% (0)    👎
北京的面试题库 和地理面的还是有较大不同的。
回复

使用道具 举报

我的人缘0
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   78% (635)
 
 
21% (174)    👎
有大佬知道怎么做吗?楼主面的mobile还是backend?
回复

使用道具 举报

我的人缘0
 楼主| Ht1990 发表于 2019-6-18 10:22:02 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (13)
 
 
0% (0)    👎
crazycodyman 发表于 2019-6-17 23:19
有大佬知道怎么做吗?楼主面的mobile还是backend?

第一题,没啥思路,后来想了想,可能要动态计算这个二位数组的坐标
第二题,bfs,但是在处理孙子节点的翻转时也很麻烦
回复

使用道具 举报

我的人缘0
crazycodyman 发表于 2019-6-18 11:15:37 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   78% (635)
 
 
21% (174)    👎
Ht1990 发表于 2019-6-18 10:22
第一题,没啥思路,后来想了想,可能要动态计算这个二位数组的坐标
第二题,bfs,但是在处理孙子节点的 ...

这比地里的面经难多了,是不是外企在国内自动提高bar啊
回复

使用道具 举报

我的人缘0
 楼主| Ht1990 发表于 2019-6-18 14:50:37 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (13)
 
 
0% (0)    👎
http://www.voidcn.com/article/p-srkptnpu-bnt.html
贴一个链接,是各种分型打印的问题
回复

使用道具 举报

我的人缘0
hyserendipity 发表于 2019-6-18 21:14:21 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   70% (7)
 
 
30% (3)    👎
在想是不是去刷一下poj了。
回复

使用道具 举报

我的人缘0
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (1)
 
 
0% (0)    👎
赞详细的解答
回复

使用道具 举报

游客
请先登录
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法 - 不要多加空格: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地

GMT+8, 2019-7-19 22:35

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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