opt期间买房的利弊

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
[Google级团队]
实时大数据分析领域践行者
北京/深圳-大数据/搜索/机器学习岗
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 1556|回复: 34
收起左侧

林荫昂塞

[复制链接] |试试Instant~ |关注本帖
juritan 发表于 2018-2-24 13:06:02 | 显示全部楼层 |阅读模式

2018(1-3月) 码农类General 博士 全职@Linkedin - 猎头 - Onsite  | Other | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x



游客,本帖隐藏的内容需要积分高于 66 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.

. more info on 1point3acres.com
面完到今天还没有回信。感觉多半是凉了。还是发一下面经回报下地里顺便攒个RP。
心得体会:虽然他家系统设计就那么几道很容易撞上,但是就算准备了也不一定能答好。建议大家最好自己从头到尾所有细节写一遍,有条件的话找个朋友来mock一下比较好。


补充内容 (2018-2-27 09:52):
修正一下KV store设计那道题。只是说random写会很慢要避免,顺序写会很快,random读没问题。。

补充内容 (2018-2-28 07:17):. From 1point 3acres bbs
因为有其他offer在等,所以催了一下recruiter,今天通知说已经过了HC开始准备team match啦,谢谢各位的祝福。

本帖被以下淘专辑推荐:

xljob 发表于 2018-2-25 01:13:45 | 显示全部楼层
感觉infra设计轮好长好难啊。。
回复 支持 反对

使用道具 举报

hyliu0000 发表于 2018-2-25 03:52:29 来自手机 | 显示全部楼层
回复 支持 反对

使用道具 举报

hyliu0000 发表于 2018-2-25 04:05:06 | 显示全部楼层
额 白打那么多字。都没打出来。好吧再发一遍。
楼主 几个问题探讨下。kv设计 能实现顺序读吗? 还有每个文件大小多少? 太大太小都会有影响。这里面trade off楼主是怎么考虑的? 第二个设计单机实现应该不难,难的是如何scale? 第三个设计不需要每个host每个指数一个queue吧;只需要每个message里面声明node和指数的信息就好。另外 load balancer是没法帮你找到需要的queue吧。
回复 支持 反对

使用道具 举报

hyliu0000 发表于 2018-2-25 04:05:58 | 显示全部楼层
另外 感谢楼主发这么详细的设计面经。点赞
回复 支持 反对

使用道具 举报

hyliu0000 发表于 2018-2-26 07:13:08 | 显示全部楼层
其实KV设计是最考验分布式系统设计的一种题。 比什么设计个tinyurl什么的要复杂的多。
回复 支持 反对

使用道具 举报

starrymao 发表于 2018-2-26 22:55:38 | 显示全部楼层
楼主我积分不够,能不能麻烦把面经发到邮箱啊,太感谢了。
liuning82@gmail.com
回复 支持 反对

使用道具 举报

 楼主| juritan 发表于 2018-2-27 09:50:57 | 显示全部楼层
hyliu0000 发表于 2018-2-25 04:05
额 白打那么多字。都没打出来。好吧再发一遍。
楼主 几个问题探讨下。kv设计 能实现顺序读吗? 还有每个文 ...

“kv设计 能实现顺序读吗? ”这个我原题里没说清楚。。应该是random写会很慢要避免,读的话就还好。所以就根据内存中的hashtable找到某个key对应在disk上的文件是哪个,并且offset在哪里,就可以读到相应的value了。
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
“还有每个文件大小多少? 太大太小都会有影响。这里面trade off楼主是怎么考虑的? ”
这里当时没有仔细讨论。。我只说了太大的话bakcup和recovery会比较难。所以要分成小文件,就假设大概4GB一个文件这样。面试官没有问什么。

“第二个设计单机实现应该不难,难的是如何scale? ”. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
我当时想说如果有多个consumer怎么办但是面试官就说假设只有一个consumer。。但是producer可以是多个的。主要还是在考多线程的理解和使用吧?

“第三个设计不需要每个host每个指数一个queue吧;只需要每个message里面声明node和指数的信息就好。另外 load balancer是没法帮你找到需要的queue吧。”


但是用户到时候是要求具体某个host的某个指数的。如果所有host的message放在一起,那query的时候还要再进行一轮filter呀。既然如此为什么不直接就分开。
software load balancer应该可以做这件事的。。以前看到某个系统设计题就是在software load balancer中保存一个hashtable之类的结构可以寻找某些message需要redicrect到哪个server。
所以我是想的用类似的用法。不过在这里用的对不对就不知道了。。。
回复 支持 反对

使用道具 举报

 楼主| juritan 发表于 2018-2-27 09:55:45 | 显示全部楼层
starrymao 发表于 2018-2-26 22:55
楼主我积分不够,能不能麻烦把面经发到邮箱啊,太感谢了。-google 1point3acres
liuning82@gmail.com

我这个分设的很低哒。你去新人报道贴里发个贴就基本够啦。
回复 支持 反对

使用道具 举报

hyliu0000 发表于 2018-2-27 12:20:46 | 显示全部楼层
juritan 发表于 2018-2-27 09:50
“kv设计 能实现顺序读吗? ”这个我原题里没说清楚。。应该是random写会很慢要避免,读的话就还好。所以 ...

KV设计确实比较难,你答得不错了。

c++写多线程确实蛮蛋疼的。。 java的话 你就可以直接调用blocking queue了。。。

至于第三个设计, 我觉得你想的还是有点问题的。 你的这些data point不管怎么样都是要存到数据库里面的。 你提前filter的话,又能有什么性能上的优势呢?到时query的时候是一样的, 要by host, by time, by指数。 另外你这么设计是有瓶颈的。 你的host越多,指数越多,你的kafka的topic就越多。 但是kafka得topic也不能无限增长啊。 主要是zookeeper也是有上限的。
回复 支持 反对

使用道具 举报

ws775901 发表于 2018-2-27 13:31:33 | 显示全部楼层
最后一轮那个题,我觉得可以用raft算法来处理在服务器不稳定的情况下数据一致性问题。比如一开始有5个server. 我们通过leader election 选出一个leader来作为master和用户交互,同时和其它server交互保持数据一致性。当客户端发送msg给leader, leader会先确保大多数servers都收到了这个msg才会commit这个msg到自己的state machine上。 当leader挂了, 其他server会因为超时而自动选择一个新leader, 所以即使msg没发出去,新leader没有收到这个msg,可以考虑让用户重发。而且这种情况,即使后来那个server恢复了,数据一致性依然维持,它挂之前处理的msg会由于太老了而被弃掉,同时它也会根据新leader发过来的数据来更新自己的state machine.
回复 支持 反对

使用道具 举报

头像被屏蔽
wicwawa 发表于 2018-2-27 14:04:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

hyliu0000 发表于 2018-2-27 22:59:25 | 显示全部楼层
ws775901 发表于 2018-2-27 13:31
最后一轮那个题,我觉得可以用raft算法来处理在服务器不稳定的情况下数据一致性问题。比如一开始有5个serve ...

额。 最后有说让设计数据存储吗? 你这个放到第一个kv设计还靠谱点。
回复 支持 反对

使用道具 举报

ice9123 发表于 2018-2-28 02:13:00 | 显示全部楼层
我上周三面的,还没有消息,似乎他家特别慢。楼主加油,祝好运。
回复 支持 反对

使用道具 举报

 楼主| juritan 发表于 2018-2-28 07:18:45 | 显示全部楼层
wicwawa 发表于 2018-2-27 14:04
楼主有消息了吗?能分享下timeline吗?谢谢啦!
. visit 1point3acres.com for more.
1月底电面的,然后上周二面试的,recruiter说本来应该星期三review,但是我因为手头有其他offer在等就催了一下提前到今天给review,通知说过了开始team match。
回复 支持 反对

使用道具 举报

 楼主| juritan 发表于 2018-2-28 07:32:15 | 显示全部楼层
hyliu0000 发表于 2018-2-27 12:20
KV设计确实比较难,你答得不错了。

c++写多线程确实蛮蛋疼的。。 java的话 你就可以直接调用blocking ...
.1point3acres缃
我当时的想法是使用不同的queue并不算是提前filter,而是利用LB直接在各个server把message传进来的时候就分配到各个queue里了;如果只用一个queue,当数据很多的时候还是需要把queue分成多个partition,还是需要LB来转发message。这样分成不同的queue并不会增加复杂度,还能节省query的overhead。
但是我觉得你说的也很有道理。主要是我没有实际用过kafka,就想当然的以为应该可以比较efficient的支持大量topic。。。这样的话需要确实需要考量多个topic的tradeoff。
不过当时面试官似乎没有太纠结scalability的问题,后面主要在问消息丢失后的处理,着重在问failure resilience了。
回复 支持 反对

使用道具 举报

hyliu0000 发表于 2018-2-28 08:05:04 | 显示全部楼层
juritan 发表于 2018-2-28 07:32
我当时的想法是使用不同的queue并不算是提前filter,而是利用LB直接在各个server把message传进来的时候就 ...
-google 1point3acres
kafka的partition本来就是需要的。 是一种支持水平扩展的表现。 如果不用partition就失去使用kafka的意义了。partition多了读写都会快。 就跟你在load balancer后面放server是一个道理。 都是为了并行处理。 不过貌似面试官不纠结这个。。 也就无所谓了。 有的时候,系统设计就是让对方满意。 顾客喜欢什么姿势,咱们就摆什么姿势 :)
回复 支持 反对

使用道具 举报

freipan 发表于 2018-2-28 14:28:36 | 显示全部楼层
恭喜啊,infra很难进的。
回复 支持 反对

使用道具 举报

ice9123 发表于 2018-2-28 23:56:42 | 显示全部楼层
恭喜楼主啊,来沾沾喜气,估计我这几天也要出结果了
回复 支持 反对

使用道具 举报

 楼主| juritan 发表于 2018-3-1 03:08:14 | 显示全部楼层
ice9123 发表于 2018-2-28 23:56 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
恭喜楼主啊,来沾沾喜气,估计我这几天也要出结果了

加油加油!估计你也是这两天吧。祝好运!
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-4-27 08:56

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表