面试的那些小事
文章平均质量分 61
时小浅
折腾数据.折腾代码.折腾规约.折腾架构.折腾需求.折腾服务.生命不息.折腾不止.
展开
-
部分面试笔记
1.数据一致性问题1.1redis一致性(容灾)原面试题:redis集群数据一致性如何保证,如果挂了一台机会怎样?可以从故障检测和从节点选举说起。故障检测集群中每个节点都会定期的向集群中的其他节点发送PING信息。如果在一定时间内,发送ping的节点A没有收到某节点B的pong回应,那么A将B标识为pfail。A在后续发送ping时,会带上B的pfail信息,通知给其他节点。如果B被标记为pfail的个数大于集群主节点个数的一半(N/2 + 1)时,B会被标记为fail,A向整个集群广播,该节原创 2021-08-20 10:28:02 · 466 阅读 · 0 评论 -
【面试】Cache Aside Pattern缓存+数据库读写模式的分析
1、Cache Aside Pattern(1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应(2)更新的时候,先删除缓存,然后再更新数据库2、为什么是删除缓存,而不是更新缓存呢?原因很简单,很多时候,复杂点的缓存的场景,因为缓存有的时候,不简单是数据库中直接取出来的值商品详情页的系统,修改库存,只是修改了某个表的某些字段,但是要真正把这个影响的最终的库存计算出来,可能还需要从其他表查询一些数据,然后进行一些复杂的运算,才能最终计算出现在最新原创 2021-07-20 17:34:28 · 153 阅读 · 0 评论 -
【面试】你能说说我们一般如何应对缓存雪崩以及穿透问题吗?
1、面试题了解什么是redis的雪崩和穿透?redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理redis的穿透?2、面试官心里分析其实这是问到缓存必问的,因为缓存雪崩和穿透,那是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题。所以面试官一定会问你。3、面试题剖析缓存雪崩发生的现象缓存雪崩的事前事中事后的解决方案事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃事中:本地ehcache缓存 + hystrix...原创 2021-07-20 17:26:17 · 97 阅读 · 0 评论 -
【面试】redis的RDB和AOF两种持久化机制的工作原理
1、RDB和AOF两种持久化机制的介绍RDB持久化机制,对redis中的数据执行周期性的持久化AOF机制对每条写入命令作为日志,以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集如果我们想要redis仅仅作为纯内存的缓存来用,那么可以禁止RDB和AOF所有的持久化机制通过RDB或AOF,都可以将redis内存中的数据给持久化到磁盘上面来,然后可以将这些数据备份到别的地方去,比如说阿里云,云服务如果redis挂了原创 2021-07-20 17:01:37 · 152 阅读 · 0 评论 -
OOM 问题实战分析
在面试过程中,除了可以展示 Java 虚拟机内存调优和定位排查内存问题的技能外,还可以通过展示自己解决过的 OOM 问题,进一步让面试官确信你有内存调优的能力。下面给出一套范例说辞。首先你可以说下问题的表现,或者说说你是怎么发现内存性能问题的。比如,项目上线后,new relic 监控软件发现内存用量 70%以上的时间超过 5 分钟,发出了警告,由此发现了内存问题。或者,通过观察日志,你们发现日志中频繁出现 OOM 问题。再或者,在某段时间,程序非常卡,原来预期 10 分钟就能结束的程序,运原创 2021-07-20 09:23:58 · 249 阅读 · 0 评论 -
【面试】Redis如何通过读写分离来承载读请求QPS超过10万+?
1、redis高并发跟整个系统的高并发之间的关系redis,你要搞高并发的话,不可避免,要把底层的缓存搞得很好mysql,高并发,做到了,那么也是通过一系列复杂的分库分表,订单系统,事务要求的,QPS到几万,比较高了要做一些电商的商品详情页,真正的超高并发,QPS上十万,甚至是百万,一秒钟百万的请求量光是redis是不够的,但是redis是整个大型的缓存架构中,支撑高并发的架构里面,非常重要的一个环节首先,你的底层的缓存中间件,缓存系统,必须能够支撑的起我们说的那种高并发,其次,再经过.原创 2021-07-08 17:35:03 · 610 阅读 · 0 评论 -
【面试】Redis的过期策略能介绍一下?要不你再手写一个LRU?
1、面试题redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?2、面试官心里分析1)老师啊,我往redis里写的数据怎么没了?之前有同学问过我,说我们生产环境的redis怎么经常会丢掉一些数据?写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明redis你就没用对啊。redis是缓存,你给当存储了是吧?啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且是大量的。可能一台机器就几十个G的内存,但是可以有几个T的硬盘空间。redis主要原创 2021-07-08 17:32:23 · 112 阅读 · 0 评论 -
【面试】Redis都有哪些数据类型?分别在哪些场景下使用比较合适呢?
1、面试题redis都有哪些数据类型?分别在哪些场景下使用比较合适?2、面试官心里分析除非是我感觉看你简历,就是工作3年以内的比较初级的一个同学,可能对技术没有很深入的研究过,我才会问这类问题,在宝贵的面试时间里,我实在是不想多问其实问这个问题呢。。。主要就俩原因第一,看看你到底有没有全面的了解redis有哪些功能,一般怎么来用,啥场景用什么,就怕你别就会最简单的kv操作第二,看看你在实际项目里都怎么玩儿过redis要是你回答的不好,没说出几种数据类型,也没说什么场景,你完了,面试官对你印象肯原创 2021-07-08 17:31:08 · 152 阅读 · 0 评论 -
【面试】来聊聊redis的线程模型吧?为啥单线程还能有很高的效率?
1、面试题redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发)?2、面试官心里分析这个是问redis的时候,最基本的问题吧,redis最基本的一个内部原理和特点,就是redis实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿redis的时候,出了问题岂不是什么都不知道?还有可能面试官会问问你redis和memcached的区别,不过说..原创 2021-07-08 17:28:28 · 142 阅读 · 0 评论 -
【面试】MySQL调优思路,思路决定出路……
原创 2021-07-07 18:00:41 · 104 阅读 · 0 评论 -
【面试】算法刷题前必看!必看!
原创 2021-07-07 17:58:07 · 93 阅读 · 0 评论 -
【面试】胆小慎入!!! java超全面试题 超全
数据库&事务1.什么样的场景会产生数据库死锁,如何解决? 2.SQL如何优化3.Oracle和mysql分页的实现原理4.唯一索引能否插入空5.数据库索引的算法原理6.乐观锁,悲观锁7.SQL怎样判断字段是否为空 WEB1.post和get区别是什么?2.cookie/session有什么区别?3.web集群中登录态如何共享?4.xss、csrf等如何防范?5.sql注入如何防范?6.浏览器缓存策略7.Ajax如何解决跨域问题?..原创 2021-07-07 18:01:56 · 479 阅读 · 0 评论 -
【面试】2018年阿里一面面试题整理
## 数据结构1. HashMap的原理,内部数据结构?- 底层使用哈希表(数组 + 链表),当链表过长会将链表转成 红黑树以实现 O(logn) 时间复杂度内查找2. 讲一下 HashMap 中 put 方法过程?1. 对 Key 求 Hash 值,然后再计算 下标。1. 如果没有碰撞,直接放入桶中,1. 如果碰撞了,以链表的方式链接到后面,1. 如果链表长度超过阀值(TREEIFY_THRESHOLD == 8),就把链表转成红黑树...原创 2021-07-07 17:53:10 · 734 阅读 · 0 评论 -
【面试】总结一下分布式搜索引擎相关问题的面试技巧
消息队列、分布式搜索引擎其实如果我是面试官的话,我如果感觉你都把刚才那些问题都答出来了,我可能会继续刨根问底,深挖,问你,直到把你给问倒消息队列,kafka,复制的底层原理,leader选举的算法,增加partition以后的rebalance算法,扣很多很多的细节,如何优化kafka写入的吞吐量其实这块如果挖深了可以问的极其深,如果是我来深挖,可能会挖到es底层的相关度评分算法(TF/IDF算法)、deep paging、上千万数据批处理、跨机房多集群同步、搜索效果优化,等等吧..原创 2021-07-07 17:45:14 · 153 阅读 · 0 评论 -
【面试】你们公司生产环境的分布式搜索引擎是怎么部署的呢?
1、面试题es生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?2、面试官心里分析这个问题,包括后面的redis什么的,谈到es、redis、mysql分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿!有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过es集群,也没实际玩儿过,也没往es集群里面导入过几千万甚至是几亿的数据量,可能你就不太清楚这里面的一些生产..原创 2021-07-07 17:44:19 · 119 阅读 · 0 评论 -
【面试】分布式搜索引擎在几十亿数据量级的场景下如何优化查询性能?
1、面试题es在数据量很大的情况下(数十亿级别)如何提高查询效率啊?2、面试官心里分析问这个问题,是肯定的,说白了,就是看你有没有实际干过es,因为啥?es说白了其实性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下5秒~10秒,坑爹了。第一次搜索的时候,是5~10秒,后面反而就快了,可能就几百毫秒。你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过es,或者就是自己玩玩儿demo,被问..原创 2021-07-07 17:43:35 · 294 阅读 · 0 评论 -
【面试】分布式搜索引擎写入和查询的工作流程是什么样的?
1、面试题es写入数据的工作原理是什么啊?es查询数据的工作原理是什么啊?2、面试官心理分析问这个,其实面试官就是要看看你了解不了解es的一些基本原理,因为用es无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es在干什么,那你真的就是。。。。对es基本就是个黑盒,你还能干啥?你唯一能干的就是用es的api读写数据了。。。要是出点什么问题,你啥都不知道,那还能指望你什么呢?是不是。。3、面试题剖析(1)es写数据过程1)客户..原创 2021-07-07 17:41:13 · 128 阅读 · 0 评论 -
【面试】分布式搜索引擎的架构是怎么设计的?为啥是分布式的?
1、面试题es的分布式架构原理能说一下么(es是如何实现分布式的啊)?2、面试官心里分析在搜索这块,lucene是最流行的搜索库。几年前业内一般都问,你了解lucene吗?你知道倒排索引的原理吗?现在早已经out了,因为现在很多项目都是直接用基于lucene的分布式搜索引擎——elasticsearch,简称为es。而现在分布式搜索基本已经成为大部分互联网行业的java系统的标配,其中尤为流行的就是es,前几年es没火的时候,大家一般用solr。但是这两年基本大部分企业和..原创 2021-07-07 17:40:33 · 161 阅读 · 0 评论 -
【面试】如果让你来开发一个消息队列中间件,你会怎么设计架构?
1、面试题如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路2、面试官心里分析其实聊到这个问题,一般面试官要考察两块:(1)你有没有对某一个消息队列做过较为深入的原理的了解,或者从整体了解把握住一个mq的架构原理(2)看看你的设计能力,给你一个常见的系统,就是消息队列系统,看看你能不能从全局把握一下整体架构设计,给出一些关键点出来说实话,我一般面类似问题的时候,大部分人基本都会蒙,因为平时从来没有思考过类似的问题,大多数人就是平时埋头用,从来不去..原创 2021-07-06 16:43:02 · 403 阅读 · 0 评论 -
【面试】完了!生产事故!几百万消息在消息队列里积压了几个小时!
1、面试题如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?2、面试官心里分析你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了,或者消费的极其极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是整个这就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,导致比如rabbitmq设置了消息过期时间后就没了怎么办?所以就这事儿,其实线上挺常见的,一原创 2021-07-06 16:42:08 · 145 阅读 · 0 评论 -
【面试】我该怎么保证从消息队列里拿到的数据按顺序执行?
1、面试题如何保证消息的顺序性?2、面试官心里分析其实这个也是用MQ的时候必问的话题,第一看看你了解不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这个生产系统中常见的问题。3、面试题剖析我举个例子,我们以前做过一个mysql binlog同步的系统,压力还是非常大的,日同步数据要达到上亿。mysql -> mysql,常见的一点在于说大数据team,就需要同步一个mysql库过来,对公司的业务系统的数据做各种复杂的操作。你在mysql里..原创 2021-07-06 16:41:05 · 270 阅读 · 0 评论 -
【面试】知其然而知其所以然:如何进行消息队列的技术选型?
1、面试题为什么使用消息队列啊?消息队列有什么优点和缺点啊?kafka、activemq、rabbitmq、rocketmq都有什么区别以及适合哪些场景?2、面试官心理分析其实面试官主要是想看看:(1)第一,你知道不知道你们系统里为什么要用消息队列这个东西?我之前面试就见过大量的候选人,说自己项目里用了redis、mq,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾没思考过。没有对自己的架构问过为什么的人原创 2021-07-06 16:31:22 · 121 阅读 · 0 评论 -
面试的哪些小事记录
1.自我介绍2.介绍项目,针对项目问一下具体业务3.mysql索引类型4.mysql索引结构5.如何做分页的(分页插件如何实现的)6.分页关键字,limit 5含义,limit5,10含义7.如何进行sql语句优化的8.redis是怎么用的9.如何解决缓存不一致问题10.场景题:一个表中有千万级或亿级数据,如何解决查询慢问题。(答得分库分表大致思路)11.如何解决分库分表分页查询和组合条件查询问题12.说一下你对springboot的理解13.了解RPC框架吗(简单说了一下dubbo原创 2020-11-05 09:10:32 · 106 阅读 · 0 评论 -
线上是否遇到过消息积压的问题,下游消费系统宕机了,导致几百万条消息在消息中间件里积压,如何处理?
线上是否遇到过消息积压的问题,下游消费系统宕机了,导致几百万条消息在消息中间件里积压,如何处理?首先要找到导致消息堆积的原因,是Producer太多了还是Consumer太少了导致的;并且检查消息消费速度是否正常,正常的话,可以通过上线更多consumer临时解决消息堆积问题;如果Consumer和Queue个数不对等,上线了多台Consumer在短时间内也无法消费完堆积的消息;准备一个临时的topic(里面定义queue的个数非常大);queue的数量是堆积的几倍;上线一台Consumer,把原创 2020-09-25 15:57:53 · 645 阅读 · 0 评论 -
MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?(redis 提供 6种数据淘汰策略是什么?怎么使用?)
redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰allkeys-lru:从数据集(se原创 2020-09-25 15:56:55 · 208 阅读 · 0 评论 -
并发容器的原理
并发容器的由来在Java并发编程中,经常听到Java集合类,同步容器、并发容器,那么他们有哪些具体分类,以及各自之间的区别和优劣呢?只有把这些梳理清楚了,你才能真正掌握在高并发的环境下,正确使用好并发容器,我们先从Java集合类,同步容器谈起。1.什么是同步容器Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map,大家熟知的这些集合类ArrayList、LinkedList、HashMap这些容器都是非线程安全的。如果有多个线程并发地访问这些容器时,就会出现问题。因此,在原创 2020-09-10 18:15:51 · 318 阅读 · 0 评论 -
synchronized、ReentrantLock、Semaphore、AtomicInteger四种线程锁的特点,性能比较、与使用场景
多线程的缘由在出现了进程之后,操作系统的性能得到了大大的提升。虽然进程的出现解决了操作系统的并发问题,但是人们仍然不满足,人们逐渐对实时性有了要求。使用多线程的理由之一是和进程相比,它是一种非常花销小,切换快,更”节俭”的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。而在进程中的同时运行多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进原创 2020-09-10 18:13:10 · 2041 阅读 · 0 评论 -
JVM的4种垃圾回收算法、垃圾回收机制
1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。 在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。适用场合:存活对象较多的情况下比较高效适用于年老代(即旧生代) 缺点:容易产生内存碎片,再来一个比较大的对象时(典型情况:该对象的大小大于空闲表中的每一块儿大小但是小于其中两块儿的和),会提前触发垃圾回收扫描了整个空间两次(第一次:标记存活对象;第二次:清原创 2020-09-10 18:07:46 · 190 阅读 · 0 评论 -
ReentrantReadWriteLock的实现原理与锁获取
1.面试题分析在有些业务场景中,我们大多在读取数据,很少写入数据,这种情况下,如果仍使用独占锁,效率将及其低下。针对这种情况,Java提供了读写锁——ReentrantReadWriteLock有点类似MySQL数据库为代表的读写分离机制,既然我们知道了读写锁是用于读多写少的场景。那问题来了,ReentrantReadWriteLock是怎样来实现的呢,它与ReentrantLock的实现又有什么的区别呢?2.ReentrantReadWriteLock简介 很多情况下有这样一种场景:对共享资源原创 2020-09-10 18:05:50 · 151 阅读 · 0 评论