
2018面试
文章平均质量分 73
Happywuw
学习如逆水行舟,不近则退!
由于目前公司有很不错的学习平台,以及个人笔记平台,暂停博客更新。但也会定期把笔记批量更新到博客。
展开
-
wu版-天下无难试之Redis面试题刁难大全
面试中可能会被问到的Redis问题整理,希望能汇总各种奇葩问题,帮助更多的人思考学习。大多非作者原创,只是收集整理而来。Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行各种刁难。作为一名在互联网技术行业打击过成百上千名【请允许我夸张一下】的资深技术面试官,看过了无数落寞的身影失望的离开,略感愧疚,故献上此文,希望各位读者以后面试势如...原创 2018-03-23 15:40:22 · 1487 阅读 · 0 评论 -
2018面试——8.设计模式专题
不知道大家有木有遇到手写设计模式的情况,反正楼主遇到了,这东西一段时间不看还真想不起来。1、写一下单例模式2、写一下工厂模式3、写一下代理模式4、写一下装饰者模式5、写一下模板模式...原创 2018-04-25 16:26:45 · 468 阅读 · 0 评论 -
Redis技能—1.Redis分布式锁(正确版注意)
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足...转载 2018-04-25 17:46:09 · 425 阅读 · 0 评论 -
2018面试——10.Java细节方面专题
1、了解equal()和hashCode()吗?如果equal()重写了,hashCode()会有问题吗?在java应用程序执行期间,如果在equals方法比较中所用的信息没有被修改,那么在同一个对象上多次调用hashCode方法时必须一致地返回相同的整数。如果多次执行同一个应用时,不要求该整数必须相同。如果两个对象通过调用equals方法是相等的,那么这两个对象调用hashCode方法必须返回相...原创 2018-05-10 09:51:39 · 397 阅读 · 0 评论 -
MySQL—1、数据库索引的实现原理及查询优化
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。使用索引的目的在于提高查询效率,这篇文章梳理一下索引的实现原理和应用。不同的存储引擎索引实现的数据结构不同MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如B-Tree索引,哈希索引,全文索引等,主要存储引擎有MyISAM、InnoDB、MEMORY和ME...转载 2018-04-26 10:19:53 · 900 阅读 · 0 评论 -
MySQL—2、B-Tree,B+Tree,聚集索引,非聚集索引
今天研究下,mysql中的B-tree索引,通过这篇文章你可以了解到,mysql中的btree索引的原理,检索数据的过程,innodb和myisam引擎中btree索引的不同,以及btree索引的好处和限制。B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引。不仅仅在 MySQL 中是如此,实际上在其他...原创 2018-04-26 11:21:08 · 1583 阅读 · 0 评论 -
多线程&JVM&锁相关—乐观的并发策略——基于CAS的自旋
悲观者与乐观者的做事方式完全不一样,悲观者的人生观是一件事情我必须要百分之百完全控制才会去做,否则就认为这件事情一定会出问题;而乐观者的人生观则相反,凡事不管最终结果如何,他都会先尝试去做,大不了最后不成功。这就是悲观锁与乐观锁的区别,悲观锁会把整个对象加锁占为自有后才去做操作,乐观锁不获取锁直接做操作,然后通过一定检测手段决定是否更新数据。这一节将对乐观锁进行深入探讨。上节讨论的Synchron...转载 2018-05-04 16:08:00 · 287 阅读 · 0 评论 -
多线程&JVM&锁相关—深入学习java同步器AQS
介绍:AQS(AbstractQueuedSynchronizer类)是一个用来构建锁和同步器的框架,它在内部定义了一个int state变量,用来表示同步状态.在LOCK包中的相关锁(常用的有ReentrantLock、 ReadWriteLock)都是基于AQS来构建.然而这些锁都没有直接来继承AQS,而是定义了一个Sync类去继承AQS.那么为什么要这样呢?because:锁面向的是使用用户...原创 2018-05-04 16:21:08 · 280 阅读 · 0 评论 -
Zookeeper专题——1、分布式事务(a概述)
zookeeper到底是什么? zookeeper实际上是yahoo开发的,用于分布式中一致性处理的框架。最初其作为研发hadoop时的副产品。由于分布式系统中一致性处理较为困难,其他的分布式系统没有必要 费劲重复造轮子,故随后的分布式系统中大量应用了zookeeper,以至于zookeeper成为了各种分布式系统的基础组件,其地位之重要,可想而知。著名的hadoop,kafka,dubbo 都...原创 2018-05-04 16:43:48 · 2041 阅读 · 1 评论 -
Zookeeper专题——2、分布式锁-基于Zookeeper的分布式锁
实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开。我们来看下使用Zookeeper如何实现分布式锁。什么是Zookeeper?Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些功能而且要达到高...原创 2018-05-04 16:45:16 · 333 阅读 · 1 评论 -
Zookeeper专题——3、分布式一致性,几种实现的优缺点
如果是从一致性算法层面讲:个人觉得叫容错分布式一致性协议更合适,当然这里容错俩字很关键,而且暗含是通常所说的复制状态机的强一致性需求(比如线性一致性)。一致性本身是个应用广泛的概念,比如并发编程、数据库事务处理、缓存一致性等等。其他很多算法也可以解决某些场景下(对系统模型的假设条件强弱)、对一致性的不同要求(比如线性、序列、因果、最终等等)。比如:2PC无法容错但能解决强一致性;并发编程中的内存序...原创 2018-05-04 16:46:04 · 1086 阅读 · 0 评论 -
Zookeeper专题——4、选主过程,脑裂问题如何解决
目前有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking。 服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LO...转载 2018-05-04 16:47:08 · 3876 阅读 · 0 评论 -
Zookeeper专题——1、分布式事务(b处理模式)
可参考知乎相关文章,更通俗易懂2PC这种不一致的问题困扰着大家。任意一边出错想要回滚另一边都不是简单的数据库回滚的事情( 因为此时已经成功提交),而是需要做业务的逆向操作,而不同业务的逆操作都不同,导致复杂性增加。考虑数据库事务的执行实际上是先将执行操作写入binlog,等到最后通过一个commit指令将binlog的内容一次更新到表中,或者写到一半通过一个rollback指令将binlog中的内...转载 2018-05-05 17:06:33 · 514 阅读 · 0 评论 -
2018面试——9.Spark专题
1,Spark相关知识相关知识原创 2018-05-06 19:14:30 · 299 阅读 · 0 评论 -
Spark技能——Spark-2.1.0
0.0 前言本文主要基于最新的Spark 2.1.0版本。阅读本文可以对Spark 2.1.0的学习过程,运行流程,关键组件,原理有所了解。文章有点长,你也可以直接阅读感兴趣的部分,但是还是建议全面了解。1.0 简介Spark是Apache软件基金会下的分布式系统开源项目。在官网中这样概况这个项目Apache Spark is a fast and general engine for large...转载 2018-05-06 19:16:57 · 601 阅读 · 0 评论 -
Spark技能——Spark在360商业数据部的应用实践
一Spark的应用现状1Spark需求背景随着数据规模的持续增长,数据需求越来越多,原有的以MapReduce为代表的Hadoop平台越来越显示出其局限性。主要体现在以下两点:任务执行时间比较长。特别是某些复杂的SQL任务,或者一些复杂的机器学习迭代。不能很好的支持像机器学习、实时处理这种新的大数据处理需求。Spark作为新一代大数据处理的计算平台,使得我们可以用Spark这一种平台统一处理数据处...转载 2018-05-06 19:18:47 · 582 阅读 · 0 评论 -
2018面试——7.Linux-Nigx专题
原创 2018-04-25 16:23:54 · 322 阅读 · 0 评论 -
2018面试——6.Zookeeper专题
1、有了解过zookeeper吗?讲一下你对分布式事物的理解?如果要你实现分布式事务你怎么做?2 、如何用zookeeper实现分布式锁的? 3、分布式一致性是啥?原理?几种实现的优缺点4、zk的选主过程,脑裂问题如何解决...原创 2018-04-25 16:23:06 · 495 阅读 · 0 评论 -
据说这些用来问一两年工作经验的人(吓死宝宝了)
范围覆盖:java基础,集合框架,jvm,spring,redis。(无序,后期整理)在北京做Java开发如何月薪达到两万,需要技术水平达到什么程度?https://www.zhihu.com/question/39890405redis,那我说下自己被面过的问题:--begin--(以下是一些需要把这里大部分问题都搞清楚融汇贯通之后才能答的,烧脑,烧脑,加油吧!)39、redis有序队列实现,跳...原创 2018-03-23 18:31:46 · 648 阅读 · 0 评论 -
据说这些用来问一两年工作经验的人(按这种类型归类后版本)
范围覆盖:java基础,集合框架,jvm,spring,redis。一、Redis39、redis有序队列实现,跳表的实现,redis源码分析之有序集SortedSet自己总结:https://blog.youkuaiyun.com/Happy_wu/article/details/79866087https://www.jianshu.com/p/75ca5a359f9fRedis SortedSet实现原...原创 2018-03-30 14:20:38 · 382 阅读 · 0 评论 -
实现redis的key失效所引发的一系列问题
如何实现redis的key失效, 主动失效的流程,如何保证下一轮可以继续上一轮的检测,默认的通过检验的比例是多少,让你来实现,你打算怎么做。1.通过设置过期时间使redis的key失效 EXPIRE key 30上面的命令即为key设置30秒的过期时间,超过这个时间,我们应该就访问不到这个值了,到此为止我们大概明白了什么是缓存失效机制以及缓存失效机制的一些应用场景,接下来我们继续深入探究这个问题...原创 2018-03-26 12:06:26 · 8692 阅读 · 0 评论 -
Redis的数据结构—1.简单介绍,序集合SortedSet的实现,跳表的实现
Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。如果你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。有序集SortedSet算是redis中一个很有...原创 2018-04-09 14:44:47 · 2745 阅读 · 0 评论 -
Redis的数据结构—2.List结构做异步队列(消息队列)
使用过Redis做异步队列么,你是怎么用的?一般使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。如果对方追问可不可以不用sleep呢?list还有个指令叫blpop,在没有消息的时候,它会阻塞住直到消息到来。 如果对方追问能不能生产一次消费多次呢?使用pub/sub主题订阅者模式,可以实现1:N的消息队列。如果对方追问pub/s...原创 2018-04-23 11:17:17 · 1697 阅读 · 0 评论 -
Redis技能—2.Redis分布式锁(redis的key过期的实现)
上一篇文章介绍了Redis的分布式锁,主要是运用Redis的key失效机制来避免死锁问题的出现。这篇文章就来介绍一下Redis的Key过期实现。参看另一篇文章:https://blog.youkuaiyun.com/Happy_wu/article/details/79695415...原创 2018-04-23 14:52:02 · 1425 阅读 · 0 评论 -
Redis技能—底层IO多路复用
这是网上找到的比较全的Reids IO多路复用资料,此部分其实和Redis的键失效机制有一定的衔接。最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复用这种技术呢?首...转载 2018-04-23 16:00:13 · 2731 阅读 · 0 评论 -
IO多路复用—由Redis的IO多路复用yinch
linux IO多路复用有epoll, poll, select,epoll性能比其他几者要好。名词比较绕口,理解涵义就好。一个epoll场景:一个酒吧服务员(一个线程),前面趴了一群醉汉,突然一个吼一声“倒酒”(事件),你小跑过去给他倒一杯,然后随他去吧,突然又一个要倒酒,你又过去倒上,就这样一个服务员服务好多人,有时没人喝酒,服务员处于空闲状态,可以干点别的玩玩手机。至于epoll与...转载 2018-04-23 16:56:40 · 18215 阅读 · 6 评论 -
Redis技能—Redis的持久化
Redis如何做持久化的?bgsave做镜像全量持久化,aof做增量持久化。因为bgsave会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要aof来配合使用。在redis实例重启时,会使用bgsave持久化文件重新构建内存,再使用aof重放近期的操作指令来实现完整恢复重启之前的状态。对方追问那如果突然机器掉电会怎样?取决于aof日志sync属性的配置,如果不要求性能,在每条写指令...原创 2018-04-23 17:44:43 · 996 阅读 · 0 评论 -
Redis技能—Redis的集群:集群的分片
分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集。分片能做什么Redis 的分片承担着两个主要目标:允许使用很多电脑的内存总和来支持更大的数据库。没有分片,你就被局限于单机能支持的内存容量。允许伸缩计算能力到多核或多服务器,伸缩网络带宽到多服务器或多网络适配器。分片方式(多种)有很多不同的分片标准(criteria)。我们能找到许多...原创 2018-04-23 18:07:31 · 3476 阅读 · 0 评论 -
JVM专题—java类的加载过程
类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。如图所示。加载、验证、准备、初始化和卸载这5个...转载 2018-05-09 11:34:38 · 355 阅读 · 0 评论 -
2018面试——1.Redis专题
问题是多变的,但是知识点是不变的,而且是相互连通的。所以掌握了知识点融会贯通才能以不变应万变。融合往往在脑子里进行,楼主尽量通过遇到的面试题来把他们串起来。1、Redis有那些数据结构?你用过哪些?(这算是很普通的一个问题切入方式了)Redis的数据结构(包含了跳表的实现)用过的数据结构:字符串String,SortedSet。String的应用场景:作为字典key-value的形式存储,业务场景...原创 2018-04-25 16:17:53 · 534 阅读 · 0 评论 -
2018面试——2.Mysql专题
1、MySQL存储引擎知道吧?SQL 的优化说一下?所涉及到的数据结构?数据库索引的实现原理及查询优化2、B-Tree,B+Tree,聚集索引,非聚集索引?B-Tree,B+Tree,聚集索引,非聚集索引3、MySQL的分库分表了解吗?用过吗?分库分表欢迎留言补充,楼主也会逐步完善!...原创 2018-04-25 16:18:43 · 1290 阅读 · 0 评论 -
2018面试——3.Spring专题
原 spring原理-1.Spring Bean的生命周期原 spring原理-2.spring容器的启动过程原 spring原理-3.spring的循环依赖是怎么解决的:Spring循环依赖的三种方式原 spring原理-4.spring异常处理的三种方式原 spring原理-5.Spring 中异常处理方法的总结...原创 2018-04-25 16:19:23 · 768 阅读 · 0 评论 -
2018面试——4.JVM&多线程&锁
1、聊一下垃圾收集器,如果对象太大会在哪里分配内存? 垃圾收集器主要 CMS垃圾收集器与G1收集器2、创建线程池有几种方法?其中一个最大线程数参数是做什么的?Java线程池的分析和使用美团线程池面试题3、内置锁的实现原理synchronized?原理4、notify的实现原理是什么?跟park unpark有什么区别通常,多线程之间需要协调工作。例如,浏览器的一个显示图片的线程display...原创 2018-04-25 16:20:35 · 368 阅读 · 0 评论 -
Redis技能——Codis
其实codis原理和官方cluster基本一致,但是:codis是选用了一系列已证明靠谱的方案来构建(如zk选主/存放元数据;采用无状态proxy,而不是smart client等)为方便运维提供了一系列工具/接口再加上公司内部的一定规模应用所以大家用它更多。作者:CafeBabe链接:https://www.zhihu.com/question/30857837/answer/169207128...原创 2018-05-14 23:22:54 · 1415 阅读 · 0 评论