面试题
文章平均质量分 85
若能绽放光丶
这个作者很懒,什么都没留下…
展开
-
计算机网络和操作系统面试题
1. TCP三次握手第一次握手:客户端TCP进程也先建立传输控制块TCB,然后向服务端发送连接请求报文段,此时SYN=1,随机选定一个初始序号seq=x,,此报文不能携带数据,但是要消耗掉一个序号,发送完毕后,客户端进入SYN-SENT(同步已发送)状态第二次握手:服务端收到客户端请求连接报文段后,若同意建立连接,则发送确认报文,确认报文中SYN=1、ACK=1,确认号ack=x+1,同时随机选定一个自己序号seq=y,确认报文段同样不能携带数据,但是也要消耗掉一个序号,发送完毕后服务端进入SYN-RC原创 2022-02-25 20:04:32 · 881 阅读 · 0 评论 -
MySQL面试题整合
1. MySQL索引的底层数据结构是?为什么要设计索引?答:加快数据的查询效率设计索引的时候,使用什么数据结构,为什么?答:B+树问:为什么?哈希表也能存储,但是补充:扰动函数,让高位尽可能参与哈希值的运算,让数据更加散列二叉树和红黑树也能存储,但是缺点:深度太深,会频繁地在磁盘和内存间io,影响读取效率B树也可以存储,但是一个磁盘块的空间有限,data的存在会浪费空间,所以我们只用叶子节点来存数据,这样就构成了B+树。B+树:非叶子节点只负责搜索,这样存储的数原创 2021-09-24 09:41:15 · 465 阅读 · 0 评论 -
深入理解spark
1. 结构spark是标准的主从结构,在yarn模式下,是由resourceManager负责调度,当一个任务提交的时候,会开启一个Driver,Driver会分配资源,划分任务,再向rm申请节点,节点过来后,在节点中开辟Executor,执行每一块任务。DriverSpark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。Driver 在 Spark 作业执行时主要负责:➢ 将用户程序转化为作业(job) ➢ 在 Executor 之间调度任务(task)原创 2021-09-21 15:38:14 · 488 阅读 · 0 评论 -
深入理解Flume
1. Flume是干什么的flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方去,简单来说flume就是收集日志的Flume是用来监控,收集日志的。2. Flume架构flume之所以这么神奇,是源于它自身的一个设计,这个设计就是agent,agent本身是一个Java进程,运行在日志收集节点—所谓日志收集节点就是服务器节点。agent里面包含3个核心的组件:source—->channel—–>sink,类似生产者、仓库、消费者的架构。source:是原创 2021-09-15 16:32:36 · 168 阅读 · 0 评论 -
深入理解HBase
1. HBase概念HBase是基于Hadoop的非关系型数据库特点a.可以对海量数据进行随机,实时的读写操作b.可以存储海量数据:数十亿行 X 数百万列c.数据存储比较稀疏d.数据类型比较单一e.速度快在数据量非常巨大的情况下,没有那么慢2. 数据存储形式表(table)存储数据的基本单位列族(columnFamily)具有类似含义的列的集合,列属于哪个列族由行决定列(column)某个列族下的一个具体列行键(rowkey)代表当前行的唯一标识,独立于表中的任何字段原创 2021-09-09 19:26:11 · 389 阅读 · 0 评论 -
深入理解Hive
1. 数据库和数据仓库的区别数据库:真正存储和管理数据的,对数据有直接的处置权关心的事情是 在线事务过程(OLTP)数据仓库:可以利用一个或多个数据库的数据,进行数据分析。关心的事情是 在线分析过程(OLAP)2. hive运行原理写sql语句,hive内部自动转成MapReduce程序执行。原数据在hdfs上,sql语句需要使用表。表是以目录形式存在hdfs的某个指定位置(warehouse)可以通过数据加载的形式,把hdfs或本地的原数据加载到表(目录)中表里的数据实际上是存原创 2021-08-15 20:57:26 · 244 阅读 · 0 评论 -
深入理解zookeeper
1. 什么是zookeeperzookeeper是一个独立的分布式框架zookeeper = 文件系统 + 监听同步机制2. zookeeper的文件系统zookeeper中存在一个小型的文件系统。作用:存大家都关心的数据存在形式:树形结构存在,每个节点都是一个znode默认只有一个根节点(zookeeper)随着数据的增加,会不断壮大数据的存在形式:在每个znode上以键值对的形式存在key:znode的名字 value:具体存储的内容3. zookeeper选举机制原创 2021-08-03 13:21:08 · 252 阅读 · 0 评论 -
yarn运行机制
1. yarn的角色分配resourceManager所有节点资源管理的领导者,全局只有一个。NodeManager每个DataNode节点都存在的管理当前节点的管理者ApplicationMaster对于写好的代码进行任务的划分container容器,是一个抽象的概念。对集群中所有节点的资源进行重新分配,按照任务所需划分资源。2. 理解container从上图可以发现,container正是实现了集群对比单个机器的优势,就算job执行的要求比每一个单个机器配置更高,conta原创 2021-08-03 13:09:44 · 399 阅读 · 0 评论 -
深入理解Mapreduce(shuffle机制、数据倾斜、切片机制)
1. MapReduce介绍map:映射(键值对) 最小化数据单元,把每个单元以键值对的形式发送到下一个环节reduce:减少,合并。把map端送过来的最小化数据,按照key相同,value值做运算map阶段输出数据的形式:(key,value)---------------- shuffle机制 -----------------------------reduce阶段接收形式:(key,(value,value,value))注意:map读取数据是按行读取,key是偏移量,value是每一行原创 2021-08-02 17:06:08 · 533 阅读 · 0 评论 -
Java面试题(十):ReentrantLock底层原理
1. 可重入锁ReentrantLock翻译过来其实就是可重入锁,那么什么是可重入锁?简单来说,就是一把锁重复使用。以下就是一个可重入锁的机制,lock1.lock()已经获取到了lock1对象的锁,那么while里的lock1.lock()可以自动备货区,一把锁重复使用。这样的好处是什么?答:避免堵塞,提高效率,我们接下来解释一下为什么有这两个好处。避免堵塞:lock1.lock()获取lock1对象的锁,while1中的lock1.lock()也是尝试获取lock1对象的锁,但是lock原创 2021-07-17 10:36:32 · 1438 阅读 · 1 评论 -
深入理解HDFS
1. 文件块HDFS上的文件是分块存储的,默认每一块是128M,若一个文件是150M,那么它会被分成两个块存储,一个128M,一个22M。1.1. 为什么会有这样的规则呢?试想,当一个文件的大小为1T,计算机查找到它的时间是1s,但是读取它的世界可能就远远大于1s,这让文件的读取效率变得特别的低。为此,我们有一个规则:找到文件的时间 = 读取文件的时间*1%换言之,找到文件需要1s,读取文件需要100s,这个时间比例是比较合适的而目前磁盘的传输速率普遍是100M/s,经过计算,128M的块大原创 2021-07-16 15:18:25 · 347 阅读 · 0 评论 -
Java面试题(九):synchronized
1. 对象信息的存储对象的信息实际上是存在与堆中的,而方法区中则是存类的信息。为什么非要8的整数倍?答:可以保证内存的利用率1.1. 对象头中MarkWord偏向锁:只有一个线程能用(专用)当对象使用过hashCode方法的时候不能产生偏向锁,直接产生轻量级锁。2. synchronized锁升级2.1. 偏向锁升级为轻量级锁当是单线程的时候,偏向锁只能由一个线程使用,而当再增加一个线程的时候,偏向锁会向轻量级锁升级2.2. 轻量级锁升级为重量级锁当自旋时间超时,就会变原创 2021-06-17 23:00:59 · 531 阅读 · 0 评论 -
Java面试题(八):JVM
1. 内存结构程序计数器虚拟机栈本地方法栈堆方法区1.1. 程序计数器1.1. 作用程序计数器的作用就是在指令执行的过程中,记住下一条指令的执行地址。二进制字节码前面的数字就恶意看作是内存地址当getstatic命令被解释器拿到的时候,程序计数器会记录下一条指令的地址,也就是astore_1的地址3,下一次解释器就是从程序计数器里拿到下一条指令的地址3,以此类推。程序计数器的物理上是由寄存器实现的,寄存器是cpu里读取速度最快的单元。1.2. 特点线程私有:每个线程都原创 2021-06-17 19:23:05 · 571 阅读 · 6 评论 -
Java面试题(七):集合类面试题
HashMap面试题1. HashMap1.1. 哈希值、哈希表、哈希函数哈希值:通过一定的散列算法,把一个不固定长度的输入,转换为固定长度的输出,结果我们称之为哈希值(hash)。map中,hash就是一个int值。在JDK1.7之前,HashMap采用数组+链表的形式存储数据,查找的时候,先通过hashCode查找数组下标,要是数组下标的位置有链表,那就再遍历链表通过equals方法查找,要是hash冲突很严重(链表很长),这样是很耗时的。1.2. HashMap的长度问:Hash原创 2021-06-16 17:58:43 · 3156 阅读 · 1 评论 -
Java面试题(六):线程池(原理)
1. 线程池的优点线程池的底层是阻塞队列2. 三种线程池这三种线程池的底层都是用ThreadPoolExecutor和阻塞队列(BlockingQueue)实现的,例如newCachedThreadPool的底层3. 线程池七大参数我们点开底层代码,发现线程池实现其实是有七大参数,那为什么上面只有五大参数呢?3.1 corePoolSize(今日当值线程)4. 线程池底层工作原理要是5个线程都满了,阻塞队列也满了,那么就到了第4步,开启拒绝策略,拒绝策略分为四种。要是第4步原创 2021-06-08 17:03:41 · 1258 阅读 · 0 评论 -
Java面试题(五):多种锁和阻塞队列
1. 悲观锁和乐观锁1.1. 乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,乐观锁在Java中是通过使用无锁编程来实现,最常采用的是CAS算法,Java原子类中的递增操作就通过CAS自旋实现的。CAS全称 Compare And Swap(比较与交换),是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。java.util.conc原创 2021-06-07 17:39:37 · 502 阅读 · 2 评论 -
Java面试题(四):JUC
1. 闭锁CountDownLatch有些操作,是要等其它线程的计算全部完成才能执行,这就是闭锁。为此,JUC提供了CountDownLatch,传入一个整数,在其它线程里可以使这个整数减1,当这个整数为0的时候,对应的操作才会执行。2. Callable创建执行线程我们熟知的创建执行线程的方式有两种:继承Thread类实现Runnable方法其实创建执行线程,有四种方法,这里介绍第三种:实现Callable接口,它与Runnable接口有一定的区别。3. 同步锁(Lock)解决线原创 2021-06-04 18:54:43 · 753 阅读 · 1 评论 -
Java面试题(三)集合类线程不安全
1. ArrayList线程不安全1.1. 面试题我们知道ArrayList是线程不安全的,那么请写出一个案例,证明ArrayList的线程不安全。首先明白什么是线程不安全,其实在多个线程同时写入同一个ArrayList中的时候,会报错,这个错误叫并发修改异常。所以这道题很简单,我们创建一个ArrayList对象,再创建多个线程,这些线程全部调用这个对象的add方法,就会报错。1.2. 如何解决并发修改异常?方法1:将ArrayList换成Vector,Vector的add方法是加有syn原创 2021-06-03 18:58:28 · 269 阅读 · 2 评论 -
Java面试题(二)JMM,volatile,CAS
1. JMM主内存:共享区域,就是内存条工作内存:每个线程的内存,是线程独有的。JMM的性质:可见性原子性有序性JMM规范是大多数并发编程所要遵守的规范。可见性:当其中一个线程对共享变量完成更改的时候,那么其它线程就会第一时间更新自己的共享变量的副本(及时通知)。......原创 2021-06-02 19:57:19 · 308 阅读 · 4 评论 -
Java基础高频面试题(一):对象的创建
1. 题目描述写一个Father类写一个Son类继承Father问题:这段代码的运行结果是什么?2. 考点这道题的考点有三个类初始化过程一个类要创建实例需要先加载并初始化该类main方法所在的类需要先初始化一个子类要初始化,必须先初始化父类一个类初始化就是执行< clinit>()方法< clinit>()方法由静态类变量显示赋值代码和静态代码块组成类变量显示赋值代码和静态代码块代码从上到下顺序执行< clinit>()方法只执原创 2021-05-26 17:53:14 · 207 阅读 · 0 评论 -
Hadoop和yarn面试题(详解)
Hadoop优化有哪些方面列出正常工作的hadoop集群中hadoop都分别启动哪些进程以及他们的作用Hadoop总job和Tasks之间的区别是什么?Hadoop高可用HA模式简要描述安装配置一个hadoop集群的步骤fsimage和edit的区别yarn的三大调度策略hadoop的shell命令用的多吗?,说出一些常用的用mr实现用户pv的top10?1. Hadoop优化有哪些方面0)HDFS 小文件影响(1)影响 NameNode 的寿命,因为文件元数据存储在 Nam..原创 2021-05-10 17:43:36 · 414 阅读 · 0 评论 -
MapReduce面试题(详解)
Mapreduce 的 map 数量 和 reduce 数量是由什么决定的 ,怎么配置map数量是由任务提交时,传来的切片信息决定的,切片有多少,map数量就有多少科普:什么是切片?切片的数量怎么决定?举例:输入路径中有两个文件,a.txt(130M),b.txt(1M),切片是一块128M,但是不会跨越文件,每个文件单独切片,所以这个路径提交之后获得的切片数量是3,大小分别是128M,2M,1Mreduce的数量是可以自己设置的...原创 2021-05-10 17:33:34 · 2585 阅读 · 0 评论 -
HDFS面试题(详解)
本文会对HDFS常见面试题进行详解,并且后续持续更新本次内容:1.hdfs写流程2.hdfs读流程3.hdfs的体系结构4.一个datanode 宕机,怎么一个流程恢复5.hadoop 的 namenode 宕机,怎么解决6.namenode对元数据的管理、7. namenode工作原理1. hdfs写流程(必背)我们来看一下这张图片,步骤都有序号,看五分钟肯定能看会,理解记忆就行了1)客户端通过DistributedFileSystem模块向NameNode请求上传.原创 2021-05-07 11:23:18 · 950 阅读 · 0 评论