注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
最近面试的时候碰到一种类型的题目,叫做Problem Solving, 感觉和System design类似吧
但是并不是一个design,而是给你一个问题,但是不给你具体条件,让你自己去做并优化。
我被微软的PM面过,之前没有过准备,因此很慌。
比如说:
给你Log文件,需要找出最近一天出问题最多的一个Service是哪个。
.google и
我当时就很慌,然后问了很多clearify比如log文件有多大啊,是不是都在一个文件里啊这种。
然后文件的写法啊, 我当时自己assume就是 Time, Machine, Service, Status
. check 1point3acres for more.
然后说的是做LFU,我说如果考虑到真实情况,可能不是只想知道最多问题的Service (感觉不一定需要考虑这个)
. 1point 3acres
而且因为技术出了点问题,在ide里打字粘贴到对话框里,总之就贼慢。没有写完
最后在懵逼状态被考官问了个follow up说这个问题存在一个问题,是什么,我猜了半天overflow啥的,结果说是两个有同样频率。
---------------------------.google и
后面自我反思一下:.google и
1. 首先这种题目因为并不是设计,所以首先考虑的应该是如何解决问题,而不是真实情况 ??? 不知道是不是应该如此
2. 所以为了解决问题简单,尽量给出简单的假设。
3. 先给出简单情况的解决方案,比如说直接Map Cnt
4. 不慌着写代码,而自己说可能存在的拓展情况, 让面试官决定你应该思考到哪一步停下来,看你的代码能力
. Χ
---------------------------
比如这道题,如果再让我作答一次:
1. 最基本的,遍历的同时使用一个map记录:Log -> Frequency, 记录最高的Freq和Log,如果有Log的Freq高于max则更新Max-baidu 1point3acres
2. 维护一个Max Heap, 按照Log的Frequency作为比较原则. .и
3. 如果这个Log是一个Stream,则可以使用LFU
4. 可能存在文件过大的情况 --> 预处理 或者 parallel computing, 几个计算机分别得出一部分的most frequency, 然后比较不同机器的结果,得到最后答案
. From 1point 3acres bbs
这只是我的一点思考,不知道有没有面过类似题目的小伙伴或者甚至有没有面试官来说一下这类题目呢?
|