Redis

去字节跳动面试,结果被虐了。。。

大兔子大兔子 提交于 2020-11-11 08:22:35
作者:三级狗 链接:https://www.zhihu.com/question/31225105/answer/582508111 来源:知乎 著作权归作者所有。 挖出这个三年前的问题,就为吐槽今天字节跳动的面试。 人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的。 我一听 呀?那我这岂不是就不优秀了吗,于是毅然决然和女朋友分了手。 人们都说,互联网寒冬来了,这个时候还在大面积招人的公司,必然是牛逼的公司。而这个时候勇敢跳槽的人,必然是牛逼的人。 于是2019年1月25日下午14:00,我开始了字节跳动的社招面试。 为了这天,我前一天排老长的队理了个利落的发型,胡子刮得一干二净。穿上崭新的新百伦999,连袜子都是崭新的NB,墨绿色工装裤配酒红色卫衣,外面再搭一件精致的黑色羽绒小坎肩,准时准点出现在电脑屏幕前,准备开始视频面试。 去面试头条,你最好有点心理准备。我面试过头条的好兄弟给了我一句忠告。 不过邮件对考查内容写的一清二楚,所以一面,我并没有做太强的心理建设,事实证明我可能对通用型业务和软性技能的理解还不够透彻。 时间到了,画面里出现一个面积很小的房间,面试官坐在里面调节姿势和座椅靠背。这不是我第一次,但我却比第一次还要紧张。面试官跟我的一位闷骚朋友很像,长相、气质、说话声音如出一辙,我几乎差点问他这些年跟郑州那个女孩子还有没有联系,孩子到底是不是你的.

布隆过滤器过时了,未来属于布谷鸟过滤器?

此生再无相见时 提交于 2020-11-11 07:22:29
为了解决布隆过滤器不能删除元素的问题,布谷鸟过滤器横空出世。 论文《Cuckoo Filter:Better Than Bloom》作者将布谷鸟过滤器和布隆过滤器进行了深入的对比。相比布谷鸟过滤器而言布隆过滤器有以下不足:查询性能弱、空间利用效率低、不支持反向操作(删除)以及不支持计数。 查询性能弱是因为布隆过滤器需要使用多个 hash 函数探测位图中多个不同的位点,这些位点在内存上跨度很大,会导致 CPU 缓存行命中率低。 空间效率低是因为在相同的误判率下,布谷鸟过滤器的空间利用率要明显高于布隆,空间上大概能节省 40% 多。不过布隆过滤器并没有要求位图的长度必须是 2 的指数,而布谷鸟过滤器必须有这个要求。从这一点出发,似乎布隆过滤器的空间伸缩性更强一些。 不支持反向删除操作这个问题着实是击中了布隆过滤器的软肋。在一个动态的系统里面元素总是不断的来也是不断的走。布隆过滤器就好比是印迹,来过来就会有痕迹,就算走了也无法清理干净。比如你的系统里本来只留下 1kw 个元素,但是整体上来过了上亿的流水元素,布隆过滤器很无奈,它会将这些流失的元素的印迹也会永远存放在那里。随着时间的流失,这个过滤器会越来越拥挤,直到有一天你发现它的误判率太高了,不得不进行重建。 布谷鸟过滤器在论文里声称自己解决了这个问题,它可以有效支持反向删除操作。而且将它作为一个重要的卖点

MongoDB之Too many open files

非 Y 不嫁゛ 提交于 2020-11-11 04:48:28
在Linux下有时会遇到cannot open /dev/urandom Too many open files的问题。其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默认是65535)。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈,对于MongoDB来说,默认的文件打开数一般是不够的,需要使用ulimit去进行设置,以下是常见的MongoDB的最大打开文件数不足的报错。 -server: log pre-alloc server error: Too many open files 2019-01-31T22:18:26.744+0800 E STORAGE [thread1] WiredTiger (24) [1548944306:744242][5485:0x7f03b00ea700], log-server: log server error: Too many open files 2019-01-31T22:18:27.518+0800 E - [conn51828] cannot open /dev/urandom Too many open files 1. ulimt命令用途 1. 利用ulimit命令可以对资源的可用性进行控,Linux系统打开文件最大数量限制(进程打开的最大文件句柄数设置)。 2. -H选项和

Redis缓存穿透和缓存雪崩的分析与解决方案

女生的网名这么多〃 提交于 2020-11-11 04:44:42
一般情况下缓存和DB访问的关系 缓存穿透 指查询一个一定不存在的数据,由于缓存中没有该查询对象(缓存始终无法命中对应的数据),这时会去数据库查询数据,如果数据库中也没有对应的数据也无法写入缓存,在这种情况下,每一次查询不存在数据的请求都将去查询数据库,这就是缓存穿透 。 造成影响: 当在高并发的情况下,缓存穿透可能会拖慢数据库,进而拖慢整个系统,甚至宕机。 解决办法: 当在缓存中无法命中对应数据时,且访问数据库也没有查询到目标数据,这时向缓存中存入空结果。这样的情况下,每一次查询首先判断redis中是否有目标数据(即exist(String key)),key存在就直接返回缓存结果,即使缓存结果是空值。 缓存雪崩 当大量缓存在同一时间段内失效的时候,会在这段时间内引发大量数据库访问查询,给数据库带来较大的压力。 解决办法: 在数据库访问层面,加锁/队列式的穿行访问 分析系统缓存实际情况(包括用户使用场景等),设计分布较为均匀的失效时间。 数据预热,在能遇见的并发高峰来临前,提前均匀的、有计划的更新缓存数据,防止在并发高峰期出现缓存大量失效的情况。 设置业务热点数据永不过期,只做缓存更新操作 在分布式数据库的情况下,将热点数据均匀分布,分散缓存雪崩后带来的单个数据库访问压力 访问限流(最不推荐) 这里比较推荐通过使用 2 、3 、4 方法来预防解决缓存雪崩问题

Java/后端学习路线

我们两清 提交于 2020-11-11 04:38:17
前 言 这期我想写很久了,但是因为时间的原因一直拖到了现在,我以为一两天就写完了,结果从构思到整理资料,再到写出来用了差不多一周的时间吧。 你们也知道丙丙一直都是创作鬼才来的,所以我肯定不会一本正经的写,我想了好几个切入点,最后决定用一个 完整的电商系统 作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套视频和资料, 暖男 石锤啊,这期是呕心沥血之作, 不要白嫖 了。 正文 在写这个文章之前,我花了点时间,自己臆想了一个电商系统,基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线。 Tip :请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次分析。 前端 你可能会会好奇,你不是讲后端学习路线嘛,为啥还有前端的部分,我只能告诉你, 傻瓜 ,肤浅。 我们可 不能闭门造车 ,谁告诉你后端就不学点前端了? 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的,那我觉得最基本的技术栈得熟悉和了解吧,丙丙现在也是偶尔会开发一下我们的管理系统主要是 VUE 和

微博数据库那些事儿:3个变迁阶段背后的设计思想

ぐ巨炮叔叔 提交于 2020-11-10 18:40:56
微博数据库那些事儿:3个变迁阶段背后的设计思想 编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由肖鹏在高可用架构群分享。转载请注明来自高可用架构公众号「 ArchNotes 」。 肖鹏,微博研发中心技术经理,主要负责微博数据库(MySQL/Reids/HBase/Memcached)相关的业务保障、性能优化、架构设计,以及周边的自动化系统建设。经历了微博数据库各个阶段的架构改造,包括服务保障及 SLA 体系建设、微博多机房部署、微博平台化改造等项目,10 年互联网数据库架构和管理经验,专注于数据库的高性能和高可用技术保障方向。 数据库专家的成长感触 “与 MySQL 结缘主要也是源于兴趣。第一份工作是在一家小公司,由于人手有限,各个领域的工作都要接触,相比之下我发现还是对数据库最感兴趣,所以就一直从事和数据库相关的技术工作了。而随着工作年限的增加,在数据库方面积累的经验也逐渐增多,越来越觉得数据库管理员(DBA)是一个偏实践的工种,很多理论上的东西在现实中会有各种的变化,比如“反范式”设计等。因此,如果想成为数据库方面的专家,建议大家一定要挑选好环境,大平台很多时候会由于量变引发质变产生很多有挑战的问题,而解决这些问题是成为技术专家的必经之路。” —— 肖鹏 微博数据库经历的变迁 首先为大家分享微博数据库经历的几个重要的阶段。 初创阶段 初期微博作为一个内部创新产品

京东大佬,传统三年,2个月终拿到0ffer 中间经历了什么?

此生再无相见时 提交于 2020-11-10 13:20:52
点赞关注,不会迷路! 前言 今天为大家分享一位来自京东大佬的面试历程,从传统企业工作三年,历时2个月的时间,终于跳槽到了京东,拿到大厂offer的故事。 学习笔记放文章末尾 ! 京东一面 1.线程池用过哪些,线程池有哪些参数,然后问我几个常用线程池的用法和实际场景问 题。 2.集合框架的知识,hashmap,ArrayList,LinkedList源码相关知识,基本整个介绍了 一遍,与hastable,concurrenthashmap相互的关联和区别 3.说几个垃圾回收器,cms回收器有哪几个过程,停顿几次,会不会产生内存碎片。老 年代产生内存碎片会有什么问题。 4.讲讲快速排序,分析一下时间复杂度? 5.双亲委派模型介绍一下 6.java中同步、volatile关键字 7.jvm内存分区,为什么要有新生代和老年代 8.有做个VM内存优化吗? 9.数据库索引主键和唯一索引有什么区别 10.聚集索引和非聚集索引的区别? 11.MySQL存储引擎innoDB和MylSAM的区别? 12. innoDB的B+树索引叶子节点的Data域存储的是什么?MylSAM的B+树索引叶子节 点的Data域存储的是主键还是物理地址? 京东二面 1.MySQL innodb的b+树索引,主键索引,聚簇索引有什么区别。 2.数据库四大特性 3.事务的四大隔离级别 4.jvm场景问题

【秋招总结】渣本Java应届生如愿以偿拿到阿里跟腾讯offer(双offer面经)

蓝咒 提交于 2020-11-10 11:55:14
前言 今年9月10月份,每天苦逼的刷着群里更新的面试题,逛着群文件里面的大厂面试,每天的心情就像一个一首歌,“山路十八弯”。 点击此处免费进群,暗号:CSDN 看过别人发的腾讯大厦,幻想过腾讯大厦向外看的感觉。 大一暑假去过阿里杭州园区,担忧自己有没有机会再去。 真的没想到迷茫中的自己等来了腾讯,又迎来了阿里。 终有一天,梦想实现,想起阿里园区中的一句话, “谢谢那个曾经努力的自己” 。 面试情况 腾讯(WXG微信支付) 投的是CSIG云产业群,意外的被WXG微信组捞起,感谢机缘巧合吧。 腾讯简历面(编程 + 33分35秒) 记事本里手写OOP实现一个签到的程序。 从一堆数字中O(n)找不重复的数字。 字符串处理,魔改KMP。 数学智力题,64匹马取前8,问最快要几次。11次。 简历面,问项目做了什么,主要的技术栈。 腾讯一面(41分38秒) 深入问了我项目。 线程池,连接池,各自优点。 Java常见设计模式。 讲讲builder建造者模式。这个答的不太好。 TCP/UDP区别,什么时候该用什么。 UDP实现TCP。 设计一个APP,TCP/UDP具体运用。 数据库索引,数据库引擎。 学习方向,我说C++/Java/Python比较均衡。 科技创新立项都做了什么。 没给我机会问问题,大概还是我太菜了。 腾讯二面(视频面试,75分钟,主要是写代码) ACM复杂规则模拟