注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
楼主大概10月中旬申请的db,一周之后和recruiter简单聊了一下,在之后的一周通过了电面。十一月初进行了VO,一周之后拿到Offer。整个流程效率非常之高,楼主不知道是不是个例。
VO一共是四轮,分别是BQ,系统设计,算法,和应用编程。BQ轮是30分钟,其他都是一小时。
Systems Design (Architecture)
和通常的Systems Design可能有点不一样,不是从零开始设计一个系统的每个方面,而是在一个已有的系统上面添加新功能并满足一定的效率和安全要求。可能是New Grad的系统设计降低了一点难度,也有可能是很多公司的Systems Design就是这么考的,只是楼主见识短浅。
系统是一个file system。一个SQL database来负责存储每个用户有哪些文件,一个Storage System来实际存储文件,一个processing service来接收处理request,然后按照需求给database和storage下指令做对应的操作。Processing service不能存任何信息,所有metadata都要存在database里。已经有了Create File和Read File这两个API,现在要增加List File,Delete File和Delete All这几个API,并要支持异步操作和应对网络或者组件故障。
算法 (Algorithms)
楼主遇到了一道Map Reduce的题,比较稀有(?)。题目是有很多的key value pair (<char, int>),要求找到每个key对应的最大的k个value,要求使用map reduce框架解决。面试官会解释一下map reduce框架并给出python代码作为参考(可以用任何语言写伪代码),不过建议大家还是事先了解一下map reduce的架构,否则现场理解太花时间了。
楼主先给的基础方法是全部由reducer搞定。优化是让mapper先按照key处理目前收到的那部分,之后交给reducer整合。可以降低reducer需要处理的数据量。面试官问了mapper和reducer是时间空间复杂度,最后问了一下特定情况下的最优mapper数量。
应用编程(Coding)
遇到了地里被反复提及的Lazy Array。创建的时候提供一个int array(之后除了map不会再修改其中的内容或者增加新的项),两个主要的API
map(f):对每一项应用这个函数,返回一个包含结果的新Lazy Array。
indexOf(x): 返回第一个等于x的项的位置
之所以叫Lazy Array是因为在map的时候实际上不需要当场对每一项应用这个函数,而是可以将函数存起来,直到叫了indexOf的时候再依次对每一项应用所有被map的函数,然后判断是否等于x。
BQ具体内容省略了。大概涵盖了简历问题,过去实习manager的反馈,以及场景题之类。不过要吐槽一下,楼主在30分钟里被问了六七个问题,而且后面时间不够的情况下说咱们还是得把所有问题都问完,还要追问细节。这也太紧张了,不知道是不是正常情况。当然也可能是楼主回答前几个问题的时候花了太多时间 :(
除了BQ问题太多时间不够,总体的面试体验还是很好的。每道题都有书面描述,面试官还会先给你几个范例来让你理解题目以及提问题,可以说是很贴心了。 |