注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
地里没看到过这家的面巾,一开始觉得是一家新锐的在线协作工具。抱着试一试的心态就开始了面试的过程。
其他不论,每一轮的面试官和所有交流过的HR都表现的很有活力,看起来是有冲劲的一家公司。并且他家东西也确实挺好用的。
不过可能本人并不是他们所需要的人以及他们所需要的技能吧。
他家的抠钉轮其实都是很有意思的一些问题,比如实现以下crtl+z和crtl+shift+z这种操作,实现一些具体功能。题目组织的都很好。唯一吐槽的就是信息传递可能很不到位,尽管提前声明了面试时要使用的语言以及与HR确认过面试中使用的语言,不巧楼主可能正好写他们不熟悉的语言西十十,所以结果需要花费大量时间去做一些转换工作,导致最后时间很少,抠钉没扣碗。虽然HR和面试官都表示没关系,但最后直接挂可能这是一个重要原因吧。
他家的设计题也都很有意思,可能都是他们实际使用的系统,一个是实时的热搜系统;另一个是一个在线PPT模板和使用模板生成PPT实例的系统,要求PPT模板更新时候,给用户推送通知,由用户决定是否要使用更新后的模板。经过一点点计算就会发现其对于性能和可扩展性的要求是很低的。也许是楼主自身问题,总是在想高并发场景,复杂的巨大的系统如何能够保证运行的可靠性与有效性。但是对于这些实际QPS可能低到1QPS/s的服务,确实很多操作可能都显得有过度工程之嫌了。还没有具体follow过反馈。虽然楼主长期得到的培训都是要鼓励不同的解决方案,只要言之成理,满足设计要求就可以。但是以我实际面试经验而言,有很多公司,尤其是规模比较小的公司,如果你没有“正好”回答出他们实际的解决方案,后果可能都不太好。真的有需求还是需要对他们实际的技术栈有所了解,投其所好。而对于大公司这部分就不同了。只要是有理有据,大部分面试官不会在意你具体的解决方案。甚至当你提出一些不同但有效的解决方案时,他们也会为你背书。
几轮BQ中按照要求给了演示,把自己的大系统给匿名化并简化,抽象后做了介绍。这里的经验是,有大不说小。即使对方问你你做过一个小的工程是什么,也不要真的傻傻介绍2-3个月这样的工程。就直接讲干的最长,最复杂,最有挑战的大项目。面试中虽然对方一直跟你说要你简要回答,其实从他们何时动笔何时打字就可以判断,面试官都是踩点打分的。讲大工程,大问题,巧妙解决的过程比真的按照面试官要求讲小工程,self-contain更重要,毕竟你一个上面显示了众多的点,面试官只会多打分不会扣分。
一类重要的BQ问题,也是升值包裹中常见问题就是关于冲突解决。要回答好这个问题相当不容易,尤其是在冲突可以评判对错,或者可以有价值判断空间的时候。有对错,那么每个人判断就容易不同,证据链条和逻辑推理因人而异。有价值判断就更加棘手,他首先没有绝对的正误之分,其次更是主观多于客观。这两种情况需要尽量避免作为面试中的例子予以呈现,因为他会是一类很难论证,并且总能被找到刁钻角度攻讦的。较好的例子是使用辩证统一的矛盾,就是说每个人初始观测都有一定道理,但是又看起来互相矛盾。而最后是通过你的工作,使得大家意识到每个人期初只是看到了问题的不同侧面,所谓的冲突并不矛盾,只是一体两面,从而实现了正反合。
对于这两个具体系统设计,因为其原始的要求非常低,其实没有什么好讲的,如果你的规模是1QPS,理论上随便怎么搭应该都问题不太大。如果你的单词传输的数据量不过是每次几KB,你怎么传,怎么存,问题都不会太大。这里说说楼主觉得的,较为复杂的高并发场景下的情况:
求点大米,谢谢啦!
挖个坑,之后填PPT模板与实例的设计。
补充内容 (2021-11-01 02:09 +8:00):
Trending 系统的简要概述 补充:
另一种BloomFilter的变形是 Count Min Sketch:
考虑如下2D数组,列坐标idx表示bloom filter的位信息,行坐标是不同的hash函数。对于一个topic T, 用不同的hash函数散列出bloomfiler的位信息,并在下表中对应位进行累加操作。操作同时记录所有操作位中最小值,作为当前topic的热度估计。
优点是,恒定空间 空间总量是O(HWS),Hash Function Number H,位宽 W和统计计数字款S
可以根据BloomFilter的推导公式来计算其错误率。
缺点是,容易误码,考虑一组比较hot的topic与某一个cold的topic覆盖了同一组hash值,这个cold topic可能会有一个比较大的热度->甚至比这一组较热的topic中最热的topic的值还大。
或者说,这个BloomFilter的特点是,访问量值不一定是真下限,访问量值一定是真上限。而上限与真实值之间无关。这个系统可能更不能接受这样的伪阳性。
idx0 idx1 idx2 idx3
hash0 2
hash2
hash3
hash4 |