大数据技术之高频面试题.docx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 技术 高频 试题
- 资源描述:
-
目录 第1章面试说明9 1.1 面试过程最关键的是什么? 9 1.2 面试时该怎么说? 91)语言表达清楚9 2)所述内容不犯错9 1.3 面试技巧9六个常见问题9 1.3.1 两个考前须知10自我介绍(控制在4分半以内,不超过5分钟)10 第2章手写代码10 2.1 冒泡排序10 2.2 二分查找11 2.3 快排13 2.4 归并14 2.5 二叉树之Scala实现16二叉树概念16 2.5.1 二叉树的特点16二叉树的Scala代码实现16 2.6 手写 Spark-WordCount20 2.7 手写Spark程序21第3章工程架构21 3.1 数仓概念21 3.2 系统数据流程设计21 3.3 框架版本选型21 3.4 服务器选型211)机器本钱考虑: 22 2)运维本钱考虑:22 3.5 集群规模22 3.6 人员配置参考22整体架构。22 3.6.1 你们部门的职级等级,晋升规那么22人员配置参考23 第4章工程涉及技术23 第1章面试说明1.1 1.1 面试过程最关键的是什么? 1)不是你说了什么,而是你怎么说2)大大方方的聊,放松 1.2 面试时该怎么说? 1)语言表达清楚(1)思维逻辑清晰,表达流畅 (2) 一二三层次表达2)所述内容不犯错 (1)不说前东家或者自己的坏话(2)往自己擅长的方面说 (3)实质,对考官来说,内容听过,就是自我肯定;没听过,那就是个学习的过程。 1.3 面试技巧六个常见问题 1)你的优点是什么? 大胆的说出自己各个方面的优势和特长2)你的缺点是什么? 不要谈自己真实问题;用“缺点”衬托自己的优点3)你的离职原因是什么? > 不说前东家坏话,哪怕被伤过 > 合情合理合法 > 不要说超过1个以上的原因4)您对薪资的期望是多少? > 非终面不深谈薪资 > 只说区间,不说具体数字 > 底线是不低于当前薪资 > 非要具体数字,区间取中间值,或者当前薪资的+20% finalize: Object类中定义的方法,Java中允许使用finalize。方法在垃圾收集器将对象 从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用 的,通过重写finalize。方法可以整理系统资源或者执行其他清理工作。 10.7 二二和 Equals 区另lj 二二:如果比拟的是基本数据类型,那么比拟的是变量的值如果比拟的是引用数据类型,那么比拟的是地址值(两个对象是否指向同一块内 存) equals:如果没重写equals方法比拟的是两个对象的地址值。 如果重写了 equals方法后我们往往比拟的是对象中的属性的内容 equals方法是从Object类中继承的,默认的实现就是使用二public boolean equals(0bject obj) { return (this == obj) ;| }第11章Redis (答案精简) n.i缓存穿透、缓存雪崩、缓存击穿1)缓存穿透是指查询一个一定不存在的数据。由于缓存命不中时会去查询数据库,查不到 数据那么不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿 透。 解决方案: ① 是将空对象也缓存起来,并给它设置一个很短的过期时间,最长不超过5分钟 ② 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定 不存在的数据会被这个bitmap拦截掉,从而防止了对底层存储系统的查询压力2)如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上, 就会造成缓存雪崩。 解决方案: 尽量让失效的时间点不分布在同一个时间点3)缓存击穿,是指一个key非常热点,在不停的扛着大并发,当这个key在失效的瞬间, 持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。 解决方案: 可以设置key永不过期99 11.2哨兵模式 主从复制中反客为主的自动版,如果主机Down掉,哨兵会从从机中选择一台作为主 机,并将它设置为其他从机的主机,而且如果原来的主机再次启动的话也会成为从机。 11.3 数据类型 string 字符串 list 可以重复的集合 set 不口J以重复的集合 hash 类似于 Map<String,String> zset(sorted set) 带分数的set 11.4 持久化RDB持久化: ①在指定的时间间隔内持久化 ② 服务shutdown会自动持久化 ③ 输入bgsave也会持久化) AOF :以日志形式记录每个更新操作 Redis重新启动时读取这个文件,重新执行新建、修改数据的命令恢复数据。 保存策略: 推荐(并且也是默认)的措施为每秒持久化一次,这种策略可以兼顾速度和平安性。 缺点: 1比起RDB占用更多的磁盘空间 2恢复备份速度要慢 3每次读写都同步的话,有一定的性能压力 4存在个别Bug,造成恢复不能选择策略: 官方推荐: 10() 如果对数据不敏感,可以选单独用RDB;不建议单独用AOF,因为可能出现Bug;如 果只是做纯内存缓存,可以都不用悲观锁 执行操作前假设当前的操作肯定(或有很大几率)会被打断(悲观)。基于这个假 设,我们在做操作前就会把相关资源锁定,不允许自己执行期间有其他操作干扰。 11.5 乐观锁 执行操作前假设当前操作不会被打断(乐观)。基于这个假设,我们在做操作前不会 锁定资源,万一发生了其他操作的干扰,那么本次操作将被放弃。Redis使用的就是乐观 锁。 第 12 章 MySqlMylSAM 与 InnoDB 的区别 比照项 MylSAM InnoDB 外键 不支持 支持 事务 不支持 支持 行表锁 表锁,即使操作一条记录也会 锁住整个表,不适合高并发的 操作 行锁,操作时只锁某一行,不对 其它行有影响, 适合高并发的操作 缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数 据,对内存要求较高,而且内存 大小对性能有决定性的影响 索引 数据结构:B+Tree 一般来说能够到达range就可以算是优化了口诀(两个法那么加6种索引失效的情况) 全值匹配我最爱,最左前缀要遵守; 带头大哥不能死,中间兄弟不能断;101 索引列上少计算,范围之后全失效; LIKE百分写最右,覆盖索引不写啊 不等空值还有OR,索引影响要注意; VAR引号不可丢,SQL优化有诀窍。 12.1 b-tree 和 b+tree 的区别B-树的关键字和记录是放在一起的,叶子节点可以看作外部节点,不包含任何信息;B+ 树的非叶子节点中只有关键字和指向下一个节点的索引,记录只放在叶子节点中。 2)在B-树中,越靠近根节点的记录查找时间越快,只要找到关键字即可确定记录的存 在;而B+树中每个记录的查找时间基本是一样的,都需要从根节点走到叶子节点,而且在 叶子节点中还要再比拟关键字。 12.2 redis是单线程的,为什么那么快1)完全基于内存,绝大局部请求是纯粹的内存操作,非常快速。 2)数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的3)采用单线程,防止了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致 的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出 现死锁而导致的性能消耗 4)使用多路I/O复用模型,非阻塞105)使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样, Redis直接自己构建了 VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间 去移动和请求 12.3 MySQL的事务一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能 停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没 有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成 的基本单位2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏。比 如A向B转账,不可能A扣了钱,B却没收到。 102 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼 此没有任何干扰。比方A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这 张卡转账。 4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不 能回滚。 二、事务的并发问题1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数 据 2、不可重复读:事务A屡次读取同一数据,事务B在事务A屡次读取的过程中,对数据 作了更新并提交,导致事务A屡次读取同一数据时,结果不一致3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统 管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一 条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。 小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删 除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表三、MySQL事务隔离级别 事务隔离级别 脏读 不可重复读 幻读 读未提交 (read-uncommitted) 是 是 是 不可重复读(read-committed) 否 是 是 可重复读(repeatable-read) 否 否 是 串行化(serializable) 否 否 否 12.6常见面试sql 1.用一条SQL语句查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三语文81张三数学75 李四语文76李四数学90 103 王五 王五 81 100 语文 数学 王五 英语 90A: select distinct name from table where name not in (select distinct name from table where fenshu<=80) B: select name from table group by name having min (fenshu)>802.学生表如下: 自动编号 学号 姓名 课程编号 课程名称 分数 1 2005001 张三 0001 数学 69 2 2005002 李四 0001 数学 89 3 2005001 张三 0001 数学 69 删除除了自动编号不同,其他都相同的学生冗余信息A: delete tablename where 自 动编号 not in (select min (自动编号)from tablename group by学号,姓名,课程编号,课程名称,分数) 3. 一个叫team的表,里面只有一个字段name, 一共有4条纪录,分别是 a,b,c,d,对应四个球队,现在四个球队进行比赛,用一条sql语句显示所有可 能的比赛组合. 答:select a. name, b. name from team a, team b where a. name < b. name4.面试题:怎么把这样一个 year month amount 1991 1 1. 1 1991 2 1.2 1991 3 1.3 1991 4 1.4 1992 1 2. 1 1992 2 2.2 1992 3 2.3 1992 4 2.4 104 查成这样一个结果year ml m2 m3 m4 1991 1. 1 1.2 1.3 1.41992 2. 1 2. 2 2. 3 2. 4 答案select year, (select amount from (select amount from (select amount from (select amount from select year, (select amount from (select amount from (select amount from (select amount from aaa m where month=l aaa m where month=2 aaa m where month=3 aaa m where month=4 and m. year=aaa. year) as ml, and m. year=aaa. year) as m2, and m. year=aaa. year) as m3, and m. year=aaa. year) as m4 from aaa group by year✓TsxTx✓Ts ✓Tx xrx x7x xrs xTs^Ts xtv xTx xTsxTx✓Ts ✓Tx xrx x7x xrx^Ts #7%^7% xt%xtx ✓Ts ✓?% ^Ts xrx ^7^ xTx ✓Tx zt%^7x xTx 5 .说明:复制表(只复制结构,源表名:a新表名:b)SQL: select * SQL: select * into b from a where K>1 (wherel=l,拷贝表结构和数据内容) ORACLE:create table b As Select * from a where 1=2 _<> (不等于)(SQL Server Compact) 比拟两个表达式。当使用此运算符比拟非空表达式时,如果左操作数不等于右 操作数,那么结果为TRUEo否那么,结果为FALSEo ]. 原表: courseid coursename score1 java 70 2 oracle 903 xml 40 4 jsp 305 servlet 80 105 为了便于阅读,查询此表后的结果显式如下(及格分数为60): courseid coursename score markjava 70 pass 1 oracle 90 passxml 40 fail 2 jsp 30 failservlet 80 pass 写出此查询语句select courseid, coursename , score , if (score>=60, "pass", 〃fail〃) as mark from course 7 .表名: 购物信息 购物人 商品名称 数量 A 甲 2 B 乙 4 C 丙 1 A T 2 B 丙 5 给出所有购入商品为两种或两种以上的购物人记录 答:select * from购物信息where购物人in (select购物人from购物信 息 group by 购物人 having count (*) >= 2);8. info 表date result 2005-05-09 win2005-05-09 lose 2005-05-09 lose2005-05-09 lose 2005-05-10 win2005-05-10 lose 2005-05-10 lose106 如果要生成以下结果,该如何写sql语句? win lose2005-05-09 22 2005-05-10 12答案: (1) select date, sum(case when result = 〃win〃 then 1 else 0 end) as 〃win〃, sum(case when result 二 〃lose〃 then 1 else 0 end) as 〃lose〃 from info group by date;select a. date, a. result as win, b. result as lose from (select date, count(result) as result from info where result 二 〃win〃 group by date) as a join (select date, count(result) as result from info where result = 〃lose〃 group by date) as b on a. date = b. date;107 第13章JVM13.1 JVM内存分哪几个区,每个区的作用是什么? Class files类装载器子系统 Class loader 类装载器子系统 Class loader 运行时数据区(Runtime Data Area)方法区 Method Area 方法区 Method Area Java 栈 Java stack 本法栈 Native Method Stack 堆 heap 本地方法接口 Native Interface 本地方法库 程序计数器 Program Counter Register执行引擎 Execution Engine java虚拟机主要分为以下几个区: 1)方法区: a.有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里 进行的GC主要是对方法区里的常量池和对类型的卸载b.方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后 的代码等数据。 c.该区域是被线程共享的。 d.方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池 具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也会存在这个常 量池中。 2)虚拟机栈: a.虚拟机栈也就是我们平常所称的栈内存,它为java方法服务,每个方法在执行的时候都 会创立一个栈帧,用于存储局部变量表、操作数栈、动态链接和方法出口等信息。 108 5)您还有什么想问的问题? > 这是表达个人眼界和层次的问题 > 问题本身不在于面试官想得到什么样的答案,而在于你跟别的应聘者的比照 > 标准答案: 公司希望我入职后的3-6个月内,给公司解决什么样的问题公司(或者对这个部门)未来的战略规划是什么样子的? 以你现在对我的了解,您觉得我需要多长时间融入公司? 6)您最快多长时间能入职? 一周左右,如果公司需要,可以适当提前两个考前须知 1)职业化的语言2)职业化的形象 1.3.2 自我介绍(控制在4分半以内,不超过5分钟)1)个人基本信息 2)工作履历 时间、公司名称、任职岗位、主要工作内容、工作业绩、离职原因3)深度沟通(也叫压力面试) 刨根问底下沉式追问(注意是下沉式,而不是发散式的) 基本技巧:往自己熟悉的方向说第2章手写代码 2.1 冒泡排序/ ★ * *冒泡排序 时间复杂度0(n人2)空间复杂度0(1) */public class BubbleSort { public static void bubbleSort(int[] data) {System. out .printIn ("开始排序”); int arrayLength = data.length;10 b.虚拟机栈是线程私有的,它的生命周期与线程相同。 c.局部变量表里存储的是基本数据类型、returnAddress类型(指向一条字节码指令的地址) 和对象引用,这个对象引用有可能是指向对象起始地址的一个指针,也有可能是代表对 象的句柄或者与对象相关联的位置。局部变量所需的内存空间在编译器间确定d.操作数栈的作用主要用来存储运算结果以及运算的操作数,它不同于局部变量表通过索 引来访问,而是压栈和出栈的方式 e.每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用,持有这个引用是为了 支持方法调用过程中的动态连接.动态链接就是将常量池中的符号引用在运行期转化为 直接引用。 3)本地方法栈: 本地方法栈和虚拟机栈类似,只不过本地方法栈为Native方法服务。 4)堆: java堆是所有线程所共享的一块内存,在虚拟机启动时创立,几乎所有的对象实例都在这里 创立,因此该区域经常发生垃圾回收操作。 5)程序计数器: 内存空间小,字节码解释器工作时通过改变这个计数值可以选取下一条需要执行的字节码指 令,分支、循环、跳转、异常处理和线程恢复等功能都需要依赖这个计数器完成。该内存区 域是唯一一个java虚拟机规范没有规定任何00M情况的区域。 13.2 Java类加载过程? Java类加载需要经历一下几个过程: 1)加载加载时类加载的第一个过程,在这个阶段,将完成一下三件事情: a.通过一个类的全限定名获取该类的二进制流。 b.将该二进制流中的静态存储结构转化为方法去运行时数据结构。 C.在内存中生成该类的Class对象,作为该类的数据访问入口。 2)验证验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成 以下四钟验证: a.文件格式验证:验证字节流是否符合Class文件的规范,如主次版本号是否在当前虚拟 机范围内,常量池中的常量是否有不被支持的类型. b・元数据验证:对字节码描述的信息进行语义分析,如这个类是否有父类,是否集成了不 被继承的类等。 c.字节码验证:是整个验证过程中最复杂的一个阶段,通过验证数据流和控制流的分析,109 确定程序语义是否正确,主要针对方法体的验证。如:方法中的类型转换是否正确,跳 转指令是否正确等。 d.符号引用验证:这个动作在后面的解析过程中发生,主要是为了确保解析动作能正确执 行。 e.准备准备阶段是为类的静态变量分配内存并将其初始化为默认值,这些内存都将在方法区中进行 分配。准备阶段不分配类中的实例变量的内存,实例变量将会在对象实例化时随着对象一起 分配在Java堆中。 3)解析该阶段主要完成符号引用到直接引用的转换动作。解析动作并不一定在初始化动作完成之 前,也有可能在初始化之后。 4)初始化初始化时类加载的最后一步,前面的类加载过程,除了在加载阶段用户应用程序可以通过自 定义类加载器参与之外,其余动作完全由虚拟机主导和控制。到了初始化阶段,才真正开始 执行类中定义的Java程序代码。 13.3 java中垃圾提供的方法有哪些? 1)引用计数法应用于:微软的C0M/ActionScrip3/Python等 a)如果对象没有被引用,就会被回收,缺点:需要维护一个引用计算器2)复制算法 年轻代中使用的是Minor GC,这种GC算法采用的是复制算法(Copying) a)效率高,缺点:需要内存容量大,比拟耗内存 b)使用在占空间比拟小、刷新次数多的新生区3)标记清除老年代一般是由标记清除或者是标记清除与标记整理的混合实现 a)效率比拟低,会差生碎片。 4)标记压缩老年代一般是由标记清除或者是标记清除与标记整理的混合实现 a)效率低速度慢,需要移动对象,但不会产生碎片。 5)标记清除压缩标记清除-标记压缩的集合,屡次GC后才Compact a)使用于占空间大刷新次数少的养老区,是3 4的集合体如何判断一个对象是否存活?(或者GC对象的判定方法) 判断一个对象是否存活有两种方法: 1)引用计数法110 2)可达性算法(引用链法)什么是类加载器,类加载器有哪些? 实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。 主要有一下四种类加载器: 1)启动类加载器(Bootstrap ClassLoader)用来加载java核心类库,无法被java程序直接引 用。 2)扩展类加载器(extensions class loader):它用来加载Java的扩展库。Java虚拟机的实现 会提供一个扩展库目录。该类加载器在此目录里面查找并加载Java类。 3)系统类加载器(system class loader)也叫应用类加载器:它根据Java应用的类路径 (CLASSPATH)来加载Java类。一般来说,Java应用的类都是由它来完成加载的。 可以通过 ClassLoader.getSystemClassLoader()来获取它。 4)用户自定义类加载器,通过继承类的方式实现。 13.6简述Java内存分配与 收策略以及Minor GC和Major GC (full GC)内存分配: 1)栈区:栈分为java虚拟机栈和本地方法栈2)堆区:堆被所有线程共享区域,在虚拟机启动时创立,唯一目的存放对象实例。堆区是 gc的主要区域,通常情况下分为两个区块年轻代和年老代。更细一点年轻代又分为Eden 区,主要放新创立对象,From survivor和To survivor保存gc后幸存下的对象,默认 情况下各自占比8:l:k 3)方法区:被所有线程共享区域,用于存放已被虚拟机加载的类信息,常量,静态变量等 数据。被Java虚拟机描述为堆的一个逻辑局部。习惯是也叫它永久代(permanment generation)4)程序计数器:当前线程所执行的行号指示器。通过改变计数器的值来确定下一条指令, 比方循环,分支,跳转,异常处理,线程恢复等都是依赖计数器来完成。线程私有的。 回收策略以及Minor GC和Major GC: 1)对象优先在堆的Eden区分配。 2)大对象直接进入老年代。 3)长期存活的对象将直接进入老年代。 当Eden区没有足够的空间进行分配时,虚拟机会执行一次Minor GC.Minor GC通常发生在 新生代的Eden区,在这个区的对象生存期短,往往发生GC的频率较高,回收速度比拟111 快;Full Gc/Major GC发生在老年代,一般情况下,触发老年代GC的时候不会触发Minor GC,但是通过配置,可以在Full GC之前进行一次Minor GC这样可以加快老年代的回收速 度。 第14章JUCSynchronized 与 Lock 的区另lj 1) Synchronized能实现的功能Lock都可以实现,而且Lock比Synchronized更好用,更灵 活。 2) Synchronized可以自动上锁和解锁;Lock需要手动上锁和解锁Runnable 和 Callable 的区别 1) Runnable接口中的方法没有返回值;Callable接口中的方法有返回值Runnable接口中的方法没有抛出异常;Callable接口中的方法抛出了异常 2) Runnable接口中的落地方法是call方法;Callable接口中的落地方法是run方法什么是分布式锁 当在分布式模型下,数据只有一份(或有限制),此时需要利用锁的技术控制某一时刻 修改数据的进程数。分布式锁可以将标记存在内存,只是该内存不是某个进程分配的内存而 是公共内存,如Redis,通过set (key,value,nx,px,timeout)方法添加分布式锁。 14.1 什么是分布式事务 分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于 不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这 些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要 么全部成功,要么全部失败。 第15章模拟考试选择题 14.1.1 HDFS1,下面哪个程序负责HDFS数据存储? a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktrackerHDfS中的block默认保存几份? a) 3份b)2份c) 1份 d)不确定以下哪个程序通常与NameNode在一个节点启动? 112 a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker 解析: JobTracker 对应于 NameNode TaskTracker 对应于 DataNodeHDFS 默认 Block Size a)32MB b)64MB c)128MB 注:旧版本是64MBClient端上传文件的时候以下哪项正确 a)数据经过NameNode传递给DataNode b)Client端将文件切分为Block,依次上传 c)Client只上传数据到一台DataNode,然后由NameNode负责Block复制工作 分析: Client向NameNode发起文件写入的请求。 NameNode根据文件大小和文件块配置情况,返回给Client它所管理局部DataNode 的信息。 Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个 DataNode 块中。 2. 下面与HDFS类似的框架是? C A NTFS B FAT32 C GFS D EXT3集群管理 L以下哪项通常是集群的最主要瓶颈C a)CPU b)网络c)磁盘10 d)内存.关于SecondaryNameNode哪项是正确的? C a)它是NameNode的热备 b)它对内存没有要求 c)它的目的是帮助NameNode合并编辑日志,减少NameNode启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点.配置机架感知的下面哪项正确C a)如果一个机架出问题,不会影响数据读写113 b)写入数据的时候会写到不同机架的DataNode中 c)MapReduce会根据机架获取离自己比拟近的网络数据4,以下哪个是Hadoop运行的模式ABC a)单机版b)伪分布式c)分布式5. Cloudera提供哪几种安装CDH的方法A a)Cloudera manager b)Tarball c)Yum d)Rpm14.1.3 Zookeeper 基础 1.下面与Zookeeper类似的框架是? D AProtobuf B Java C Kafka D Chubby14.2判断题 14.2.1 集群管理Ganglia不仅可以进行监控,也可以进行告警。(正确) 1. Nagios不可以监控Hadoop集群,因为它不提供Hadoop支持。(错误)如果NameNode意外终止,SecondaryNameNode会接替它使集群继续工作。(错误) 2. Cloudera CDH是需要付费使用的。(错误)NameNode负责管理metadata, client端每次读写请求,它都会从磁盘中读取或那么会写 入metadata信息并反应client端。(错误) 3. DataNode通过长连接与NameNode保持通信。错误Hadoop自身具有严格的权限管理和平安措施保障集群正常运行。(错误) 4. Slave节点要存储数据,所以它的磁盘越大越好。(错误)hadoop dfsadmin - report命令用于检测HDFS损坏块。(错误) 5. Hadoop默认调度器策略为FIFO (错误)集群内每个节点都应该配RAID,这样防止单磁盘损坏,影响整个节点运行。(错误) 6. Hadoop环境变量中的HADOOP.HEAPSIZE用于设置所有Hadoop守护线程的内存。它 默认是200 GBo (错误)114 7. DataNode首次加入cluster的时候,如果log中报告不兼容文件版本,那需要NameNode 执行一Hadoopnamenode -format II 操作格式化磁盘。(错误) 14.2.2 HDFSBlock Size是不可以修改的。(错误) 1. Hadoop支持数据的随机读写。(错)3•因为HDFS有多个副本,所以NameNode是不存在单点问题的。(错误) 14.2.3 MapReduce1. Hadoop是Java开发的,所以MapReduce只支持Java语言编写。(错误) 2 .每个map就是一个线程。(错误). Mapreduce 的 input split 就是一个 blocko (错误) 115 for (int i = 0; i < arrayLength - 1; i++) {boolean flag = false; for (int j = 0; j < arrayLength - 1 - i; j+ + ) {if(data[j] > data[j + 1]){ int temp = data[j + 1];data [ j + 1] = data[j]; data[j] = temp;flag = true; )) System.out.printin(java.util.Arrays.toString(data));if (!flag) break; ) ) public static void main(String[] args) {int[] data = { 9, -16, 21, 23, -30, -49, 21, 30, 30 ); System.out.printIn (" 排 序 之 前: \n"+j ava.util.Arrays.toString(data)); bubbleSort(data);System. out .printIn (n排 序 之 后: \nn + java.util.Arrays.toString(data)); )) 二分查找全流程 f^aikeba 125810 25 35 64 Ie 代midright 10>8,向左遍历,mid赋值给left,杳找范围减半 [00 left mid right 10<25,向右遍历,mid赋值给right,查找范围再次减半 left mid right 10=10,找到,返回mid 2.2二分查找 find Vai 二分查找前提:数组有序 二分查找的思路.先找到中间值 1 .然后将中间值和查找值比拟相等,找出 1.1 中间值 > 查找值,向左进行递归查找中间值 < 杳找值,向右进行递归杳找 如果存在值,就返回对应的卜标,否那么返回-1图4-二分查找核心思路 11 实现代码: / * * *二分查找 时间复杂度0(【og2n);空间复杂度0(1) */defbinarySearch(arr:Array[Int]r left:Int,right:Int,findVal:Int): Int={ if (left〉right) {//递归退出条件,找不到,返回-1 -1 val midlndex = (left+right)/2if (findVal < arr (mid工nd㊀x) ){//向左递归查找 binarySearch(arr,left,midlndex,findVal) }else if (findVal > arr (mid工ndex) ) {//向右递归查找 binarySearch(arrf midIndex,right,findVal)}else{//查找至lj,返回下标 midIndex ) )拓展需求:当一个有序数组中,有多个相同的数值时,如何将所有的数值都查找到。 代码实现如下: /大 {1,8, 10, 89, 1000, 1000, 1234 }当一个有序数组中,有多个相同的数值时,如 何将所有的数值都查找到,比方这里的1000. //分析 1 .返回的结果是一个可变数组ArrayBuff㊀r 2 .在找到结果时,向左边扫描,向右边扫描[条件] 3 .找到结果后,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




大数据技术之高频面试题.docx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4516508.html