面经
文章平均质量分 80
2NaCl
主攻Java后端开发与云计算Paas平台、离线大数据平台相关
展开
-
面试复盘
限流算法中,计数器方法,可以如何优化滑动窗口先说一下原来正常算法的弊病,我们假设qps是100,最后10ms过来100个请求,下一秒的前10ms又过来100个请求,那么就会在某一秒中一次性接受到200个请求,那肯定会出问题。但是其实本质原因是,分割时间的粒度太粗了,我们可以按照情况给窗口划分更细的粒度。比如,10ms一个小窗口,然后因为我们总窗口是1秒,那么我们就做一个累加计算,当然了,越细粒度对我们的业务场景肯定更友好,但是也肯定会对cpu密集型计算导致的压力也会增大。不过本质就是为了在接收到.原创 2020-09-21 10:50:51 · 579 阅读 · 2 评论 -
疏漏总结(二十七)——JVM调优
啊,面试的时候因为简历提到了JVM调优,所以在这里也总结一下。其实一般情况下,我们对于JVM进行调优,都是首先多线程进行完一拨优化了,然后线程了安全了,线程池什么的都用了,最后一步才会轮到对JVM进行调优,GC调优等等,而且在这之后,我们还必须经过大量的压测才能证明出是否调优真的优化了。目标首先我们应该清楚,我们JVM调优的目的是什么?减少Full GC的次数降低stw的时间,提高吞吐量全力阻止oom的发生尽力不让老年代的内存占用达到上限方法现在来主要说一下进行JVM调优的方案。首原创 2020-09-05 00:25:46 · 508 阅读 · 0 评论 -
面试中的常见架构设计题
本篇文章的总结主要来自于本人的主观看法,欢迎各位在评论区指导。文章目录秒杀限流单进程限流分布式限流秒杀秒杀其实不仅是大家简历上的一些热门,也是场景题中的一些热门考点。场景描述:秒杀一般指的是针对某个或者某几个特定的产品,有瞬时爆发的QPS轰击过来,频繁的进行数据库的读操作,少量的进行数据库的写操作(扣货扣款)。设计难点与解决思路:支付采用分布式事务,比较耗时。在支付方面,其实我们一般都用TCC分布式事务去实现,因为这个要求一定的即时性,不能异步去完成主流程(发起支付,检验存货量,余额,扣款原创 2020-09-03 22:46:12 · 1563 阅读 · 0 评论 -
阿里淘系三面复盘
1000的qps打过来,超过你的极限,你需要做什么措施。熔断和限流有什么区别有限流就不需要熔断了自己实现一个限流的系统,要怎么去实现。如何去监听到实时的qpsQps怎么去计算突发的qps如何处理知识点:削峰:消息队列,用生产者和消费者,摊开压力。第八个的缺点是什么会让系统变得比较复杂,我们正常处理http请求,不管是nio还是bio,客户端对于浏览器都是直接处理,但是用了消息队列,我们就是异步的去处理请求,这还是好说的,把连接的句柄往队列里丢,然后我们根据队列里的连接信息拿过来去消费,.原创 2020-09-03 10:15:29 · 357 阅读 · 0 评论 -
小米提前批一二面面经
一面 60min自我介绍讲讲线程池是怎么使用的(选型,调参,分析数据库交互,运行原理)讲讲用什么方法解决oomconcurrentHashMap(怎么做的线程安全,CAS的过程,ABA问题,volatile,扩容为什么2倍,什么是哈希环)限流(计数,漏斗,令牌桶,三种的区别和优劣)算法:mergeSort二面 90min算法:约瑟夫环算法:leetcode第二题自我介绍ICMP和HTTP的区别osi五层都是啥,分别有啥协议管程和信号量的区别场景题:百万级QPS场景,如何设原创 2020-08-28 19:09:54 · 813 阅读 · 0 评论 -
网易有道Java一面
自我介绍白板撸死锁synchronized和Lock的区别分析一下Lock的性能讲讲AQS里面几个重要的方法说说ReentrantLock讲讲synchronized的底层白板撸线程顺序打印讲讲volatile说说CAS的ABA问题是怎么解决的算法:旋转数组的最小值(要求logn,答案是二分)...原创 2020-08-18 14:25:03 · 377 阅读 · 0 评论 -
疏漏总结(二十六)——Mysql
目前秋招已经到了一半了。打算用自己的话重新整理一下数据库相关的知识点。事务隔离级别的实现InnoDB中,需要解决的几个事务隔离的问题是,脏读(读到了并不真正存在的数据,往往因为事务没有commit导致),不可重复读(在一个事务里不同时间的对应的数据是不一样的),幻读(读取到先于当前事务提交的相同的数据,产生幻觉)。而解决这几种因为事务隔离产生的问题的时候,就需要事务隔离,事务隔离级别一共有四种:读未提交,读提交,可重复读,串行化。读未提交就是一路放行,不去独占。串行化就是一路加锁,类似于排他锁。原创 2020-08-18 09:18:02 · 296 阅读 · 0 评论 -
字节面试疏漏总结——备战最终面
回表InnoDB的索引分为两种:聚簇索引和普通索引像我们了解到的关于InnoDB存储引擎的知识,底层是基于B+树的,数据都存储于叶子节点,因此InnoDB引擎之下有且只有一个聚簇索引,也就是主键,如果没有主键的话,默认第一个非空unique列为聚簇索引。所以我们根据这个聚簇索引查表很快。另外一点就是,聚簇索引的叶子节点存储的是行记录,普通索引存储主键值。自定义的线程池拒绝策略重写rejectedExecution方法有界队列和无界队列Java中有哪些无界队列和有界队列?为什么生产上不能使用无原创 2020-08-01 22:09:59 · 425 阅读 · 0 评论 -
淘系秋招一面疏漏
springioclist set xml 接口 构造器 注解gc的搭配方法parNew+CMSParNew+Seriod OldParallel Young+Seriod OldSeriod Young+Seriod OldSeriod Young+CMSParallel Young + Parallel Oldjdk1.8的新特性集合框架,stream,lambda,函数式接口(comsumer predict supplier function),date API ,默认的GC原创 2020-07-23 01:04:13 · 228 阅读 · 0 评论 -
疏漏总结(二十五)——排序算法
1原创 2020-07-19 16:53:41 · 273 阅读 · 0 评论 -
关于kafka事务的一些理解
kafka的事务机制,主要是为了保证:可回滚操作确保exactly once原子性Exactly Once实际上,除了一些利用其它第三方中间件和GUID的情况,我们也可以使用kafka的事务来实现exactly once。主要方法是让下游系统通过具备幂等性,借用at least once的基本语意来实现,消费且仅一次,但是也是有限制条件的,如下:要求下游系统必须具有幂等性实现需要对kafka的工作机制很了解对于kafka stream而言,kafka本身就是自己的下游系统,但是他自己本原创 2020-07-19 13:08:40 · 647 阅读 · 0 评论 -
疏漏总结(二十四)——Zookeeper
首先,什么是ZK?zookeeper是我们经常会去使用的一个服务一致性组件,主要用来解决一些关于数据管理的问题。Zookeeper也可以作为一个数据库,但是和其他数据库的区别在于,zk不适合去存储海量的数据,主要还是用于去进行服务一致性的调度,此外,它还具备发布和订阅功能。zk的读请求可以由任何一台机器去完成,但是写请求,需要所有节点打成一致之后才能执行,所以,当机器变多的时候,吞吐量就会下降了。此外,有序性也是zk的一个非常重要的特性,这个在zk的分布式锁中也是非常有体现的,zk的所有更新都是有序进原创 2020-07-18 15:56:31 · 252 阅读 · 0 评论 -
京东秋招提前批一面面经
kafka简单讲一下数据结构消费者是拉取broker还是broker主动推送exactly once怎么保证kafka怎么实现死信队列kafka leader选举策略消息被消费后,offset还存在吗kafka ISR leader存数据吗什么是kafka的消费者组kafka是否支持事务zk的选举算法znode能不能存数据zk写数据流程leader和follower之间如何通信的2个结点的zk可以组成集群吗选举最多允许几个宕机4个结点可以组成集群吗redis 的几种缓存淘汰.原创 2020-07-17 09:51:06 · 395 阅读 · 0 评论 -
猜想问题(二)——关于ThreadLocal的实用性
先说一下场景,主要一个登录系统,我们用ThreadLocal存session做一个快速访问,然后多线程去异步设计这个登录操作,然后我们用了线程池去做整体的架构设计,然后ThreadLocal的key是session,value是个人信息,用这种设计模式去做登录。然后我们来想想可不可行,ThreadLocal的特性我们大约都知道了,不知道的可以去查查,我就直接讲了。如果我们用多线程的话,线程用完了回收,但是如果我们之前给这个线程使用过ThreadLocal,那么ThreadLocal回去之后,重新又接了个原创 2020-07-13 22:38:09 · 200 阅读 · 0 评论 -
疏漏总结(二十三)
change bufferb+树对范围查询好 MongoDB b树单次查询要好 InnoDBinsert 语句执行的过程意向锁1开头的状态码中间层,被拒绝mysql倒排索引String.intern()原创 2020-07-13 21:06:58 · 300 阅读 · 0 评论 -
计算机基础面试题个人总结
网络篇输入URL到显现页面的过程第一步是构建请求,首先确认好请求方式,URL地址,HTTP的版本号第二步是查找缓存,如果有,可以直接打开页面,没有就进入第三步第三步解析DNS,因为实际上我们不是给域名发请求,而是给IP发请求,所以需要DNS映射解析IP。(此过程也可以对解析结果缓存)第四步是进行TCP连接(三次握手,发送三个数据包确认连接,数据传输后,四次挥手断开连接),注意,chrome最多允许进行6个TCP连接,超出的就要排队。第五步是发送http请求,携带生成cookie,请求头,he原创 2020-07-12 13:24:12 · 2207 阅读 · 0 评论 -
疏漏总结(二十二)
分布式理论CATZAB投票的过程Rmq为啥不需要zk运行Kafka消息订阅发布选举老大的范围是在ISR里面选取,而不是OSRHW的存在意义,防止消费不存在的数据Redis的数据结构地理日志可以用来做什么死信队列...原创 2020-07-09 21:45:13 · 222 阅读 · 0 评论 -
疏漏总结(二十一)
用户态和内核态。处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理器是可被抢占的处于内核态执行时,则能访问所有的内存空间和对象,且所占有的处理器是不允许被抢占的。redis piplineredis String的存储方式软引用和幻象引用HashMap不是有序存储因为有个取余运算,所以不是。mysql buffer pool,change buffer索引下推。10万的topkhashmap统计频率然后大顶堆小顶堆。...原创 2020-07-09 20:13:48 · 234 阅读 · 0 评论 -
疏漏总结(二十)
redis每隔一段时间内存会突然飙升,然后又会降下来是为什么?如果持久化方案使用纯aof会怎么样Redis性能快的原因什么是TCP的半连接队列消息队列的topic是什么熔断和降级类加载的过程元空间是什么G1的三色标记法是什么...原创 2020-07-05 18:03:21 · 203 阅读 · 0 评论 -
疏漏总结(十九)——Kafka
因为简历上写了很多关于kafka的内容,所以在这里总结一下底层原理。首先先说一下自己对Kafka整体的印象和理解Kafka是一个吞吐效率很高的消息队列。一个kafka节点也可以叫做一个broker,一个broker里面有很多topic,我们存储消息的时候,会根据topic去存储,也会根据监听topic去消费。topic内部,又有很多的partition,而partition从本质上来说,是一个append log文件,也就是说,我们存储消息的时候,默认是按顺序去写入到硬盘的。(按顺序写入硬盘比随机写内原创 2020-07-03 12:25:40 · 386 阅读 · 0 评论 -
疏漏总结(十八)
线程池TimeOut参数啥意思超过这段时间还没有线程负载上任务,就会删除这条线程interrupt(),interrupted(),isInterrupted()的区别interrupt():这个作用相当于,让线程产生一个中断标志位,但是这不代表线程会立刻中断,就像yield一样,劝说cpu执行任务,而不是强制执行。interrupted():这个的作用是清除当前的中断标志位,并且返回线程上一次的中断状态。isInterrupted():判断当前线程是否处于中断。ThreadLoca.原创 2020-06-30 15:39:45 · 187 阅读 · 0 评论 -
疏漏总结(十七)——JAVA_OPTS辨析
目前咱们应用的这个配置,可能有JAVA_OPTS、也有_JAVA_OPTIONS,今天线上遇到了个问题,java服务配置了JAVA_OPTS,一直不生效;刚查了下这俩是有区别的。1、JAVA_OPTS:常用于一些应用的配置,如Tomcat,但它一般不作为环境变量,也不能被JVM识别的,是那些应用的自定义配置。如果用的是tomcat,这个变量配置的会生效,但是对于java服务是不生效的。2、JAVA_OPTIONS:也是作为环境变量来替代命令行参数的,但它是JVM厂家自定义的,可以覆盖JAVA_TOOL_原创 2020-06-18 18:16:37 · 489 阅读 · 0 评论 -
疏漏总结(十六)
1原创 2020-06-18 00:24:18 · 289 阅读 · 0 评论 -
疏漏总结(十五)——分布式事务
首先,什么是事务?其实这应该是数据库相关的比较基本的概念了,意思就是,将一系列的动作规划成一个执行单元,然后按照顺序执行,一旦有一个失败了就会立刻回滚。那么,什么是分布式事务呢?分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数原创 2020-05-27 17:29:21 · 272 阅读 · 0 评论 -
疏漏总结(十四)——分布式锁
连续摸鱼一周了,想回归好青年好好学习了…就先从分布式锁开始着手进行学习吧。。。原创 2020-05-01 22:39:18 · 415 阅读 · 0 评论 -
疏漏总结目录
疏漏总结(1):https://blog.csdn.net/qq_41936805/article/details/104700145疏漏总结(2)——Volatile:https://blog.csdn.net/qq_41936805/article/details/104765217疏漏总结(3):https://blog.csdn.net/qq_41936805/article/deta...原创 2020-04-21 13:25:26 · 573 阅读 · 1 评论 -
疏漏总结(十三)
聚簇索引和非聚集索引InnoDB间隙锁哨兵模式Bean的声明周期bean 的作用域Spring的两种事务dns解析域名的流程tcp三次快速打开什么是零拷贝单向认证和双向认证https...原创 2020-04-20 17:47:22 · 243 阅读 · 0 评论 -
百度Java实习二面面经
自我介绍说说你在项目中的角色吧你主要负责的具体功能是什么怎么保证线程安全的你说你有jvm调优经验,能讲讲吗我看你提到了volatile,好像又不太敢说,能仔细给我讲讲吗(开启装逼模式那你再介绍介绍自己知道的锁吧(一直讲到了面试结束算法:k个一组反转链表算法不会写,但是也过了,面试官说项目基础很强,破格放我一马…...原创 2020-04-18 22:40:21 · 531 阅读 · 0 评论 -
百度Java实习一面面经
自我介绍介绍项目说说final关键字在java中的意义讲讲两种动态代理的区别说一下你常用过的集合类,哪些安全,哪些不安全Object包下常用方法wait和sleep区别唤醒线程的方法线程的几种状态怎么创建线程的你说你对线程池很了解,讲一讲流程吧(开启装逼的15分钟能说说怎么保证线程安全吗(继续装逼15分钟算法:括号匹配,用stack可以直接秒...原创 2020-04-18 22:33:46 · 471 阅读 · 0 评论 -
疏漏总结(十二)
TCP里time_wait和close_wait的区别TCP四次挥手的时候close-wait过多怎么办volatile为什么不能保证原子性spring是如何解析xml的ORM是怎么实现的在分布式环境下如何设计接口才能做到幂等性。什么是深拷贝,什么是浅拷贝如何自己实现一个RPC什么是restful API为什么锁膨胀...原创 2020-04-08 18:24:35 · 282 阅读 · 0 评论 -
疏漏总结(十一)
什么是Java的快速失败和安全失败?快速失败:两个线程,A去读一个集合的内容,B去update相同集合的内容,会报ConcurrentModificationException。原因是:集合框架内部针对每个元素有一个modCount,如果元素的值改变,modCount也会改变,如果我们使用hashNext()/next()遍历到了modCount改变的元素(每次迭代都会先比较是否为自己心仪...原创 2020-04-07 10:51:16 · 209 阅读 · 0 评论 -
蚂蚁金服Java后台一面
自我介绍讲一下实习的项目讲一下实习中你理解最深刻的地方能说说什么是嵌入式数据库吗为什么redis的qps没有rocksdb要高如何设计一个线程池,从操作系统角度去说java线程有哪几种状态time waiting和waiting的区别是什么time waiting和waiting下一个状态可能是什么随便说5种导致oom的原因和解决方案...原创 2020-04-02 11:01:01 · 358 阅读 · 0 评论 -
疏漏总结(十)
线程池的状态①线程池的初始状态的Running,能够接受新任务,也能处理现在的任务②线程池处在SHUTDOWN状态时,不接收新任务,但能处理已添加的任务。③线程池处在STOP状态时,不接收新任务,不处理已添加的任务,并且会中断正在处理的任务。④当线程池变为TIDYING状态时,意味着所有任务都结束了,执行钩子函数terminated⑤线程池彻底终止,就变成TERMINATED状态。...原创 2020-03-30 21:46:57 · 232 阅读 · 0 评论 -
疏漏总结(九)——http与https
作为面试中常考的点,打算在这篇文章做一个仔细的总结。http和https主要的区别如下:①https需要到CA申请证书,一般的免费证书比较少②http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议③端口一个是80一个是443④http是无状态连接,https是加密传输的网络协议,更安全。https请求的流程:客户端发起https请求到443端口服务...原创 2020-03-28 17:35:37 · 275 阅读 · 0 评论 -
美团Java一面面经
大约面试了85-90分钟吧,中间我网络有点卡,断了一次线自我介绍介绍实习的经历讲一下怎么处理的oomjvm有很多分区吧,你能说说每个分区出现oom的情况吗(这个我说到第8种左右就被打断了讲讲vector linkedlist arraylist的区别,插入删除哪个快,为什么http和https的区别tcp和udp的区别tcp和udp的使用场景java1.7 1.8的区别你觉得...原创 2020-03-28 12:10:01 · 626 阅读 · 1 评论 -
疏漏总结(八)—— 线程池
打算用这篇文章将线程池相关的知识点串一下。先从构造方法里面的参数开始说。corePoolSize:核心线程数核心线程是一定会存在着的线程,也就是说,如果你设置了假如说5,那么不管这五个线程有没有任务,都会被创建出来。queueCapacity:阻塞队列当核心线程数被使用到了最大值后,新任务如果还需要创建线程,就会进入阻塞队列,等前面的线程执行结束重新放入线程池后,才会继续创建线程...原创 2020-03-27 23:40:48 · 476 阅读 · 0 评论 -
疏漏总结(六)
tcp如何解决粘包的metaspace逃逸分析方法区oom是为什么垂直分表和水平分表String.intern()mysql索引下推()redis io模型applicationContext和BeanFactory进程调度策略redis缓存删除策略...原创 2020-03-23 15:24:26 · 264 阅读 · 0 评论 -
疏漏总结(七)——位运算
做快手笔试题的时候,突然发现自己的这个漏洞,就总结一下常用的运算符共 6 种,分别为与( & )、或( | )、异或( ^ )、取反( ~ )、左移( << )和右移( >> )。首先我们要把比较的数字全部转化为二进制,然后,先看这三种:& 只有两个对应位都为 1 时才为 1| 只要两个对应位中有一个 1 时就为 1^ 只有两个对应位不同时才为 1...原创 2020-03-22 10:42:47 · 208 阅读 · 0 评论 -
疏漏总结(五)
tcp如何保证可靠性传输?滑动窗口,拥塞控制,快重传bio nio aio简单介绍一下redis支持的几种数据类型中zset底层是怎么实现的?跳表,压缩列表hashmap分配key的运算是怎么样的,说说put操作为什么hashmap的容量都是2的n次方synchronized和lock的区别cas如何保证原子性...原创 2020-03-21 12:24:38 · 304 阅读 · 0 评论 -
阿里云Java后端一面面经
一共面试了1小时30分钟左右。自我介绍说一下区块链整体运行的流程能说一下共识里面具体是通过什么做到共识的吗还了解什么其他的共识算法吗你们这方面的架构是怎么设计的说说你们里面连接池的角色你说你们一开始用redis qps很低,换了rocksdb qps升高了,是为什么除了这个嵌入式数据库,有没有了解其他区块链的架构…后面有点涉及更深层的区块链知识就不说了你们项目用的是什么g...原创 2020-03-15 17:22:59 · 3318 阅读 · 1 评论