面试复习
文章平均质量分 78
一枚进阶码农
这个作者很懒,什么都没留下…
展开
-
Kafka学习之怎么保证不丢,不重复消费数据
Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受它带来的高并发,高可靠等便利时,同时不得不面对可能存在的问题,最常见的就是丢包,重发问题。1. 丢包问题1.1 问题描述所谓丢包一般是指发送方发送的数据未到达接收方. 常见的丢包可能发生在发送端, 网络,接收端.例如,消息推送服务,每天早上,手机上各终端都会给用户推送消息,这时候流量剧增,可能会出现kafka发送数据过快,导致服务器网卡爆满,或者磁盘处于繁忙状态,可能会出现丢包现象。1.2 问题解决解决方原创 2021-05-10 19:23:46 · 474 阅读 · 0 评论 -
数仓分层概述
概述数仓分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更容易理解和使用。数据分层的作用我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是数据分层。数据分层的好处有。①,清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。②,减少重复开发:规范数据分层,开发一些通用的中间层数据,能减少极大的重复计算。③,统一数据口径:通过数据分层提供统一的数据出口,同意对外输出的数据口径。④,复杂问题简单化:将一.原创 2021-04-21 10:33:27 · 951 阅读 · 0 评论 -
最新Hive/Hadoop高频面试点小集合
Hive部分:1、Hive的两张表关联,使用MapReduce怎么实现?如果其中有一张表为小表,直接使用map端join的方式(map端加载小表)进行聚合。如果两张都是大表,那么采用联合key,联合key的第一个组成部分是join on中的公共字段,第二部分是一个flag,0代表表A,1代表表B,由此让Reduce区分客户信息和订单信息;在Mapper中同时处理两张表的信息,将join on公共字段相同的数据划分到同一个分区中,进而传递到一个Reduce中,然后在Reduce中实现聚合。.原创 2021-04-15 14:16:22 · 299 阅读 · 0 评论 -
主流消息队列对比
为什么使用消息队列?消息队列的优点和缺点?kafka、activemq、rabbitmq、rocketmq都有什么优缺点?面试官角度分析:(1)你知不知道你们系统里为什么要用消息队列这个东西?(2)既然用了消息队列这个东西,你知不知道用了有什么好处?(3)既然你用了MQ,那么当时为什么选用这一款MQ?1. 为什么使用消息队列?面试官问这个问题的期望之一的回答是,你们公司有什么业务场景,这个业务场景有什么技术挑战,如果不用MQ可能会很麻烦,但是再用了之后带来了很多好处。消息队列的常原创 2021-04-15 14:01:22 · 623 阅读 · 0 评论 -
线上服务平均响应时间太长排查
最近线上环境某个接口服务响应时间偏长,导致用户体验超差,那平时该怎么快速的排查这类问题呢?①、为代码添加上详细的打印日志;不建议,一是线上环境,没法随便的重新部署更换了详细日志的代码,二是 添加详细的日志输出,那就意味这会生成大量的日志文件,这些日志文件会占据大量服务器磁盘空间。②、搭建一个模拟了线上环境的测试环境进行复盘排查;额,出现了这种问题哪有那么多的时间让你进行环境复盘排查,所以此方案也是不建议的。③、线上诊断神器Arthas,这个工具是阿里开源的,专门用于线上环境问题排查的,这...原创 2021-04-15 13:57:10 · 258 阅读 · 0 评论 -
java多线程使用场景
多线程使用的主要目的在于:1、吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的。简单的说,可能就是一个请求一个线程。或多个请求一个线程。如果是单线程,那同时只能处理一个用户的请求。2、伸缩性:也就是说,你可以通过增加CPU核数来提升性能。如果是单线程,那程序执行到死也就利用了单核,肯定没办法通过增加CPU核数来提升性能。鉴于是做WEB的,第1点可能你几乎不涉及。那这里我就讲第二点吧。举个简单的例子:假设有个请求,这个请求服务端的处理需要执行3个很缓慢的IO操作(比如数据原创 2021-04-15 10:25:28 · 268 阅读 · 0 评论 -
java常用八大排序
1.直接插入排序经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列。 对第四个数、第五个数……直到最后一个数,重复第二步。 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用插入。 设定插入数和得到已经排好序列的最后一个数的位数。insertNum和j=i-1。 从最后一原创 2021-04-15 10:15:43 · 128 阅读 · 0 评论 -
Spring的 IOC 容器与New对象比较
ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。 资源集中管理,实现资源的可配置和易管理。 降低了使用资源双方的依赖程度,也就是我们说的耦合度。 也就是说,甲方要达成某种目的不需要直接依赖乙方,它只需要达到的目的告诉第三方机构就可以了,比如甲方需要一双袜子,而乙方它卖一双袜子,它要把袜子卖出去,并不需要自己去直接找到一个卖家来完成袜子的卖出。它也只需要找第三方,告诉别人我要卖一双袜子。这下好了,甲乙双方进行交易活动,都不需要自原创 2021-04-15 10:02:24 · 1421 阅读 · 1 评论 -
Redis实现电商系统的库存扣减
在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。解决方案 使用mysql数据库,使用一个字段来存储库存,每次扣减库存去更新这个字段。 还是使用数据库,但是将库存分层多份存到多条记录里面,扣减库存的时候路由一下,这样子增大了并发量,但是还是避免不了大量的去访问数据库来更新库存。 将库存放到redis使用redis的incrby特性来扣减库存。 分析在上面的第一种和第二种方式都是基于数据来扣减库存。基于数据库单库存第一原创 2021-04-15 09:45:45 · 903 阅读 · 0 评论 -
Java异常概述
Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪”抛出,异常信息回答了“为什么”会抛出。Java异常架构1. ThrowableThrowable 是 Java 语言中所有错误与异常的超类。Throwable 包含两个原创 2021-04-15 09:01:21 · 137 阅读 · 0 评论 -
sql优化
表结构优化:1、根据自己的业务选择合适的引擎2、表设计时尽量符合第三范式第一范式:表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库就自动的满足。第二范式:表中的记录是唯一的, 就满足第二范式, 通常我们设计一个主键来实现第三范式:表中不要有冗余数据, 即表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放.为什么说尽量符合? 因为有些系统为了提高运行效率,就必须降低范式标准,适当保留冗余数据。3、表的字段尽可能使用NOT NULL4、原创 2021-04-13 10:30:32 · 52 阅读 · 0 评论 -
mysql隔离级别
四种数据库隔离级别:READ UNCOMMITED(未提交读): 在 READ UNCOMMITED 级别,事务中的修改,即使没有提交,对其他事务也是可见的。事务可以读取未提交的数据,这也被称为脏读(Dirty Read)。这个级别会导致很多问题,从性能上来说,READ UNCOMMITED 不会比其他的级别好太多,但却缺少其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。READ COMMITED(提交读): 大多数数据库系统的默认隔离级别都是 READ COMM原创 2021-04-12 15:58:22 · 55 阅读 · 0 评论 -
Java 内存模型(Java Memory Model)——深入理解Java虚拟机
一、基本概念Java 内存模型(Java Memory Model,JMM)试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一直的内存访问效果。定义 Java 内存模型,并不是一件容易的事情:需要足够严谨,让 Java 的并发内存访问操作不会产生歧义;同时,需要足够宽松,使得虚拟机的实现能有足够的自由空间去理用硬件的各种特性。Java 内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值储存到内存和从内存中取出变量值这样的底层细节。主原创 2021-04-12 15:13:14 · 130 阅读 · 0 评论 -
spring事务相关
spring事务事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题。事务最重要的两个特性,是事务的传播级别和数据隔离级别。传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。事务的7种传播级别:1) PROPAGATION_REQUIRED ,默认的spring事务传播级别,使用该级别的特点是,如果上下文中已经存在事务,那么就加入到事务中执行,如果当前上下文中不存在事务,则新建事务执行。所以这个级别通..原创 2021-04-12 10:21:42 · 76 阅读 · 0 评论