金服|小姐姐面试蚂蚁金服被虐经历,敖丙心疼...( 三 )


我:啥cass的?
小哥哥:就是cassandra
我:(我脑子在想什么卡丝娜的瑞,上面mq被教育过了)我果断的说不知道 (实际上我听过,只知道是个nosql数据库,没用过)
小哥哥:行,那说了这么多我们来写一道题把?
我:(我擦我才想起来还得写题,这不是先上来写题的吗,节奏怎么不对?) 好的好的
小哥哥:LRU知道吧?来实现这个接口
我:(哎我抖了个机灵....想展示一下自己知道的多),我可以用LinkedHashMap嘛,我继承LinkedHashMap,重写removeEldestEntry
小哥哥:不行,给你接口当然只能实现这个接口
我:哦哦好的。(好像弄巧成拙了),那我先说说思路吧,通过链表,存储节点,新插入的节点插入到头部,访问过的节点也移动到头部
小哥哥说:好的你写吧
我:我在草稿纸上画了一下,然后边写边说我的写什么,其实我感觉不说点啥有点奇怪,我就边写边说我在写啥。
我:大概过了10多分钟,我写完了。
小哥哥:看着我的代码,他也捋了一遍思路,口述一下说恩可以,那说说时间复杂度和空间复杂度把
我:我用了HashMap以空间换时间的思路存储了key和node之间的关系,并且有记录头尾节点的引用,并且链表是双向链表,因此插入和查找的时间复杂度都是O(1),空间复杂度是O(n)。
小哥哥:那说说要线程安全的话怎么改造吧
我:简单粗暴就是在每个方法上都加锁了,在竞争不是很激烈的时候挺合适的,再进阶一下,可以使用concurrentHashMap,然后再锁方法内部,移动链表等代码,减少锁的粒度。
小哥哥:行,那差不多了,你有什么想问的么?
我:我刚才的表现怎么样
小哥哥:从刚才的回答可以看出你有一定的积累,包括刚才你说的LinkedHashMap,可以看出你也有所准备的(emmm...好像让小哥哥觉得我能写出这个代码是因为我写过LRU...讲真我只写过继承LinkedHashMap的....从node实体都要自己建的开始我还真没写过..),不过还是需要多看看公众号,多看看一些好的博客,逛逛社区,至于今天的结果我答复不了,还是得会去讨论的。
我:是是是,持续学习,好的。
小哥哥:那今天就到这了。
我:嗯嗯好的好的
结果
说好的半小时左右,这一波下来算上笔试花了1小时25分钟.....结果挂了.... 回顾下刚才的情况,鹿晗那波没答出本地缓存、KafKa推拉都不知道、LSM树竟然不知道、cassandra也不晓得..推断出这个人好像知识面不是很广的样子...难受确实惭愧。
事后我去查了查鹿晗那波为挂了:主要是时间点在17年10.8号,17年的时候微博的报警扩缩容还是人为的,没有自动扩缩容,并且10.8号,国庆期间很多人出去玩了都没打开微博,然后还有很多平时不玩微博的吃瓜群众,一听到这个消息都打开微博,这波冷数据击垮了微博某个系统,导致雪崩。
KafKa 是拉,拉的时候没消息阻塞住,或者等消息达到一定数量拉请求才返回。
LSM(Log Structured Merge Trees),像日志一样顺序追加,顺序写,因此写入性能很高,为了优化读,到一定阶段会排序合并。
cassandra 上网查吧..这里不再赘述。
总而言之还是太菜了...
共勉。
 金服|小姐姐面试蚂蚁金服被虐经历,敖丙心疼...
文章图片
我是敖丙,你知道的越多,你不知道的越多,下期见。


推荐阅读