面试题百日百刷
文章平均质量分 70
zjlala96
努力学习,终生学习
展开
-
面试题百日百刷-java基础篇(十一)
② LinkedList LinkedList 采⽤链表存储,所以对于 add(E e) add(E e) ⽅法的插⼊,删除元素时间复杂度不受元素位置的影响,近似O(1),如果是要在指定位置 ii 插⼊和删除元素的话( (add(int index, E element) (add(int index, E element) ) 时间复杂度近似为 o(n)) o(n)) 因为需要先移动到指定位置再插⼊。2. Vector 是 List 的古⽼实现类,底层使⽤ Object[ ]存储,线程安全的。原创 2023-05-28 09:00:00 · 1062 阅读 · 1 评论 -
面试题百日百刷-java基础篇(十)
Map (⽤ Key 来搜索的专家): 使⽤键值对(kye-value)存储,类似于数学上的函数 y=f(x),“x”代表key,"y"代表 value,Key 是⽆序的、不可重复的,value 是⽆序的、可重复的,每个键最多映射到⼀个值。当我们需要保存⼀组类型相同的数据的时候,我们应该是⽤⼀个容器来保存,这个容器就是数组,但是,使⽤数组存储对象具有⼀定的弊端, 因为我们在实际开发中,存储的数据的类型是多种多样的,于是,就出现了“集合”,集合同样也是⽤来存储多个数据的。转载 2023-05-27 09:00:00 · 58 阅读 · 0 评论 -
面试题百日百刷-java基础篇(八)
进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而 TIME_WAITING(超时等待) 状态相当于在等待状态的基础上增加了超时限制,比如通过 sleep(long millis) 方法或 wait(long millis) 方法可以将 Java 线程置于 TIMED WAITING 状态。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。转载 2023-05-25 09:00:00 · 65 阅读 · 0 评论 -
面试题百日百刷-java基础篇(七)
大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。NullPointerException(要访问的变量没有引用任何对象时,抛出该异常)、ArithmeticException(算术运算异常,一个整数除以 0时,抛出该异常)和 ArrayIndexOutOfBoundsException (下标越界异常)。Throwable: 有两个重要的子类:Exception(异常) 和 Error(错误) ,二者都是 Java 异常处理的重要子类,各自都包含大量子类。转载 2023-05-24 09:00:00 · 43 阅读 · 0 评论 -
面试题百日百刷-java基础篇(六)
getClass()//native方法,用于返回当前运行时对象的Class对象,使用了final关键字修饰,故不允许子类重写。public boolean equals(Object obj)//用于比较2个对象的内存地址是否相等,String类对该方法进行了重写用户比较字符串的值是否相等。public native int hashCode() //native方法,用于返回对象的哈希码,主要使用在哈希表中,比如JDK中的HashMap。Object 类是一个特殊的类,是所有类的父类。转载 2023-05-23 09:00:00 · 56 阅读 · 0 评论 -
面试题百日百刷-java基础篇(五)
因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super() 来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到没有参数的构造方法可供执行。2. 从变量在内存中的存储方式来看:如果成员变量是使用 static 修饰的,那么这个成员变量是属于类的,如果没有使用 static 修饰,这个成员变量是属于实例的。而对象存在于堆内存,局部变量则存在于栈内存。5. 从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。转载 2023-05-11 09:00:00 · 64 阅读 · 0 评论 -
面试题百日百刷-java基础篇(四)
因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发。这八种基本类型都有对应的包装类分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容。2. 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。转载 2023-05-10 09:00:00 · 69 阅读 · 0 评论 -
面试题百日百刷-java基础篇(三)
当你把对象加入 HashSet 时, HashSet 会先计算对象的 hashcode 值来判断对象加入的位置,同时也会与其他已经加入的对象的 hashcode 值作比较,如果没有相符的 hashcode, HashSet 会假设对象没有重复出现。equals() : 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。转载 2023-05-09 09:00:00 · 65 阅读 · 0 评论 -
面试题百日百刷-java基础篇(二)
比如,你想阅读一本英文名著,你可以找一个英文翻译人员帮助你阅读,有两种选择方式,你可以先等翻译人员将全本的英文名著(也就是源码)都翻译成汉语,再去阅读,也可以让翻译人员翻译一段,你在旁边阅读一段,慢慢把书读完。Java 语言既具有编译型语言的特征,也具有解释型语言的特征,因为 Java 程序要经过先编译,后解释两个步骤,由 Java 编写的程序需要先经过编译步骤,生成字节码(*.class 文件),这种字节码必须由Java 解释器来解释执行。常用的通配符为: T,E,K,V,?//这里直接添加会报错。转载 2023-05-08 09:00:00 · 74 阅读 · 0 评论 -
面试题百日百刷-java基础篇(一)
所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。转载 2023-05-07 09:00:00 · 78 阅读 · 0 评论 -
面试题百日百刷-Linux篇(一)
3、查看磁盘IO读写情况:iotop(需要安装一下:yum install iotop)、iotop -o(直接查看输出比较高的磁盘读写程序)参考答案:find、df、tar、ps、top、netstat等。(尽量说一些高级命令)4、查看端口占用情况:netstat -tunlp | grep 端口号。echo "文件存在!2、查看磁盘存储情况:df -h。5、查看进程:ps aux。echo "文件不存在!1、查看内存:top。转载 2023-05-06 09:00:00 · 36 阅读 · 0 评论 -
面试题百日百刷-flink篇(十一)
在流式处理中,CEP 当然是要支持 EventTime 的,那么相对应的也要支持数据的迟到现象,也就是watermark的处理逻辑。CEP对未匹配成功的事件序列的处理,和迟到数据是类似的。在 Flink CEP的处理逻辑中,状态没有满足的和迟到的数据,都会存储在一个Map数据结构中,也就是说,如果我们限定判断事件序列的时长为5分钟,那么内存中就会存储5分钟的数据,这在我看来,也是对内存的极大损伤之一。一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据 —— 满足规则的复杂事件。转载 2023-05-05 09:00:00 · 52 阅读 · 0 评论 -
面试题百日百刷-flink篇(十)
在MemorySegment这个抽象之上,Flink在数据从operator内的数据对象在向TaskManager上转移,预备被发给下个节点的过程中,使用的抽象或者说内存对象是Buffer。而在同一个JVM进程中的task,可以共享TCP连接(基于多路复用)和心跳消息,可以减少数据的网络传输,也能共享一些数据结构,一定程度上减少了每个task的消耗。TaskManager中最细粒度的资源是Task slot,代表了一个固定大小的资源子集,每个TaskManager会将其所占有的资源平分给它的slot。转载 2023-05-04 09:00:00 · 44 阅读 · 0 评论 -
面试题百日百刷-flink篇(九)
JobManager 负责整个 Flink 集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中TaskManager 上 TaskSlot 的使用情况,为提交的应用分配相应的 TaskSlot 资源并命令 TaskManager 启动从客户端中获取的应用。JobManager 相当于整个集群的 Master 节点,且整个集群有且只有一个活跃的JobManager ,负责整个集群的任务管理和资源管理。同时 TaskManager 之间的数据交互都是通过数据流的方式进行的。转载 2023-05-03 09:00:00 · 53 阅读 · 0 评论 -
面试题百日百刷-flink篇(八)
整个Flink Job的提交还包含着ActorSystem的创建,JobManager的启动,TaskManager的启动和注册。将operators链接成task是非常有效的优化:它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量。这就是我们所说的算子链。2)JobGraph 从StreamGraph生成,将可以串联合并的节点进行合并,设置节点之间的边,安排资源共享slot槽位和放置相关联的节点,上传任务所需的文件,设置检查点配置等。转载 2023-05-02 09:00:00 · 40 阅读 · 0 评论 -
面试题百日百刷-flink篇(七)
Storm 是通过监控 Bolt 中的接收队列负载情况,如果超过高水位值就会将反压信息写到 Zookeeper ,Zookeeper 上的 watch 会通知该拓扑的所有 Worker 都进入反压状态,最后 Spout 停止发送 tuple。作业参数调优包括:并行度的设置,State的设置,checkpoint的设置。原理是缓存一定的数据后再触发处理,以减少对State的访问,从而提升吞吐和减少数据的输出量。这时候我们在进行聚合的时候,北京和上海就会出现数据堆积,我们可以单独数据北京和上海的数据。转载 2023-05-01 09:00:00 · 48 阅读 · 0 评论 -
面试题百日百刷-flink篇(六)
Apache Flink摒弃了Java原生的序列化方法,以独特的方式处理数据类型和序列化,包含自己的类型描述符,泛型类型提取和类型序列化框架。Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预分配的内存块上。Flink源码中有一个独立的connector模块,所有的其他connector都依赖于此模块,Flink 在1.9版本发布的全新kafka连接器,摒弃了之前连接不同版本的kafka集群需要依赖不同版本的connector这种做法,只需要依赖一个connector即可。转载 2023-04-30 09:00:00 · 47 阅读 · 0 评论 -
面试题百日百刷-flink篇(五)
在一个Flink Job中,数据需要在不同的task中进行交换,整个数据交换是有 TaskManager 负责的,TaskManager 的网络组件首先从缓冲buffer中收集records,然后再发送。Records 并不是一个一个被发送的,而是积累一个批次再发送,batch 技术可以更加高效的利用网络资源。本道面试题考察的其实就是一句话:Flink的开发者认为批处理是流处理的一种特殊情况。可以根据状态来提交预提交的数据,也可删除预提交的数据。正式提交(commit)将之前写完的临时文件放入目标目录下。转载 2023-04-29 09:00:00 · 59 阅读 · 0 评论 -
面试题百日百刷-flink篇(四)
flink支持窗口的两个重要属性(size和interval)如果size=interval,那么就会形成tumbling-window(无重叠数据) 如果size>interval,那么就会形成sliding-window(有重。time-sliding-window 有重叠数据的时间窗口,设置方式举例:timeWindow(Time.seconds(5), Time.seconds(3))Flink 中的时间和其他流式计算系统的时间一样分为三类:事件时间,摄入时间,处理时间三种。转载 2023-04-28 09:00:00 · 61 阅读 · 0 评论 -
面试题百日百刷-flink篇(三)
在Flink架构角色中我们提到,TaskManager是实际负责执行计算的Worker,TaskManager 是一个 JVM 进程,并会以独立的线程来执行一个task或多个subtask。简单的说,TaskManager会将自己节点上管理的资源分为不同的Slot:固定大小的资源子集。Flink 最常用的常用算子包括:Map:DataStream → DataStream,输入一个参数产生一个参数,map的功能是对输入的参数进行转换操作。需要注意的优先级:算子层面>环境层面>客户端层面>系统层面。转载 2023-04-27 09:00:00 · 145 阅读 · 0 评论 -
面试题百日百刷-flink篇(二)
Client是Flink程序提交的客户端,当用户提交一个Flink程序时,会首先创建一个Client,该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群中处理,所以Client需要从用户提交的Flink程序配置中获取JobManager的地址,并建立到JobManager的连接,将Flink Job提交给JobManager。数据流(stream)就是一组永远不会停止的数据记录流,而转换(transformation)是将一个或多个流作为输入,并生成一个或多个输出流的操作。转载 2023-04-21 09:00:00 · 47 阅读 · 0 评论 -
面试题百日百刷-flink篇(一)
API层:API 层主要实现了面向流(Stream)处理和批(Batch)处理API,其中面向流处理对应DataStream API,面向批处理对应DataSet API,后续版本,Flink有计划将DataStream和DataSet API进行统一。Libraries层:该层称为Flink应用框架层,根据API层的划分,在API层之上构建的满足特定应用的实现计算框架,也分别对应于面向流处理和面向批处理两类。Flink 支持了流处理程序在时间上的三个定义:处理时间、事件时间、注入时间。转载 2023-04-20 09:00:00 · 47 阅读 · 0 评论 -
面试题百日百刷-kafka篇(四)
Kafka还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩压缩的好处就是减少传输的数据量,减轻对网络传输的压力Producer压缩之后,在Consumer需进行解压,虽然增加了CPU的工作,但在对大数据处理上,瓶颈在网络上而不是CPU,所以这个成本很值得。Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失。2.Kafka的ISR。转载 2023-04-18 09:00:00 · 36 阅读 · 0 评论 -
面试题百日百刷-kafka篇(三)
对于Kafka而言,pull模式更合适,它可简化broker的设计,consumer可自主控制消费消息的速率,同时consumer可以自己控制消费方式——即可批量消费也可逐条消费,同时还能选择不同的提交方式从而实现不同的传输语义。Kafka只能保证一个partition中的消息被某个consumer消费时是顺序的,事实上,从Topic角度来说,当有多个partition时,消息仍然不是全局有序的。acks=0的时候,使用异步模式的时候,该模式下kafka无法保证消息,有可能会丢。处理完数据之后手动提交。转载 2023-04-14 09:00:00 · 44 阅读 · 0 评论 -
面试题百日百刷-kafka篇(二)
何能从Kafka得到准确的信息如何减少ISR中的扰动broker什么时候离开ISRKafka为什么需要复制Kafka有可能在生产后发生消息偏移吗说明Kafka 的消息投递保证(delivery guarantee)机制以及如何实现转载 2023-04-13 09:00:00 · 50 阅读 · 0 评论 -
锁屏面试题百日百刷-kafk篇(一)
请说明什么是Apache Kafka传统的消息传递方法Kafka相对于传统的消息传递方法有什么优势Kafka服务器能接收到的最大信息是多少Kafka中的ZooKeeperKafka的用户如何消费信息提高远程用户的吞吐量转载 2023-04-12 09:00:00 · 55 阅读 · 0 评论 -
解释一下布隆过滤器原理
解释一下布隆过滤器原理如何实现HBase的二级索引Hbase的storeFile(compact)合并机制是什么Hbase的flush刷新机制如何解决hbase中数据热点问题转载 2023-04-11 09:00:00 · 68 阅读 · 0 评论 -
HBase在进行模型设计时重点在什么地方?一张表中定义多少个Column Family最合适?为什么?
HBase在进行模型设计时重点在什么地方?一张表中定义多少个Column Family最合适?为什么?Hbase中的memstore提高HBase客户端的读写性能HBase集群安装Hbase是怎么进行预分区转载 2023-04-10 09:00:00 · 56 阅读 · 0 评论 -
面试题百日百刷-HBase中HTable API有没有线程安全问题,在程序是单例还是多例?
HBase内部机制是什么HTable API有没有线程安全问题,在程序是单例还是多例HBase有没有并发问题转载 2023-04-09 09:00:00 · 73 阅读 · 0 评论 -
面试题百日百刷-HBase HRegionServer宕机如何处理
HBase的导入导出方式Region如何预建分区HRegionServer宕机如何处理HBase读写流程转载 2023-04-08 09:00:00 · 84 阅读 · 0 评论 -
面试题百日百刷-HBase中RowFilter和BloomFilter原理
HBase如何给web前端提供接口来访问请列举几个HBase优化方法HBase中RowFilter和BloomFilter原理转载 2023-04-07 09:00:00 · 106 阅读 · 0 评论 -
每天百亿数据存入HBase,如何保证数据的存储正确和在规定时间里全部录入完毕,不残留数据?
请详细描述HBase中一个cell的结构以start-hbase.sh为起点,HBase启动的流程是什么HBase中compact用途是什么百亿数据存入HBase转载 2023-04-06 09:00:00 · 296 阅读 · 0 评论 -
面试题百日百刷-描述HBase的rowKey的设计原则?
描述HBase的rowKey的设计原则描述HBase中scan和get的功能以及实现的异同描述HBase中scan对象的setCache和setBatch方法的使用转载 2023-04-05 09:00:00 · 62 阅读 · 0 评论 -
面试题百日百刷-HBase和Hive的区别是什么
HBase的特点是什么HBase和Hive的区别HBase适用于怎样的情景转载 2023-04-04 09:00:00 · 103 阅读 · 0 评论 -
锁屏面试题百日百刷-Spark篇(二十一)
Spark RDD 和 MapReduce2的区别spark和Mapreduces谁快Spark sql又什么比hive快RDD的数据结构RDD算子里操作一个外部map比如往里面put数据,然后算子外再遍历mapSpark shuffle转载 2023-04-03 09:00:00 · 37 阅读 · 0 评论 -
锁屏面试题百日百刷-Spark篇(二十)
简要描述Spark写数据的流程Unified Memory Management内存管理模型Spark的动态内存占用机制序列化方法,并谈谈序列化有什么好处常见的数压缩方式转载 2023-04-02 09:00:00 · 49 阅读 · 0 评论 -
锁屏面试题百日百刷-Spark篇(十九)
spark中task有几种类型rangePartioner分区器特点如何使用Spark解决TopN问题窄依赖父RDDSpark中的shuffle和Hadoop的Shuffle区别spark.default.parallelism转载 2023-04-01 09:00:00 · 44 阅读 · 0 评论 -
锁屏面试题百日百刷-Spark篇(十八)
序列化Spark累加器有哪些特点spark hashParitioner的弊端parition和block有什么关联关系RangePartitioner分区的原理Spark如何自定义partitioner分区器转载 2023-03-31 09:00:00 · 48 阅读 · 0 评论 -
锁屏面试题百日百刷-Spark篇(十七)
rdd有几种操作类型collect功能Spark程序执行,有时候默认为什么会产生很多task,怎么修改默认task执行个数Spark Application在没有获得足够的资源,job就开始执行了,可能会导致什么问题Spark为什么要持久化转载 2023-03-30 09:00:00 · 42 阅读 · 0 评论 -
锁屏面试题百日百刷-Spark篇(十六)
cache后面能不能接其他算子reduceByKey是不是actionSpark有哪些聚合类的算子Spark中的数据倾斜问题你有什么好的方案Spark的数据本地性Spark并行度RDD创建有哪几种方式转载 2023-03-29 09:00:00 · 44 阅读 · 0 评论