avatar
讨论两道L家的设计题# JobHunting - 待字闺中
y*s
1
1. Design IP black List
- 这个题乍看一下感觉就是一个HashSet就可以解决了,最多一个HashSet放不下,就用
模除法shard到多个server,这里可以扯一下load balancer和consistent hashing啥的
。还能想到的一点改进是,如果是IPv4的话,所有的地址可以用一个1GB大小的bitmap
放下。但是在IPv6就不可以了。
不知道还有什么注意点吗?
2. Design log monitor system: 好多机器,每个都有log,内容包括exception和error
等,设计一个系统检测这些错误,然后找出之前一段时间最多的错误等。
- 这个题我觉得有点像Top K URLs。我能想到的是:在机器端,根据错误的种类,分块
LOG,比如Error_1 都放在Log_1中,Error_2都放在Log_2中。有另外的一些server,比
如Server_1从所有的机器中读取Log_1,然后汇总报告。
不知道还能改进吗?
多谢~
avatar
h*0
2
第一题 nosql + cache不可以吗?
第二题 为什么要monitor log? 用airbrake这类的不行吗? 如果非要监测的log的话
,那么就multiple clients + central server。 client发现exception, 发给
central server, server count exception。这样就可以了把。
avatar
m*3
3
第二题能用mapreduce不?
avatar
y*s
4
第二个,要是机器太多,一个centralserver来不及呢?

【在 h*******0 的大作中提到】
: 第一题 nosql + cache不可以吗?
: 第二题 为什么要monitor log? 用airbrake这类的不行吗? 如果非要监测的log的话
: ,那么就multiple clients + central server。 client发现exception, 发给
: central server, server count exception。这样就可以了把。

avatar
g*d
5
第一题我觉得要看对方是否问你具体场景吧。如果仅仅就是单纯一个黑名单,自然是不
难。但是考虑到应用场景,一个简单的ip black list不是一个非常好的解决方案,具
体原因就是IP经常是动态的,而且IP经常是共用的。比如说某个用户干坏事,IP上了黑
名单,但是下一次可能是别的用户刚好被分配了这个IP,那个用户就没法用了不是。
IP黑名单可能要有相应的机制来把被列进来的IP再去掉,比如过了一定时间间隔之类。
还有就是结合其他一些技术来过滤掉恶意用户,保证正常用户不受影响。
上次去T面试时候刚好遇到一个面试官是他们家应对假帐号的,所以就聊了一些相关的
东西。
avatar
s*3
6
re

bitmap
error

【在 y******s 的大作中提到】
: 1. Design IP black List
: - 这个题乍看一下感觉就是一个HashSet就可以解决了,最多一个HashSet放不下,就用
: 模除法shard到多个server,这里可以扯一下load balancer和consistent hashing啥的
: 。还能想到的一点改进是,如果是IPv4的话,所有的地址可以用一个1GB大小的bitmap
: 放下。但是在IPv6就不可以了。
: 不知道还有什么注意点吗?
: 2. Design log monitor system: 好多机器,每个都有log,内容包括exception和error
: 等,设计一个系统检测这些错误,然后找出之前一段时间最多的错误等。
: - 这个题我觉得有点像Top K URLs。我能想到的是:在机器端,根据错误的种类,分块
: LOG,比如Error_1 都放在Log_1中,Error_2都放在Log_2中。有另外的一些server,比

avatar
p*6
7
第二题考你会不会用kafka和某流处理的工具,老题了
avatar
d*w
8
IP black list很多时候你要ban掉一个range ,使用172.16.8.0/24这样的方式表达的
。显然美版用hashset啊,除非你预处理时把所有的ip range都用单个IP表达出来。问
题是,ipv6有128位,你这样怎么玩?

bitmap
error

【在 y******s 的大作中提到】
: 1. Design IP black List
: - 这个题乍看一下感觉就是一个HashSet就可以解决了,最多一个HashSet放不下,就用
: 模除法shard到多个server,这里可以扯一下load balancer和consistent hashing啥的
: 。还能想到的一点改进是,如果是IPv4的话,所有的地址可以用一个1GB大小的bitmap
: 放下。但是在IPv6就不可以了。
: 不知道还有什么注意点吗?
: 2. Design log monitor system: 好多机器,每个都有log,内容包括exception和error
: 等,设计一个系统检测这些错误,然后找出之前一段时间最多的错误等。
: - 这个题我觉得有点像Top K URLs。我能想到的是:在机器端,根据错误的种类,分块
: LOG,比如Error_1 都放在Log_1中,Error_2都放在Log_2中。有另外的一些server,比

avatar
p*6
9
第一题的follow up要考你夸data center的解决办法
avatar
y*s
10
多谢回复,学习了

【在 g*******d 的大作中提到】
: 第一题我觉得要看对方是否问你具体场景吧。如果仅仅就是单纯一个黑名单,自然是不
: 难。但是考虑到应用场景,一个简单的ip black list不是一个非常好的解决方案,具
: 体原因就是IP经常是动态的,而且IP经常是共用的。比如说某个用户干坏事,IP上了黑
: 名单,但是下一次可能是别的用户刚好被分配了这个IP,那个用户就没法用了不是。
: IP黑名单可能要有相应的机制来把被列进来的IP再去掉,比如过了一定时间间隔之类。
: 还有就是结合其他一些技术来过滤掉恶意用户,保证正常用户不受影响。
: 上次去T面试时候刚好遇到一个面试官是他们家应对假帐号的,所以就聊了一些相关的
: 东西。

avatar
y*s
11
能再具体说说吗?多谢
没有用过kafka。。。

【在 p****6 的大作中提到】
: 第二题考你会不会用kafka和某流处理的工具,老题了
avatar
y*s
12
说的有道理,那觉得用trie怎么样,空间一定,还很小。还是你觉得这题就是完全考其
他的地方?

【在 d******w 的大作中提到】
: IP black list很多时候你要ban掉一个range ,使用172.16.8.0/24这样的方式表达的
: 。显然美版用hashset啊,除非你预处理时把所有的ip range都用单个IP表达出来。问
: 题是,ipv6有128位,你这样怎么玩?
:
: bitmap
: error

avatar
y*s
13
这夸center怎么办啊?能再说说吗?

【在 p****6 的大作中提到】
: 第一题的follow up要考你夸data center的解决办法
avatar
p*6
14
只能去看了。。。这L的infra track高频题。夸data center最简单的办法就是async
的replication,。
[在 yimingts (小人物) 的大作中提到:]
:能再具体说说吗?多谢

:...........
avatar
y*s
15
多谢回复!现在就去看看。

【在 p****6 的大作中提到】
: 只能去看了。。。这L的infra track高频题。夸data center最简单的办法就是async
: 的replication,。
: [在 yimingts (小人物) 的大作中提到:]
: :能再具体说说吗?多谢
: :
: :...........

avatar
h*0
16
第一题 nosql + cache不可以吗?
第二题 为什么要monitor log? 用airbrake这类的不行吗? 如果非要监测的log的话
,那么就multiple clients + central server。 client发现exception, 发给
central server, server count exception。这样就可以了把。
avatar
h*0
17
central server 可以scale up 啊

【在 y******s 的大作中提到】
: 第二个,要是机器太多,一个centralserver来不及呢?
avatar
m*3
18
scale up不是一个好的设计啊,应该是scale out, central server应该是一个cluster
,否则你会有single point failure问题啊
不过我还是觉得楼上说的要去看kafka是正解
avatar
m*3
19
scale up不是一个好的设计啊,应该是scale out, central server应该是一个cluster
,否则你会有single point failure问题啊
不过我还是觉得楼上说的要去看kafka是正解
avatar
d*w
20
一般就是用这个做。不过要不要你写code? 貌似在白板上把prefix tree给写出来还是
挺难的。

【在 y******s 的大作中提到】
: 说的有道理,那觉得用trie怎么样,空间一定,还很小。还是你觉得这题就是完全考其
: 他的地方?

avatar
g*g
21
2. pull is too long. push to a Kafka Q and use a dedicated cluster to
process. You can leverage Storm Spark etc.
avatar
m*3
22
不懂kafka,打算去看看了解一下。不过我理解好虫你的意思是说,server(producer)把
产生的log直接丢到Kafka Q里面, 然后有一个dedicated cluster(consumer)不断的从
queue里面取出log然后processing, 这个用来处理log的工具可以Storm or Spark,对么
avatar
b*5
23
yes, lots of big data processing follows this template. some signal. in
this case, errors, generated and got put on kafka. storm/spark processes,
and whatever got processed then got put into Nosql database

【在 m******3 的大作中提到】
: 不懂kafka,打算去看看了解一下。不过我理解好虫你的意思是说,server(producer)把
: 产生的log直接丢到Kafka Q里面, 然后有一个dedicated cluster(consumer)不断的从
: queue里面取出log然后processing, 这个用来处理log的工具可以Storm or Spark,对么
: ?

avatar
y*s
24
多谢楼上各位大牛的建议,学习到了很多
avatar
g*g
25
扔进C*,最多上面再加一层memcache/redis就是了。

【在 y******s 的大作中提到】
: 这夸center怎么办啊?能再说说吗?
avatar
h*0
26
我二逼了。。 说错了。。 就是cluster的意思。。

cluster

【在 m******3 的大作中提到】
: scale up不是一个好的设计啊,应该是scale out, central server应该是一个cluster
: ,否则你会有single point failure问题啊
: 不过我还是觉得楼上说的要去看kafka是正解

avatar
o*0
27
如果工作中没用到过kafka,redis, storm/spark之类的热门东西,面试design题时,说
要用它们解决,能行吗?问深了,会不会露馅?

【在 g*****g 的大作中提到】
: 扔进C*,最多上面再加一层memcache/redis就是了。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。