面试经
文章平均质量分 77
浅汐王
这个作者很懒,什么都没留下…
展开
-
一般实现分布式锁都有哪些方式?使用 redis 如何设计分布式锁?使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?
面试题一般实现分布式锁都有哪些方式?使用 redis 如何设计分布式锁?使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?面试官心理分析其实一般问问题,都是这么问的,先问问你 zk,然后其实是要过渡到 zk 相关的一些问题里去,比如分布式锁。因为在分布式系统开发中,分布式锁的使用场景还是很常见的。面试题剖析redis 分布式锁官方叫做RedLock...原创 2019-10-12 16:28:20 · 131 阅读 · 0 评论 -
redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?
面试题redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?面试官心理分析redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了再重启,内存里的数据就全部都弄丢了啊。你必须得用 redis 的持久化机制,将数据写入内存的同时,异步的慢慢的将数据写入磁盘文件里,进行持久化。如果 redis 宕机重启,自动从磁盘上加载之前持久...原创 2019-10-09 11:07:36 · 121 阅读 · 0 评论 -
如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?
面试题如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?面试官心理分析其实问这个问题,主要是考考你,redis 单机能承载多高并发?如果单机扛不住如何扩容扛更多的并发?redis 会不会挂?既然 redis 会挂那怎么保证 redis 是高可用的?其实针对的都是项目中你肯定要考虑的一些问题,如果你没考虑过,那确实你对...原创 2019-10-09 11:06:57 · 125 阅读 · 0 评论 -
Redis 的过期策略都有哪些?手写一下 LRU 代码实现?
面试题redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?面试官心理分析如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,...转载 2019-10-09 11:03:57 · 88 阅读 · 0 评论 -
Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
面试题redis 都有哪些数据类型?分别在哪些场景下使用比较合适?面试官心理分析除非是面试官感觉看你简历,是工作 3 年以内的比较初级的同学,可能对技术没有很深入的研究,面试官才会问这类问题。否则,在宝贵的面试时间里,面试官实在不想多问。其实问这个问题,主要有两个原因:看看你到底有没有全面的了解 redis 有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的 KV 操...原创 2019-10-09 10:53:06 · 152 阅读 · 0 评论 -
redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
面试题redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?面试官心理分析这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道?还有可能面试官会问问你 redis...原创 2019-10-09 10:44:40 · 70 阅读 · 0 评论 -
项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?
面试题项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?面试官心理分析这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官...原创 2019-10-09 10:40:17 · 118 阅读 · 0 评论 -
es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
面试题es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?面试官心理分析这个问题,包括后面的 redis 什么的,谈到 es、redis、mysql 分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿!有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过 es 集群,...原创 2019-10-09 10:27:14 · 109 阅读 · 0 评论 -
es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
面试题es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?面试官心理分析这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下5~10s,坑爹了。第一次搜索的时候,是5~10s,后面反而就快了,可能就几百毫秒。你就很懵,每个用户第一次访...原创 2019-10-09 10:19:39 · 125 阅读 · 0 评论 -
es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?
面试题es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?面试官心理分析问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是......对 es 基本就是个黑盒,你还能干啥?你唯一能干的就是用 ...原创 2019-10-08 14:24:40 · 75 阅读 · 0 评论 -
es 的分布式架构原理能说一下么?(es 是如何实现分布式的)
面试题es 的分布式架构原理能说一下么?(es 是如何实现分布式的)面试官心理分析在搜索这块,lucene 是最流行的搜索库。几年前业内一般都问,你了解 lucene 吗?你知道倒排索引的原理吗?现在早已经 out 了,因为现在很多项目都是直接用基于 lucene 的分布式搜索引擎—— ElasticSearch,简称为 es。而现在分布式搜索基本已经成为大部分互联网行业的 Jav...原创 2019-10-08 14:02:39 · 298 阅读 · 0 评论 -
redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?
面试题redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?面试官心理分析在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件负...原创 2019-10-09 11:10:17 · 120 阅读 · 0 评论 -
了解什么是 redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?
面试题了解什么是 redis 的雪崩、穿透和击穿?redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 redis 的穿透?面试官心理分析其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题,所以面试官一定会问你。面试题剖析缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4...原创 2019-10-09 11:10:53 · 106 阅读 · 0 评论 -
有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?
面试题你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?面试官心理分析高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压...原创 2019-10-11 14:15:25 · 171 阅读 · 0 评论 -
分库分表之后,id 主键如何处理?
面试题分库分表之后,id 主键如何处理?面试官心理分析其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。面试题剖析基于数据库的实现方案数据库自增 id这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入...原创 2019-10-11 14:11:02 · 125 阅读 · 0 评论 -
如何设计可以动态扩容缩容的分库分表方案?
面试题如何设计可以动态扩容缩容的分库分表方案?面试官心理分析对于分库分表来说,主要是面对以下问题:选择一个数据库中间件,调研、学习、测试; 设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,比如 3 个库,每个库 4 个表; 基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写; 完成单库单表到分库分表的迁移,...原创 2019-10-11 14:09:51 · 490 阅读 · 0 评论 -
现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
面试题现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?面试官心理分析你看看,你现在已经明白为啥要分库分表了,你也知道常用的分库分表中间件了,你也设计好你们如何分库分表的方案了(水平拆分、垂直拆分、分表),那问题来了,你接下来该怎么把你那个单库单表的系统给迁移到分库分表上去?所以这都是一环扣一环的,就是看你有没有全流程经历过这个过程。...原创 2019-10-11 14:06:29 · 115 阅读 · 0 评论 -
redis 基于哨兵实现高可用
Redis 哨兵集群实现高可用哨兵的介绍sentinel,中文名是哨兵。哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能:集群监控:负责监控 redis master 和 slave 进程是否正常工作。 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。 故障转移:如果 master node 挂掉了,会自动转移到 slave n...原创 2019-10-11 13:55:43 · 113 阅读 · 0 评论 -
Redis 主从架构
Redis 主从架构单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节点,从节点负责读。所有的读请求全部走从节点。这样也可以很轻松实现水平扩容,支撑读高并发。redis replication -> 主从架构 ->...原创 2019-10-11 13:55:13 · 93 阅读 · 0 评论 -
为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?
面试题为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?面试官心理分析其实这块肯定是扯到高并发了,因为分库分表一定是为了支撑高并发、数据量大两个问题的。而且现在说实话,尤其是互联网类的公司面试,基本上都会来这么一下,分库分表如此普遍的技术问题,不问实在是不行...原创 2019-10-11 13:53:10 · 123 阅读 · 0 评论 -
生产环境中的redis是怎么部署的?
面试题生产环境中的redis是怎么部署的?面试官心理分析看看你了解不了解你们公司的redis生产整合的部署架构,如果你不了解,那么确实你就很失职了,你的redis是主从架构?构造架构?用了可行的方案?有没有做redis给几个G的内存?设置了什么参数?压测后你们redis占用了多少QPS?高可用保证?有没有开启持久化机制确保可以进行数据恢复?兄弟,这些你必须是门儿清的,否则你确实是没...原创 2019-10-11 13:49:55 · 811 阅读 · 0 评论 -
redis的并发竞争问题是什么?如何解决这个问题?了解redis事务的CAS方案吗?
面试题redis的并发竞争问题是什么?如何解决这个问题?了解redis事务的CAS方案吗?面试官心理分析这个也是线上非常常见的一个问题,就是多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了。而且redis自己就有天然解决这个问题的CAS类的乐观锁方案。面试题剖析可以基...原创 2019-10-11 13:46:33 · 644 阅读 · 0 评论 -
如何保证缓存与数据库的双写一致性?
面试题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求“缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里...原创 2019-10-11 13:40:05 · 63 阅读 · 0 评论 -
lucene 和 es 的前世今生
lucene 和 es 的前世今生lucene 是最先进、功能最强大的搜索库。如果直接基于 lucene 开发,非常复杂,即便写一些简单的功能,也要写大量的 Java 代码,需要深入理解原理。elasticsearch 基于 lucene,隐藏了 lucene 的复杂性,提供了简单易用的 restful api / Java api 接口(另外还有其他语言的 api 接口)。分布式的文...原创 2019-10-08 13:36:36 · 284 阅读 · 0 评论 -
如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。
面试题如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。面试官心理分析其实聊到这个问题,一般面试官要考察两块:你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个消息队列的架构原理。 看看你的设计能力,给你一个常见的系统,就是消息队列系统,看看你能不能从全局把握一下整体架构设计,给出一些关键点出来。说实话,问类似问题的时候,大部分人基本都会蒙,因...原创 2019-10-08 11:20:56 · 125 阅读 · 0 评论 -
如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
面试题如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?面试官心理分析你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了;或者消费的速度极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是这整个就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如...原创 2019-10-08 11:10:03 · 134 阅读 · 0 评论 -
JVM部分
JVM中一次完整的GC流程: 首先对象会在新生代分配,如果新生代没有资源了,就会进行新生代回收,即Minor GC(简称MG) 如果MG后对象依然存活,将会给对象年龄+1,重复整个过程,如果年龄达到了年龄阈值,就会将对象存入老年代, 这里还有一个特殊的地方,如果你的对象是一个需要大量连续的内存空间的对象,则直接会进入老年代。一共有几种垃圾回收机制,各自优缺点,如何启用 1.串行收集器:暂停所有进程...原创 2018-03-28 14:42:50 · 189 阅读 · 0 评论 -
HashMap实现原理
HashMap结构图目录唠叨解析思路get方法put方法resize方法唠叨认真阅读了下HashMap的实现方式,也参考了网上别人的一些解析,个人觉得还是有些东西想说。网上有的文章名字为HashMap源码解析,实际上就是给它里面的一些方法加上一些注释而已,有不少都是这样的。我自己看源码的时候,发现不是别人不想解析,而是它的实现真的需要亲自研读,多理顺几遍才知道怎么回事。我在这里解析的文字描述也较多...原创 2018-03-30 13:04:59 · 234 阅读 · 0 评论 -
面试常见的问题(技巧)
面试题Q1:请谈谈你人生旅途中经历过的最大一次失败是什么? 深信服HR张望 :这个问题很常见,但最能有效反映一个人生活历程的深度和广度,并能进一步判断出你思想的深度和你的悟性。 对生活不加以思考的人,往往也不会对工作予以思考。 如:学生仅仅只能答出来类似因高考/考研未能考入满意的学校而郁闷好长一段时间,那就很容易判断这个学生是一个经历单纯、对逆境没有承受力的人。 所以,当你谈一件失败的事情时...原创 2018-03-30 12:59:01 · 87139 阅读 · 0 评论 -
数据库部分
1、触发器的作用? 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性, 可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作, 而该操作又会导致该表触发器被触发。 2、什么是存储过程?用什么来调用? 存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该...原创 2018-03-30 12:52:09 · 154 阅读 · 0 评论 -
RDD基本算子操作
1.1. Transformations1.1.1. 创建RDD1、数组创建RDD从普通数组创建RDD,里面包含了1到9这9个数字,它们分别在3个分区中。valrdd1= sc.parallelize(1 to 9, 3)rdd1:org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[1] at parallelize at<cons...原创 2018-03-30 16:40:38 · 471 阅读 · 0 评论 -
Java基础知识(八)
24.线程的应用1.等待之后超时 while(结果未返回 && 时间未到) wait();2.线程池 要有队列,状态 Worker实现Runnable接口,循环从jobs队列取任务执行,获取不到就wait(); execute(Job job)时,唤醒jobs3.基于线程池Web服务器 思路:开一个Socket服务,每次accept后,把这个一对一服务放封装成job类,放到jobs...原创 2018-03-30 12:37:36 · 112 阅读 · 0 评论 -
Java基础知识(七)
1.多线程一定好么? cpu密集不好 io密集好 2.如何减少上下文切换: 无锁并发(数据id根据Hash分段)、CAS、最少线程 3.java线程避免死锁: 避免一个线程同时有多个锁 避免一个锁占用多个资源 lock.tryLock代替内部锁 内存屏障:限制命令操作顺序,有LoadLoad、LoadStore、LoadStore、StroreStreo四种屏障 缓冲行:cpu缓存最小储存单位 写...原创 2018-03-30 12:37:19 · 183 阅读 · 0 评论 -
Java基础知识(六)
107.什么是JSP页面? JSP页面是一种包含了静态数据和JSP元素两种类型的文本的文本文档。静态数据可以用任何基于文本的格式来表示, 比如:HTML或者XML。JSP是一种混合了静态内容和动态产生的内容的技术。这里看下JSP的例子。108.JSP请求是如何被处理的? 浏览器首先要请求一个以.jsp扩展名结尾的页面,发起JSP请求,然后,Web服务器读取这个请求,使用JSP编译器把JSP页面转化...原创 2018-03-29 20:01:44 · 190 阅读 · 0 评论 -
Java基础知识(五)
91.什么是Servlet? Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或者是存储HTML表单提交的数据, 产生动态内容,在无状态的HTTP协议下管理状态信息。92.说一下Servlet的体系结构 所有的Servlet都必须要实现的核心的接口是javax.servlet.Servlet。每一个Servlet都必须要直接或者是间接实现这个接口, 或...原创 2018-03-29 19:58:20 · 184 阅读 · 0 评论 -
Java基础知识(四)
JDBC72.什么是JDBC? JDBC是允许用户在不同数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数据库应用程序,而不需要关心底层特定数据库的细节。73.解释下驱动(Driver)在JDBC中的角色。 JDBC驱动提供了特定厂商对JDBC API接口类的实现, 驱动必须要提供java.sql包下面这些类的实现:Connection, Statement, PreparedStat...原创 2018-03-29 19:52:55 · 137 阅读 · 0 评论 -
Linux部分
chmod: 4:读 2:写 1:可执行 chown: u:所属人 g:所属组 o:其他人 du -h:按照单位输出 df:查看磁盘空间 fdisk:划分分区创建文件: touch 文件名 vi 文件名 mkdir 文件夹名 mv 移动文件远程访问: scp wg...原创 2018-03-28 14:44:21 · 128 阅读 · 0 评论 -
Spring基础知识(一)
Spring中用到的设计模式: 工厂模式:IOC容器 代理模式:AOP 策略模式:在Spring采取动态代理时,根据代理的类有无实现接口有JDK和CGLIB两种代理方式,就是采用策略模式实现的 单例模式:默认情况下Spring中的bean只存在一个实例 讲讲IOC和AOP: IOC的核心是依赖反转,将创建对象和对象之间的依赖管理交给IOC容器来做,完成对象之间的解耦 AOP主要是利用代理模式,把要...原创 2018-03-29 13:35:25 · 477 阅读 · 2 评论 -
如何保证消息的顺序性?
面试题如何保证消息的顺序性?面试官心理分析其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。面试题剖析我举个例子,我们以前做过一个 mysqlbinlog同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(my...原创 2019-10-08 11:05:20 · 194 阅读 · 0 评论 -
如何保证消息的可靠性传输?(如何处理消息丢失的问题)
面试题如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?面试官心理分析这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。...原创 2019-10-08 10:51:48 · 173 阅读 · 0 评论