Microsoft Azure on site interview


Microsoft Azure on site interview

Round one: system design
Behavior Questions: Most challenge project
System design: 设计一个event calendar service,要求用户能够通过这个create event,并且系统能够识别时间冲突(比如event1 选了10:00 - 11:00,那event2就不同选这个时间)
写完之后具体问了nosql和sql的区别,然后让写了一下detect event time overlap的算法,有点像merge interval的变形
之后再问现在允许至多两个event重合,现在怎么修改算法(还是刚刚那个例子,event2现在可以选10:00 - 11:00了,但如果再来event3就不可以)


Round two: Coding
没有behavior questions,直接上题,约瑟夫环,我记得很久之前在leetcode上做过,但面完去找也没找到。题目可以上google搜一下,要求不能用数学公式。
给了double link-list的解,接着开始优化
1. 先讨论step = 0 和 step = 1的case
2. 讨论 step > total solider number的case
3. 然后问我还有没有优化的点。。。我想了一会才发现,如果solider是5,step是4,那其实clockwise走4步,和anti-clockwise走1步是一个效果。


Round three  Coding
Alian Dictionary,但我没做过,上来试了各种想法都被否了,最后在他的循循善诱下说是个可以拓扑排序,这时大概只有10分钟了,他说你赶紧吧,能写多少是多少。
紧赶慢赶,写完了construct graph的部分
留了两分钟,面试官说对我简历的某个项目挺感兴趣的,问了我一下

CloudKitchens On SIte Interview 面经


最近,受CloudKitchens的Recruiter邀请,去CloudKitchens在Los Angeles的总部进行了On Site面试。CloudKitchens是Uber的founder Travis Kalanick新开的startup,面试还是很新颖的。面试安排如下:

早上9:30到12:30: 在laptop上面现场写代码,解决一个实际问题。
中午12:30到1:00:一边吃lunch,一边和hiring manager 面试。就是一个lunch interview
下午1:00到2:00,一个小时的时间,有两个engineers会和你go through早上写的代码,并且做优化。
下午2:00到2:30: 两个面试的engineer会讨论是否要继续面试下去。
下午2:30到3:30:面试
下午3:30到4:30:面试
下午4:30到5:30:面试

先说说我的经历:我面试前觉得用他们提供的电脑,应该会比较好,因为毕竟是他们准备的实际问题,他们提供的电脑的编程环境应该是已经调试好了的。但后来发现,完全不是我想象的这样。

早上9:15am到达大楼,之后一个年轻的女孩领我到了会议室。给了我一个laptop,说让我不要打开,等两个engineer来了之后,再开始。9:30am,两个engineers来了,一个是老员工,一个是刚来不久的新员工。给我讲解了要解决的实际问题。当我打开他们提供的macbook后,发现这个macbook从来没有设置过编程环境,连gcc compiler都没有安装上。这两个engineers也不知道是这种情况,没办法,我只好开始下载,安装,设置编程环境。关键是这个实际问题,还需要用到json,我平时json用的少,弄了半个小时,都没有成功的让gcc link上json library。当时就感觉这个面试要挂了

再来说说这个实际问题:

建立一个production-level的system来模拟厨房中食品订单的fulfillment和delivery。给了一个json input file。 这个json input file包含所有用户的orders。order是这样定义的:
{
    {
        "name": “sandwich”,
        “temp”:  "hot",
        "shelf_life": 300,
         "decay_rate": 0.45
    }
}

Orders can be asynchronously read from 这个json file

shelf life是按秒来计算,温度temp是enum value: hot, cold, and frozen

厨房是以Poisson Distribution来接收orders,假设food可以立刻做出来,然后,把食物摆在shelf上面。

厨房里面有4种shelf:
1) hot shelf, 可以存放20个hot orders
2)cold shelf,可以存放20个cold orders
3)frozen shelf,可以存放20个frozen orders
4)overflow shelf,可以存放30个任意order

当每个hot,code,frozen,shelves放满后,可以放在overflow shelf。当overflow shelf 放满后,food order需要被removed,浪费掉。

就是要设计一个系统来实现上面所说的功能。系统输出的形式自己定义。

上午9:30到12:30这三个小时,就是写一个系统,下午1:00到2:00,这两个engineer再回来和我聊我的系统设计的怎么样。 比如并行的问题,performance的问题,multi-threading的问题,测试问题,等等。

中午的lunch interview是和一个hiring manager聊天,一边吃着sandwich,一边聊。 聊天的感觉是,当前员工还是挺辛苦的,工作压力大。所有的系统都要重新build。这个lunch interview主要目的是考察candidate是否对这个startup所做的事情感兴趣。

我的面试到下午2:30之后就结束了,早上面试我的两个engineers决定不再面试下去了。这也基本在我的预料当中,3个小时写一个小型系统,前面一个小时在,下载,安装编程环境。后面2个小时,实现了70%左右的功能。 没有完成全部的功能。在下午的1:00到2:00的面试中,并行问题,asynchronous等问题,回答的不是很好。 就这样就结束面试。

给以后面试的candidates的建议是:还是带自己的电脑来,这样比较好,至少可以省去前面的编程环境的调试时间。


在面试的过程中,也问了问他们的工作内容和公司整体发展的情况。在这样一个初创startup里面,工作内容基本都是纯engineering的工作,就是赶紧弄一个working的版本出来。他们现在的用户数还比较小,qps比较低,也不需要考虑scalability的问题。 不过,long term来说,还是会改善系统设计的。

公司的发展方向,我个人觉得还是不清晰的。没有感觉出来和DoorDash有啥本质的区别和优势。现在DoorDash也有了共享厨房。觉得他们做的和DoorDash差不多吧。

大家有啥问题,可以在下方留言,我会尽量解答。







C++ Header Files - Google C++ Style Guide


自己开始做一些视频,希望大家能支持,点赞,订阅!

Google Onsite Interview 面经


2020年初Google Onsite面经

第一轮:超级nice的国人姐姐。因为到的比较早,先去kitchen拿了点零食然后闲聊了半天G家的室内装潢(……)和简历上的经历。题目是给一个positive integer N,求N最少能由几个2^i组成。比如N=1的时候,1=2^0,那么N最少能被1个2^0组成。再比如N=7的时候,7=4+2+1=2^2+2^1+2^0,这个case中N最少被3个2^i组成。然后follow up是,可以同时使用正或负的2^i。同样的例子N=7,在这个情况下,7=8-1=2^3-2^0,这样最少只需要2个2^i就能组成N。

第二轮:台湾葛格,人也挺nice的。没有废话直接上题,就是lc的bomb enemy,不同的是bomb也能放在enemy所在的位置。第二题是给一个iterator: 2,3,1,5,1,8… 要求写一个iterator要能return 3,3,5,8… 

第三轮:印度姐,关于最近时间的问题,当前显示时间为 ab:cd,求下一个离当前时间最近的时间,并且只能用{a,b,c,d}这个集合里面的数字,数字可以重复使用,不一定要全部用到。输入输出都是字符串。
举个栗子
当前时间为“23:02”,下一个最近的时间为“23:03”
当前时间为“23:58”,下一个最近的时间为“22:55” (第二天的)
我用的方法很蠢,就是找出所有可能的组合,去掉那些不合法的(比如42:23这种),然后求出和当前时间的时间差,取最小的。

第四轮:白人小哥,看起来就智商很高的那种。题目是给一瓶药,里面100颗完整的药片,每天需要吃半颗。每天吃的方法是随机从瓶子里取一颗药,如果是整颗就吃半颗,剩下半颗扔回瓶子里;如果取出的是半颗,那就直接吃掉。第一小问是simulate这个过程,然后print每天瓶中剩下的整颗和半颗的数量,直到空瓶。第二问是,求整个simulation过程中,瓶中剩下1整颗,0半颗的概率。最后问了running time。

除了印度姐姐全程冷漠脸以外其他面试官都很热情友好一天下来感觉面试总体难度还行,并没有某些面经那么难(面之前看别人的面经真是吓得不轻……) 接下来默默等结果吧