Airbnb面经(上篇)



  • 作为一名正在找CS相关工作的菜鸟:非名校背景,一般般的技术。还是觉得老老实实地刷题很重要。。。开帖子,就是觉得,找工作不易,看到网上或者朋友的面经赶紧贴了,跟大家分享,也能给大家提供刷题方向~

    面经1:

    • Phone Screen: lc原题 Palindrome

    • Onsite:

    1. 有向图 求最少的点可以遍历所有点
    2. ip2cidr 地里有这题的面经~
    3. System Design: Internationalization
    4. Project Experience, 聊之前做过的项目
      外加两轮cross functional~~~

    面经2:

    • Phone Screen:
      地里po过的面经,是给一个直方图里面不同位置倒水的问题, 输入是倒水位置和倒水的量,要求打印出倒水后的样子。面试官有耐心引导不过也没有做到最后一步,所以到现在也不知道怎么做,她提示了一个在任意位置倒一个单位的水怎么写,然后后面拓展到多个单位的水就没时间了。

    面经3:

    • Skype:
      Round 1 :地里面经,给一个table,不同字符组合可以转化成不同的结果,然后给一个转化三角的底边,问是否可以出现一些顶点元素。
      Round2:非面经,implement一个queue,但是要求用int[]储存,并且一次生成的int[]长度不可以超过5。 其实这是一个内存分配的模型,每个int[]可以看成一个block的抽象,每次需要加更多元素的时候就要申请多分配block,remove的时候就要回收block。标准做法是用linkedlist,结果秀逗了用了tree,面试官居然就让我这么写了,他多追问一下我就想出来了。不过还好过了。
    • Onsite:
      tech 是boggle game简化版,不用trie。不知为什么紧张的脸发红手有点抖,还好可以清醒的bug free
      Behavior 1:好像是和客服相关的部门?问了觉得airbnb最大的挑战是什么,还有我的旅行经历。
      Behavior 2:长得像杀手leon的engineer。问了挺多问题,都是不同角度,很仔细的问了我对airbnb文化的理解,我对自己的理解还有我的character是怎么和airbnb文化conform的。
    • Skype:(两道题我都没见过!应该是刷面经刷的不够~)
    1. 设计一个银行帐户系统,实现:
      存钱(帐户id,存钱数目,日期),
      取钱(帐户id,存钱数目,日期),
      以及查账(帐户id,起始日期,结束日期): 只需要返回两个数值,一个是起始日期的balance,一个是结束日期的balance。
      描述就是这么多,剩下的自己发挥。钱的类型用integer,日期什么的自定义,我直接拿了integer
      题目很简单易懂,但是没想到会考oo design。。。一开始很慌张,做得很慢。。面试官是枫叶国小哥,人超级好,虽然全程都没开carema。。懒得看我

    2. topological sort ,输入是map:几个persoon,每个person有一个自己的list,list内是整数。
      Person1:1 8 9
      Person2:2 1
      Person3: 9 3

    然后输出一个list,要求把输入map里面的所有value都放入这个list里,且这些values的相对顺序符合每一个person自己的顺序。例如一个valid的输出是: 2 1 8 9 3

    Follow Up: 因为这道题可能有多种符合要求的输出,如何break tie by person 1,也就是说bfs的时候每次优先选择person 1 list里面的元素。

    面经4:

    • Phone Screen:
      点餐问题,问了complexity。
    • 列表Skype:
      Round 1:boggle game,国人小哥很nice,之前没好好写过这道题。。导致最后还是有个bug来不及改了。这轮面的不好所以给了个加面吧。
      Round 2:travel buddy,abc妹子。这题感觉跟airbnb的难度不符啊,反正就没什么tricky的部分。。。
      Round 3: ip to cidr,感觉是韩国小哥,英语说的很好,超级萌,一直在笑。
      cross functional:跟地里的题目差不多,补充几个:When working in teams, describe a time you made the biggest sacrifice. Describe the best team you’ve worked with. Describe a company that you think is doing really well and explain why. Describe one of the creative things you have done recently.

    面经5:
    开始的时候是写两个function, create和get.

    create("/a",1)
    get("/a") //得到1.
    create("/a/b",2)
    get("/a/b") //得到2
    create("/c/d",1) //Error,因为它的上一级“/c”并不存在
    get("/c") //Error,因为“/c”不存在.

    Follow Up:是写一个watch函数,比如watch("/a",new Runnable(){System.out.println(“helloword”);})后,
    每当create("/a/b",1) 等在/a之下的目录不产生error的话,都会执行绑在“/a”上的callback函数

    比如 watch("/a",System.out.println(“yes”))
    watch("/a/b",System.out.println(“no”))
    当create("/a/b/c",1)时,两个callback函数都会被触发,会output yes 和no.

    我对java的callback并不是很熟悉,面试官小哥很好地给了trigger callback的接口,因为之前在地里看到说没必要建trie,所以直接hashmap解决,但处理字符串找它的上一层目录处理“/”比较容易出bug,要注意判断根目录的情况

    面经6:

    • 列表两轮cross functional,很常规,问题大概有这些:
      describe you team
      how to work with disagreements.
      whats your role in a team
      why you love traveling
      where do you see our company in 10 years

    • coding两轮:人都很nice,一个新题,一个boogle game

    • 列表 新题是一个OO Design,很简单,就是实现一个tree。 具体如下:
      configuration tree:
      三个method:create(path, value), set_value(path, value), get_value(path)

    • 列表 让你实现一个长成这样的tree:
      root
      /
      NA EU
      /. From 1point 3acres bbs
      CA US. more info on 1point3acres.com

    其中root是没有name和value,剩下的每个点都有name和value。

    create(path,value):给你一个path,比如“NA/MX”,和value,比如“3”。那么你就在NA下面创建一个点叫MX,值是3。
    set_value(path, value): 给你一个path,找到path的叶子,然后set value,如果叶子不存在,返回false;
    get_value(path): 给你一个path,返回叶子的值,没有叶子的话返回NULL。

    非常简单一个OOD,跟Trie很像。

    大家可以加入我建立的CS找工作群哦,之后会在群里分享工作信息、面经信息以及交流刷题心得,大家相互鼓励,也欢迎找到工作的朋友一起分享信息哦!
    之后会继续搬运面经给大家哒~

    0_1482288939646_QR.jpg


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待