DoorDash

https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=315129
还没看到过今年的doordash面经,都是2016年的,连续两轮面试背靠背,第一轮是个伯克利韩国妹子,是补全ood的函数,ood是关于connect4的,类似tic tac toe,但是规则是只能从下往上挨着填空,写那个checkwin的函数的时候还是挺麻烦的,检查自己这一行的话没考虑周全,而且写的有点慢,肯定是没戏了; 第二轮是个阿三,题目是unique path的升级版,给了起始位置和结束位置,8个方向都可以走,求问能在K步到达的path总量,刚开始写的dfs解,一开始还有点小bug;然后让写DP解,奈何这是个3维DP,不是很熟悉,只写了大概思路。。

def count_paths(dims, start, target, K):
    '''
    @param dims, a tuple (width, height) of the dimensions of the board
    @param start, a tuple (x, y) of the king's starting coordinate
    @param target, a tuple (x, y) of the king's destination
    @return the number of distinct paths there are for a king in chess (can move one square vertically, horizontally, or diagonally)
            to move from the start to target coordinates on the given board in K moves
    '''
if __name__ == "__main__":
    print "Running tests..."
    assert(count_paths((3, 3), (0, 0), (2, 2), 2) == 1)
    print "Passed test 1"
    assert(count_paths((3, 3), (0, 0), (2, 2), 3) == 6)
    print "Passed test 2"
    assert(count_paths((4, 4), (3, 2), (3, 2), 3) == 12)
    print "Passed test 3"
    assert(count_paths((4, 4), (3, 2), (1, 1), 4) == 84)
    print "Passed test 4"
    assert(count_paths((4, 6), (0, 2), (3, 4), 12) == 122529792)
    print "Passed test 5"

店面
很简单 具体记不清楚了 是关于整数排序的 radix sort搞定

现场面一共5轮

  1. 问了一个dependencies resolver的问题 就是有很多libs 中间有不同的dependncies 问应该按什么顺序加载

  2. 系统设计 聊天系统 要求实现1v1 聊天功能和群聊功能 设计schema 呀 存贮呀 pull/push等讨论

  3. 这一轮我也不知道面了个啥 被一个比较senior的人带到公司顶楼的天台山晒太阳 聊了些有的没得 past projects 大概介绍了一下他们现在的python monolith application 如果要重新设计 要怎么做
    然后一顿安利 说他们增长多牛逼 他以前在lyft 然后跳过来 他们今年预计要double team size

  4. behavior 面试 各种behavior 问题

  5. 是一个游戏的问题 叫connect4 美国人好像都知道, 可以去搜一下怎么玩。这道题是一个在笔记本上写代码的题,很多已经实现好了 要求实现其中的怎么判断游戏有没有结束的一个function。然后是添加一个robot功能,这样player和robot对局,然后要给这个robot设计strategy,不能让他太傻。感觉重点不是策略的算法 而是整个的设计 怎么设计借口 类 考虑到可以继续扩展的 很有意思的一个题目

公司感觉还是不错的 而且大部分人很年轻 如果你刚毕业或者刚工作了几年 还是挺推荐的 增长机会应该挺大的 里面不少毕业2-3年就已经当上了manager 而且他们还在快速的增长中

公司给的包裹也是不错的 base很高 比我已知的同级别的业内公认的大公司都要高

关于股票 因为我从来没有去过startup 所以不是很了解这个share price应该怎么确定。 HR给我的价格是他们去年上一轮融资的估值价格,后来hiring manager又来跟我解释说他们距上次融资revenue已经翻了三倍 所以给我的rsu要案未来的价值算...然后还用各种excel给我各种算 算完以后rsu价值暴涨了10倍..... 我也不是很懂 不知道是不是被蒙了 如果地里有大神 欢迎指导一下 一般startup给offer的时候 这个RSU价值到底应该怎么算 可以跟他们negotiate吗
-baidu 1point3acres
不过最后我还是没有接 也不是因为有更好的offer 只是觉得match的那个组并不是很感兴趣 我现在属于职业生涯的中期 想找点真正感兴趣的东西做 感觉有点对不住hiring manager, 人很nice,非常健谈,可是感觉有点push, 谈待遇的时候直接问我说 give me a number that can make you sign the offer now.

最后再说一句 这家公司ABC很多...


https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=458401

第一题

For each delivery, we expect a Dasher to first pickup the order from a merchant and then drop off the order to a customer. However, a Dasher can be batched during the delivery process, meaning that they could have multiple pickup and drop off actions in their route. In this case, the pickup for each delivery has to occur before the respective drop off.

Given a sequence of pickup and drop off actions, write a function to ensure the sequence is valid.

Examples:

P1, D1 -> valid

P1, P2, D1, D2 -> valid

P1, D1, P2, D2 -> valid

P2, D2, P1, D2 -> invalid

P1, D2, P2, D1 -> invalid

P1, D2 -> invalid

P1, P2, D2 -> invalid

P1, D1, P1, D1 -> invalid

第二题

Given n deliveries, write a function that prints out all the valid sequences of routes. 

Examples:. 1point3acres

N = 1 -> [p1, d1]

N = 2 -> [p1, d1, p2, d2], [p1, p2, d1, d2], [p1, p2, d2, d1], [p2, d2, p1, d1], [p2, p1, d1, d2], [p2, p1, d2, d1]

N = 3 -> 90 routes should be printed out

N = 4 -> 2520 routes should be printed out

第三题

给两个string,print out 第一个string里含第二个string所有permutation 的起始index

abab   ab -> [0,1,2]

cababcef  abc -> [0,3]

花了一周末准备 connect 4 但没有抽到, 最喜欢用python 但当时没发挥好,第一次onsite

第一轮engineering value, 和一位非常senior 的 ABC, 非常友善
有一个问题我没答好,就是问你 你有任何做过的project 有哪里是失败的地方?但你是采取什么途径去解决这问题?
另一个问题: 你有什么哪个project你有非常strong opinion 你认为是对的,但别人不认同。你如何解决?

第二轮技术面试问题和一位友善的意大利人,
有关于 batch delivery:
P1, D1, P2, D2 ==> valid,
D1, P1 ==> invalid
P1, P2, P3, D3, D2, D1 ==> valid,
P1, P2, D2 ===> invalid

第三轮比较友善的国人面试,dependency resolver.
拓展: 如何只 print circular dependency.

batch delivery 的那道题目也是我挂的很大原因,之前看到别人发过但没做出来

其实就是 给你一个 list = ['P1', 'D1', 'P2', 'D2'] 那它是 valid
P1, P2, P3... 的顺序不要紧, 只要保证每一个相应的 Delivery 要在 Pickup 后面
不能出现 P1, D2, P2, D1, 这里 P2 就在 D2 后面了
. check 1point3acres for more.
想象成外卖一样

我建议 你用个 dictionary, key 记录 每个 element of the list, value 记录 每个element 在list 里的 index

connect 4 https://www.youtube.com/watch?v=UYgyRArKDEs


doordash 两轮电面
第一轮:
1.给定数组,求longest consecutive subarray
例如:输入{1,4,5,6,8,10,11},输出{4,5,6},这个用dp可解
2.follow up 例子:输入{1,4,2,5,3,9,10},输出{1,2,3}
要求o(nlogn)解法,leetcode上有原题
第二轮:
1.给定长m,宽n,的格子,每次只能向下或向右走,问从最左上角走到最右下角,有多少种方法?dp可解
2.实现sqrt,不同的是给定精度和target,返回一个精度范围内的值即可


两小时开会软件背靠背,一个烙印一个韩国小姐姐, 都是工作两年的, 第一个题, connect4, 没有让重写, 而是让优化代码, 着重写了行列处理, 判断是否valid的几个function, 时间比较赶. 韩国小姐姐来了一个lc42 雨水堆积的问题, 和一道follow up, 基本上42会做就能做出来, 这个时间相对宽松,最后十分钟聊了一下组里做什么的, 没有BQ, 一开始简单介绍了自己的背景就直接上代码了


三轮,两轮code一轮公司价值观讨论,聊天的三哥有一搭没一搭。
题最近的面筋都有。我的HR跟我说有一轮会是设计一个游戏,花了一个周末写了一下connect4,压根没面到。
一轮拓扑排序,类似刷题网站的那道课程规划II。一轮和地里那份11月的面筋一样,花了太多时间在讨论处理input case上,打印路径时候写不完了。。接下来有面的同学注意一下吧,提前想一些test case。


算法题和地里一样,给一组数,让你sort,有什么方法可以,说了几个,但题目是只有200个数maximum,想用地里的radix sort,被说直接bucket sort好了,写了个bucket sort。Run了几个test cases。
设计题是推特的sql schema设计,设计出feed,follow,user 几个table,然后让你查询一个user好友的feed,会让你用不同的方法。答了几个。但是syntax除了第一个都是有问题的 - - 。


5轮
第1轮coding还不是很传统的算法面试。
题目是给了一堆已经成型的code,内容是connect4这么个游戏。
然后让你增加新的feature。做完一个就提一个新的feature加上去。
我做了3个
第一个是 把input改成只需要输入列数(因为connect4的棋子是会掉下去的嘛,所以行数可以求出来)
第二个是 把 checkwinner完成了-baidu 1point3acres
第三个是 增加一个可以跟AI对战的feature,AI随便弄,我就直接弄了个最蠢的随机下子的AI。然后没时间了

第2轮coding是算法
dependency graph然后print出来假如要compile A,所有其他文件要compile的顺序。
可以用拓扑,或者直接用DFS我觉得也行

系统设计是设计一个donation系统。
比如要搞个3天的charity活动,user可以进行donation。如何实现charge 钱, email 收据,最后summary 这几个功能。


5轮
店面时间初定为75min,实际大概一小时结束。估计凶多吉少
面试官简单介绍了面试流程

  • 自我介绍 (10 ~ 15min):
    deep dive in project。面试官为烙印,不确定是不是doordash的面试策略,但是烙印问了很多project相关问题,主要focus在挖掘你有没有development的经验
  • coding question:
    Given an array of integers, assuming the integers are within a limit, let's say (0<=n<=200)
    Return an array with sorted integers
    我当时给的解答是:直接create一个counter,记录integer出现的次数,按照出现次数,构建新的排序的array,返回
    这题我反思了一下,我觉得应该多问一clarification question:
    1. ascending or descending
    2. which one do you like to optimize in terms of complexity? Space OR Time
    面试官问了我关于hashmap(dict)复杂度的问题,我当时简单的回答了O(1) for time, O(n) for space。
    这个回答过于简单,反思后我觉得应该能够针对hashtable的不同method去分析avrage case & worst case。
  • data modeling question:
    简单设计twitter的database model,focus在于follower, followee, tweet的功能
    - 写出table name,有哪些column,哪一个是primary,foreign key,等等
    最终目的是根据你的table scheme,写出一段sql,返一个对于特定user,他所follow的所有人的tweets

5轮
3, coding
第一轮coding主要是改代码, 一个小游戏叫connect 4.. 1point3acres
从input row, col, 改成只需要input col, 自动补全没有填满的row
4, coding
利口 269, 面试的时候写出来了,
但是最后hr feedback因为这一轮不够strong挂了, hr简略的说了下feedback是edge case没有说完,
可能是面试的时候没有口头上说出来input empty什么的情况?我当时只有口头上说了闭环return none这种,
我感觉可能上一轮connect 4也没有答得特别好?可能两轮都一般就挂了


5轮

  1. Best time buy stock I
  2. 设计 Twitter database schema,how to query your home page post.

dependence & connect4
system design 也是简单的payment design 表单,提交transaction 支付 记录user order payment


2hours电面:1. 从起点走到终点给K个steps, 问有多少种distinct paths,可上下左右对角

  1. 最大岛屿问题,不是1, 0. 而是任意数

10分钟的时间聊了两年的工作经验,聊完后做离口柳揪,follow up 是给k 找k decimal points 的解。


第一轮是一个韩国妹子,题目地里之前也有人发过。。。我再说详细一点吧。
是一个ood design的题,是一个游戏叫做connect 4,google一下游戏规则就出来了。
题目框架她已经给你写好了,只需要填一些函数。。我感觉难点主要在于,读懂整个框架。。一下子刷刷给你好几个class,要弄懂各个class之间的关系,还是有些心累的。。
最难的一个函数就是checkwin,建议大家先事先写一写这个函数。横竖检查的时候都很简单,两个斜线的检查写起来还是略麻烦的。。。
总之我写的磕磕绊绊,最后在规定时间内勉强写完,还没来得及debug,就到时间了。。

第二轮是一个国人,人挺好的,给的题也很放水。。写了一个unique path,和一个sqrt(),要求precision到0.001。。这一轮我进行的非常顺利。。聊的也挺开心的。


2016
就是permutation,不过不是数字 是character, abc这样的,输出abc, acb,bac,bca,cab,cba。还有一个也是原题,add binary。一个小时结束了,过了8天左右,才收到HR邮件,说下一轮就是两个video。前天第一轮video,两轮两小时,美国小哥和美国小姐姐,题目也很简单,小姐姐的是spiral matrix,小哥的是找interval 的公共区间,


2016
第一面问了Word break变形 输出有效break的可能里最多的break次数 比如词是“abbc”,字典是"a", "b", "bc", "ab", 有两种可能 一种是a, b, bc, 一种ab, bc,要输出3
然后转天就来2面了 第二面聊了很多简历上的事 感觉之前实习做的事还挺冷门的但是面试官表示他以前也有这方面的经验所以很感兴趣…问的超细致 最后时间不多了他说就写个sqrt吧,也是返回int但是跟lc不同的是要返回平方后大于等于输入值的结果 比如输入15的话要返回4,lc我记得是返回3
用二分写 写的倒是挺快的但是就在check mid >= n / mid时忘记了那个除是向下round的…于是有时就off by 1...然后改了改最后对了但是感觉有点不好……希望有rp


2016
【10月下旬 电面】
1. deep drive into resume
问得很细致,甚至问到了machine learning 算法。。 (哦对了 补充下,之前面Facebook onsite的那一轮behavior的时候,简历也问的非常细致,提到一个project的时候,让我当场推导SVM中的RBF kernel function 的公式 以及 如何调参)

因为之前同样在starup呆过,再加上面试官是个非常非常nice的国人大哥,所以聊得非常happy
从产品模式到运营到现在遇见的技术难关。。。感谢这么nice优秀的国人大哥

2. sqrt() 变形
返回int, 但是跟leetcode 不同的是要返回平方后大于等于输入值的结果 比如输入15的话要返回4, 而不是3

follow-up: 输入 输出都是double/float 型, 用牛顿法解决

【今天Skype 两轮视频面】

1. 第一轮


   * @param matrix, a 2-d array (list of lists) of integers

   * [@return](https://www.1point3acres.com/bbs/home.php?mod=space&uid=160137) the size of the largest contiguous block (horizontally/vertically connected) of numbers with the same value

     int expected1 = 2;

    int [][] matrix1 = new int[][]

                  {{1,2,3},

                   {4,1,6},

                   {4,5,1}};

    int expected2 = 4;

    int [][] matrix2 = new int[][]

                  {{1,1,1,2,4},

                   {5,1,5,3,1}, 

                   {3,4,2,1,1}};

    int expected3 = 11;

    int [][] matrix3 = new int[][]

                  {{3,3,3,3,3,1}, 

                   {3,4,4,4,3,4}, 

                   {2,4,3,3,3,4},

                   {2,4,4,4,4,4}};

    int expected4 = 24;

    int [][] matrix4 = new int[][]{

                     {0,0,0,0,0}, 

                     {0,0,0,0,0},

                     {0,0,1,0,0},

                     {0,0,0,0,0},

                     {0,0,0,0,0}};

2. 第二轮

1. 类似于find target in rotated array

不过是找的rotated的index在哪儿

2. unique path I && II


2016
面的是面经里面的题。

最长连续序列。 (exactly one larger than the one that came before it)

ex: 1, 2, 5, 6 -> 1, 2
ex: 3, 5, 6, 7, 12 -> 5, 6, 7

follow up 变形:(exactly one larger than some number that came before it)

ex: 1, 6, 2, 7, 3 -> 1, 2, 3

ex: 3, 5, 6, 7, 12 -> 5, 6, 7

你可能感兴趣的:(DoorDash)