面试

redis为何单线程 效率还这么高 为何使用跳表不使用B+树做索引(阿里)

丶灬走出姿态 提交于 2020-11-26 03:56:04
如果想了解 redis 与Memcache的区别参考: Redis和Memcache的区别总结 阿里的面试官问问我为何redis 使用跳表做索引,却不是用B+树做索引 因为B+树的原理是 叶子节点存储数据,非叶子节点存储索引,B+树的每个节点可以存储多个关键字,它将节点大小设置为磁盘页的大小,充分利用了磁盘预读的功能。每次读取磁盘页时就会读取一整个节点,每个叶子节点还有指向前后节点的指针,为的是最大限度的降低磁盘的IO;因为数据在内存中读取耗费的时间是从磁盘的IO读取的百万分之一 而Redis是 内存中读取数据,不涉及IO,因此使用了跳表; 至于redis的跳表原理 参考: 聊聊Mysql索引和redis跳表 ---redis的有序集合zset数据结构底层采用了跳表原理 时间复杂度O(logn)(阿里) mysql的B+索引原理 参考: 一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试) Kafka索引 参考: kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里) 接下来问题来了:为何 redis使用单线程 读取速度还这么块呢 今天下午,烟哥吃饱了撑着没事干,上班时间到处工(zhuang)作(bi)!只见同事小刘的桌上摆了一本Redis相关的书籍,内心嘿嘿一笑:“终于,又有机会勾搭小刘了!” 于是有了如下对话 "嗯,不要方,跟着我思路来想!"烟哥道。

私藏已久的前端性能优化技巧大全送你!

馋奶兔 提交于 2020-11-26 02:04:17
随着互联网的迅猛发展,前端发展也进入了一个新时期,每年都会涌现大量的新技术,让人目不暇接。 不管前端技术如何变化,前端性能优化始终都在一个非常重要的位置上,因为性能优化决定着用户体验。 同时性能优化是大厂面试的必考内容。 如果大家以后想要进入大厂工作, 那么性能优化是你必须迈过的一道门槛。 因此, 掌握前端性能优化变得刻不容缓 。 慕课网的 《你不知道的前端性能优化技巧》 这本专栏一定能为你指路,原价 48 元,现在 免费 领取! 本专栏面向各个层级的前端开发者,不必担心专栏内容难以理解 。 即便你是完全没有接触性能优化的新同学,也能够轻松掌握相关知识与技能。 如何免费领取? 微信扫描下方二维码 参与活动即可免费领取 划重点:领取后可永久阅读 福利不止一个, 免费送专栏的同时, 另赠5本前端图书(包邮)!! (本书由博文视点提供) 注: 此次活动不强制,若不参与邀请免费活动,送你 15元优惠码 : qdyh723 ,在支付时输入此优惠码,即可享受到手价 33元 >> 长按识别二维码进入课程 这是一门怎样的专栏? 本专栏并不局限于某个具体方法的讲解,而是以通俗易懂的语言风格、便于理解的课程示例去介绍 前端性能优化的方方面面 ,从原理详解到项目实战,重点培养大家性能优化的思维与方法。 为了确保所学的内容能够实际运用于自己的日常工作中,专栏所讲解都是一些基础的知识和优化方法

Android开发如何准备技术面试(含Android面试押题)

北城余情 提交于 2020-11-26 00:39:12
今年毋庸置疑是找工作的寒冬,每一个出来找工作的同学都是值得尊敬的。现在找工作,虽然略难,但是反过来看也会逼迫我们成为更加优秀的自己。 但是不管是旺季还是寒冬,有一些优秀的同学找工作还是挺顺利的。所以说还是得提高我们自己的硬实力。 本文主要解答这些问题,如果说你想知道以下几点,就可以看下去了 当下好找工作嘛 如何写简历 如何挑选靠谱的公司 我的经验水平能拿多少的工资 问到项目中的技术难点怎么回答 2021年Android面试押题 如何和 HR 聊天,比如谈钱等等 一、当下好找工作嘛 想必大家现在经常能看到某某公司又裁员了,会担心是不是找不到工作了。其实总的来说虽然当下的环境确实不怎么好,但是有裁员的公司,也肯定有招人的公司,并且招人的公司一定比裁员的公司多得多。 那么再来回答这个问题「当下好不好找工作」。对于技术好的人来说,永远不会担心这个问题。但是对于技术不那么好的人来说,确实需要一些技巧才能比别人有更多的机会。比如说写一封清晰明了的简历,在面试前好好准备等等。 总的来说,机会是留给有准备的人。无论环境好与差,认真准备的你肯定会比别人有更多的机会。 二、如何写简历 平时有在做修改简历的收费服务,在公司里也会当个面试官啥的,总的来说也算看过很多简历了。但是大部分人的简历的套路都是一样的,项目用了什么技术栈,做了什么功能,总的来说就是流水账。 那么一旦你写出有别于这类套路的简历

速看!由 DevOps 到 AIOps 的运维技术精选

好久不见. 提交于 2020-11-25 16:02:30
今天跟大家分享的是由 DevOps 到 AIOps 的运维技术精选, 下拉文末获取网盘链接 1.5G 的基础架构:如何让数亿用户无缝支持 IPv6? 一、概述 二、遇到的问题点及解法 三、架构设计 四、详细实施步骤 2.大促下的运维挑战:如何抗住双 11 猫晚 一、背景 二、播前成功率改进 三、卡顿率改进 四、资源成本效能 五、重保预案及措施 六、项目总结 3.和阿里文娱学“技术资源成本管控” 一、背景 二、文娱成本管理解决办法 三、文娱成本管理收益 4.详解 Ops 智能运维机器人,故障处理又快又准! 一、背景 二、常用场景介绍 三、技术实现方式 四、总结 5.智能运维的关键:自动化应用容量管理实践 一、概述 二、技术挑战与解法 三、技术方案 四、技术细节 五、总结 点击链接获取完整文档 链接: https://pan.baidu.com/s/1fnGXpy8B_mJmjuoEhNSigQ 提取码:1si7 ※部分文章来源于网络,如有侵权请联系删除;更多文章和资料|点击后方文字直达 ↓↓↓ 100GPython自学资料包 阿里云K8s实战手册 [阿里云CDN排坑指南] CDN ECS运维指南 DevOps实践手册 Hadoop大数据实战手册 Knative云原生应用开发指南 OSS 运维实战手册 云原生架构白皮书 Zabbix企业级分布式监控系统源码文档 10G大厂面试题戳领

蚂蚁二面拜倒在“数据库”脚下,闭关修炼半个月,我还有机会吗?

青春壹個敷衍的年華 提交于 2020-11-25 14:50:41
抱着侥幸心理投了蚂蚁金服后台JAVA开发岗,居然收到通知去面试,一面下整个人来都是懵逼的,不知道我对着面试官都说了些啥(捂脸~~)。侥幸一面居然过了,三天后接到二面通知,结果这次不再幸运,败在数据库和一些JAVA知识手上。在此之前我没咋复习数据库、JVM、JAVA一类的知识,有点后悔,下面给大家分享看下我的蚂蚁一二面都问了那些问题。。。 一面 (1)操作系统 讲一讲进程和线程 讲一讲多线程和线程池 Linux的最大进程数限制 (2)WEB 输入URL到页面加载的过程 后端怎么处理前端传过来的文件 (3)JVM GC机制(GC算法,分代收集,收集器,STW) (4)算法 给定一个数组a[N]和一个整数P,求a[i] + a[j] + a[k] =P,保证i<j<k 一面大概就是这些吧,有些记不清了。。。 二面 (1)Java JVM内存模型 Classloader双亲委派机制 讲一下ThreadLocal 线程间如何通信 (2)数据库 身份证如何有效建立索引 Innodb索引类型 聚簇索引和非聚簇索引的区别 索引失效的情况 写一个分页查询 MySQL 高并发环境解决方案? 数据库的读写分离、主从复制,主从复制分析的 7 个问题? 二面问到这些JAVA、数据库的知识我就卡壳了,没复习。。。 总结 以上是蚂蚁二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位

沸腾了!苏宁全员涨薪,每月最高多1万6!网友:这一刻,我希望我是苏宁人...

三世轮回 提交于 2020-11-25 13:50:20
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 程序员求职面试(ID:CoderJob)整理 内容参考自:央广网、 脉脉 近日,有网友在社交媒体上爆料,苏宁内部发文11月再次给员工大幅度涨薪!消息一出,引起了不少的骚动。 根据爆料, 此次苏宁薪酬调整个人最高涨幅达到150%,平均涨幅达到31%,个人月薪增长额最高达到16000元。 值得注意的是,这次调薪距离上次仅仅3个月,而且上次的涨薪幅度和这次相比较,简直是”小巫见大巫“。这对于苏宁员工来说,可是实打实的“喜报”。 根据网友发布的内部截图来看,苏宁共设置了三个调薪的时间点: 11月20日之前完成对苏宁总部中基层员工的薪酬调整。 12月20日前完成对全国各大区员工的薪酬调整。 明年3月底之前完成对新晋部门负责人以上员工的薪酬调整。 同时,截图还披露了苏宁年终奖的发放要求,所有年终奖将在春节前完成分配。 针对此信息,记者向苏宁内部人士进行了求证,对方回应在今年苏宁经营状况逆势向好的趋势下,为了进一步提高对人才的激励和互联网行业人才吸引力,苏宁确实开启了今年内的第二次薪酬调整工作。 此外,从今日(11月20日)苏宁公布的董事长张近东签发的内部信看,集团新的股权激励方案已完成前期准备工作,即将公布, 公积金缴纳基数也将进一步提高。

弄懂这些redis分布式锁知识点,明天就去跟老板谈涨薪!(建议收藏)

白昼怎懂夜的黑 提交于 2020-11-25 13:47:48
1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁。会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁。 本篇文章会将分布式锁的实现分为两部分,一个是单机环境,另一个是集群环境下的Redis锁实现。在介绍分布式锁的实现之前,先来了解下分布式锁的一些信息。 开始之前,记得点赞收藏加关注哦 ,需要下载PDF版本和获取更多知识点、面试题的朋友可以点一点下方链接免费领取 链接: 点这里!!! 799215493 暗号:CSDN 2 分布式锁 2.1 什么是分布式锁? 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。 2.2 分布式锁需要具备哪些条件 互斥性:在任意一个时刻,只有一个客户端持有锁。 无死锁:即便持有锁的客户端崩溃或者其他意外事件,锁仍然可以被获取。 容错:只要大部分Redis节点都活着,客户端就可以获取和释放锁 2.3 分布式锁的实现有哪些? 数据库 Memcached(add命令) Redis(setnx命令) Zookeeper(临时节点) 等等 3 单机Redis的分布式锁 3.1 准备工作 3.1.1 定义常量类 public class LockConstants { public static final

征稿通知

老子叫甜甜 提交于 2020-11-25 09:22:54
“ 欢迎关注微信公众号:java的架构师技术栈 ” 公众号介绍 — 本公众号致力于java技术系列的文章教程,目前在大鱼号、百家号、今日头条、网易号、知乎等各大平台均更新自己的文章,同时推出了从小白到架构师的学习路线。 在资源教程一栏也有相关收集于网络的资源教程,每日也会推出一个全新的教程,感谢您的支持。 投稿福利 — 1、文章一经采纳,会根据作品质量和传播效果向作者付钱,根据第二天在平台后端所得的利益全部支付给作者 2、文章底部可根据作者需要,决定是否开通赞赏,赞赏的钱也全部归于作者。 3、 文章发布时将在顶部位置附带作者简介并署名。提升其在业内的 个人品牌影响 力 4、预计收入自己看对文章的宣传力度,一般在100以上 投稿要求 — 1、内容质量较好,保持完整性原创性。文章一经采纳,所有权归于本公众号,不得再投放到其他平台,以免产生版权纠纷 2、字数1000到2500字之间,内容为java相关的内容,也可以是自己的励志故事、面试经验等等。 3、 投稿格式为markdown格式(推荐) 如有需求请联系我 本文分享自微信公众号 - 愚公要移山(fdd_sxu_nwpu)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。 来源: oschina 链接: https://my.oschina.net/u

Alibaba2016校招实习面经(拿到offer)

◇◆丶佛笑我妖孽 提交于 2020-11-25 08:01:16
作者: 骚年编程去 ,发表于2015年4月 转载自:http://blog.csdn.net/a837199685 一面 IO模型有哪些?(linux下的io模型,当时没答上,后来下去查了一下,阻塞,非阻塞,io复用,驱动,同步,异步等) 进程线程的区别 不同操作系统实现进程怎么样(ps:我还真不知道,以后要好好看看OS了) gc算法,回收器有哪些(这个答得不错,标记-整理,标记-清理,复制,分代,cms收集器的并行这些说了一下) ACID。事务隔离机制(一致性,原子性,隔离性,持久性,读未提交,读提交,可重复读,序列化) syn在方法上和代码块有什么不同(作用域,和锁对象) memcached和其他nosql的区别(拿memcached和redis做了一下比较) 解释mvc threadlocal解释(结合源码的threadmap讲了一下) volatile的作用(内存可见性,内存屏障,重排序,happens-before) 堆和栈的区别和联系(自由发挥啊) tcp和udp的不同之处(面向链接,是否可靠等) tcp如何保证可靠的(超时重传,ack确认,滑动窗口,连接管理,差错控制等) 数组和链表的区别(先说说数据结构上的区别,然后结合java的两个类的源码做了一些分析) 排序算法应用场景(。。。。。这个比较简单) lucene全文检索原理(分词过滤,filter等,) 二面

Docker实战之Consul集群

僤鯓⒐⒋嵵緔 提交于 2020-11-25 06:26:34
前言 最近参加了几场 Java 面试,发现大多数的微服务实践还是 Eureka 偏多,鉴于笔者的单位选型 Consul,这里对 Consul 做简单总结。 该篇是 Docker 实战系列的第三篇。传送门: Docker 实战之 MySQL 主从复制 Docker 实战之 Redis-Cluster 集群 为什么选 Consul? 首先 Consul 有以下几个关键特性: 服务发现:支持服务发现。你可以通过 DNS 或 HTTP 的方式获取服务信息。 健康检查:支持健康检查。可以提供与给定服务相关联的任何数量的健康检查(如 web 状态码或 cpu 使用率)。 K/V 存储:键/值对存储。你可用通过 consul 存储如动态配置之类的相关信息。 多数据中心:支持多数据中心,开箱即用。 WEB-UI:支持 WEB-UI。点点点,你就能够了解你的服务现在的运行情况,一目了然,对开发运维是非常友好的。 作为高频的提问方式,面试官永远从十万个为什么开始。但是最为程序员,还是需要 知其然,知其所以然 。以下是几个常用的服务发现组件的对比。 服务发现组件的选型主要从以下几个方面进行。CAP 理论、一致性算法、多数据中心、健康检查、是否支持 k8s 等。 1. CAP 一致性的强制数据统一要求,必然会导致在更新数据时部分节点处于被锁定状态,此时不可对外提供服务,影响了服务的可用性。 2.