大数据技术之高频面试题.docx
《大数据技术之高频面试题.docx》由会员分享,可在线阅读,更多相关《大数据技术之高频面试题.docx(115页珍藏版)》请在咨信网上搜索。
1、目录第1章面试说明91.1 面试过程最关键的是什么? 91.2 面试时该怎么说? 91)语言表达清楚92)所述内容不犯错91.3 面试技巧9六个常见问题91.3.1 两个考前须知10自我介绍(控制在4分半以内,不超过5分钟)10第2章手写代码102.1 冒泡排序102.2 二分查找112.3 快排132.4 归并142.5 二叉树之Scala实现16二叉树概念162.5.1 二叉树的特点16二叉树的Scala代码实现162.6 手写 Spark-WordCount202.7 手写Spark程序21第3章工程架构213.1 数仓概念213.2 系统数据流程设计213.3 框架版本选型213.4
2、服务器选型211)机器本钱考虑: 222)运维本钱考虑:223.5 集群规模223.6 人员配置参考22整体架构。223.6.1 你们部门的职级等级,晋升规那么22人员配置参考23第4章工程涉及技术23第1章面试说明1.11.1面试过程最关键的是什么?1)不是你说了什么,而是你怎么说2)大大方方的聊,放松1.2 面试时该怎么说?1)语言表达清楚(1)思维逻辑清晰,表达流畅(2) 一二三层次表达2)所述内容不犯错(1)不说前东家或者自己的坏话(2)往自己擅长的方面说(3)实质,对考官来说,内容听过,就是自我肯定;没听过,那就是个学习的过程。1.3 面试技巧六个常见问题1)你的优点是什么?大胆的说
3、出自己各个方面的优势和特长2)你的缺点是什么?不要谈自己真实问题;用“缺点”衬托自己的优点3)你的离职原因是什么? 不说前东家坏话,哪怕被伤过 合情合理合法 不要说超过1个以上的原因4)您对薪资的期望是多少? 非终面不深谈薪资 只说区间,不说具体数字 底线是不低于当前薪资 非要具体数字,区间取中间值,或者当前薪资的+20%finalize: Object类中定义的方法,Java中允许使用finalize。方法在垃圾收集器将对象 从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用 的,通过重写finalize。方法可以整理系统资源或者执行其他清理工作。10.7 二二和
4、Equals 区另lj二二:如果比拟的是基本数据类型,那么比拟的是变量的值如果比拟的是引用数据类型,那么比拟的是地址值(两个对象是否指向同一块内存)equals:如果没重写equals方法比拟的是两个对象的地址值。如果重写了 equals方法后我们往往比拟的是对象中的属性的内容equals方法是从Object类中继承的,默认的实现就是使用二public boolean equals(0bject obj) return (this = obj) ;|第11章Redis (答案精简)n.i缓存穿透、缓存雪崩、缓存击穿1)缓存穿透是指查询一个一定不存在的数据。由于缓存命不中时会去查询数据库,查不到
5、 数据那么不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿 透。解决方案: 是将空对象也缓存起来,并给它设置一个很短的过期时间,最长不超过5分钟 采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定 不存在的数据会被这个bitmap拦截掉,从而防止了对底层存储系统的查询压力2)如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上, 就会造成缓存雪崩。解决方案:尽量让失效的时间点不分布在同一个时间点3)缓存击穿,是指一个key非常热点,在不停的扛着大并发,当这个key在失效的瞬间, 持续的大并发就穿破缓存,直接请求数据库,
6、就像在一个屏障上凿开了一个洞。解决方案:可以设置key永不过期9911.2哨兵模式主从复制中反客为主的自动版,如果主机Down掉,哨兵会从从机中选择一台作为主 机,并将它设置为其他从机的主机,而且如果原来的主机再次启动的话也会成为从机。11.3 数据类型string字符串list可以重复的集合set不口J以重复的集合hash类似于 Mapzset(sorted set)带分数的set11.4 持久化RDB持久化:在指定的时间间隔内持久化 服务shutdown会自动持久化 输入bgsave也会持久化) AOF :以日志形式记录每个更新操作Redis重新启动时读取这个文件,重新执行新建、修改数据的
7、命令恢复数据。保存策略:推荐(并且也是默认)的措施为每秒持久化一次,这种策略可以兼顾速度和平安性。缺点:1比起RDB占用更多的磁盘空间2恢复备份速度要慢3每次读写都同步的话,有一定的性能压力4存在个别Bug,造成恢复不能选择策略:官方推荐:10()如果对数据不敏感,可以选单独用RDB;不建议单独用AOF,因为可能出现Bug;如 果只是做纯内存缓存,可以都不用悲观锁执行操作前假设当前的操作肯定(或有很大几率)会被打断(悲观)。基于这个假 设,我们在做操作前就会把相关资源锁定,不允许自己执行期间有其他操作干扰。11.5 乐观锁执行操作前假设当前操作不会被打断(乐观)。基于这个假设,我们在做操作前不
8、会 锁定资源,万一发生了其他操作的干扰,那么本次操作将被放弃。Redis使用的就是乐观 锁。第 12 章 MySqlMylSAM 与 InnoDB 的区别比照项MylSAMInnoDB外键不支持支持事务不支持支持行表锁表锁,即使操作一条记录也会 锁住整个表,不适合高并发的 操作行锁,操作时只锁某一行,不对 其它行有影响,适合高并发的操作缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数 据,对内存要求较高,而且内存 大小对性能有决定性的影响索引数据结构:B+Tree一般来说能够到达range就可以算是优化了口诀(两个法那么加6种索引失效的情况)全值匹配我最爱,最左前缀要遵守;带头大哥不能
9、死,中间兄弟不能断;101索引列上少计算,范围之后全失效;LIKE百分写最右,覆盖索引不写啊不等空值还有OR,索引影响要注意;VAR引号不可丢,SQL优化有诀窍。12.1 b-tree 和 b+tree 的区别B-树的关键字和记录是放在一起的,叶子节点可以看作外部节点,不包含任何信息;B+ 树的非叶子节点中只有关键字和指向下一个节点的索引,记录只放在叶子节点中。2)在B-树中,越靠近根节点的记录查找时间越快,只要找到关键字即可确定记录的存 在;而B+树中每个记录的查找时间基本是一样的,都需要从根节点走到叶子节点,而且在 叶子节点中还要再比拟关键字。12.2 redis是单线程的,为什么那么快1
10、)完全基于内存,绝大局部请求是纯粹的内存操作,非常快速。2)数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的3)采用单线程,防止了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致 的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出 现死锁而导致的性能消耗4)使用多路I/O复用模型,非阻塞105)使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样, Redis直接自己构建了 VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间 去移动和请求12.3 MySQL的事务一、事务的基本要素(ACID)1、原子性
11、(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能 停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没 有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成 的基本单位2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏。比 如A向B转账,不可能A扣了钱,B却没收到。102 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼 此没有任何干扰。比方A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这 张卡转账。4、持久性(Durabili
12、ty):事务完成后,事务对数据库的所有更新将被保存到数据库,不 能回滚。二、事务的并发问题1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数 据2、不可重复读:事务A屡次读取同一数据,事务B在事务A屡次读取的过程中,对数据 作了更新并提交,导致事务A屡次读取同一数据时,结果不一致3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统 管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一 条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增
13、或删 除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表三、MySQL事务隔离级别事务隔离级别脏读不可重复读幻读读未提交 (read-uncommitted)是是是不可重复读(read-committed)否是是可重复读(repeatable-read)否否是串行化(serializable)否否否12.6常见面试sql1.用一条SQL语句查询出每门课都大于80分的学生姓名 name kecheng fenshu张三语文81张三数学75李四语文76李四数学90103王五王五81100语文 数学 王五 英语 90A: select distinct name from table w
14、here name not in (select distinct name from table where fenshu802.学生表如下:自动编号学号姓名课程编号课程名称分数12005001张三0001数学6922005002李四0001数学8932005001张三0001数学69删除除了自动编号不同,其他都相同的学生冗余信息A: delete tablename where 自 动编号 not in (select min (自动编号)from tablename group by学号,姓名,课程编号,课程名称,分数)3. 一个叫team的表,里面只有一个字段name, 一共有4条纪录
15、,分别是 a,b,c,d,对应四个球队,现在四个球队进行比赛,用一条sql语句显示所有可 能的比赛组合.答:select a. name, b. name from team a, team b where a. name 1 (wherel=l,拷贝表结构和数据内容)ORACLE:createtable bAsSelect* from a where 1=2_ (不等于)(SQL Server Compact)比拟两个表达式。当使用此运算符比拟非空表达式时,如果左操作数不等于右 操作数,那么结果为TRUEo否那么,结果为FALSEo .原表:courseid coursename score
16、1 java 702 oracle 903 xml 404 jsp 305 servlet 80105为了便于阅读,查询此表后的结果显式如下(及格分数为60): courseid coursename score markjava 70 pass1 oracle 90 passxml 40 fail2 jsp 30 failservlet 80 pass写出此查询语句select courseid, coursename , score , if (score=60, pass, fail) as mark from course7 .表名:购物信息购物人商品名称数量A甲2B乙4C丙1AT2B
17、丙5给出所有购入商品为两种或两种以上的购物人记录答:select * from购物信息where购物人in (select购物人from购物信 息 group by 购物人 having count (*) = 2);8.info 表date result2005-05-09 win2005-05-09 lose2005-05-09 lose2005-05-09 lose2005-05-10 win2005-05-10 lose2005-05-10 lose106如果要生成以下结果,该如何写sql语句? win lose2005-05-09 222005-05-10 12答案:(1) sele
18、ct 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 losefrom(select date, count(result) as result from info where result 二 win group by date) as ajoin(select date,
19、 count(result) as result from info where result = lose group by date) as bon a. date = b. date;107第13章JVM13.1 JVM内存分哪几个区,每个区的作用是什么?Class files类装载器子系统Class loader类装载器子系统Class loader运行时数据区(Runtime Data Area)方法区Method Area方法区Method AreaJava 栈Java stack本法栈Native Method Stack堆heap本地方法接口Native Interface本地
20、方法库程序计数器Program Counter Register执行引擎ExecutionEnginejava虚拟机主要分为以下几个区:1)方法区:a.有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里 进行的GC主要是对方法区里的常量池和对类型的卸载b.方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后 的代码等数据。c.该区域是被线程共享的。d.方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池 具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也会存在这个常 量池中。2)虚拟机栈:a.虚拟机栈也就是
21、我们平常所称的栈内存,它为java方法服务,每个方法在执行的时候都 会创立一个栈帧,用于存储局部变量表、操作数栈、动态链接和方法出口等信息。1085)您还有什么想问的问题? 这是表达个人眼界和层次的问题 问题本身不在于面试官想得到什么样的答案,而在于你跟别的应聘者的比照 标准答案:公司希望我入职后的3-6个月内,给公司解决什么样的问题公司(或者对这个部门)未来的战略规划是什么样子的?以你现在对我的了解,您觉得我需要多长时间融入公司?6)您最快多长时间能入职?一周左右,如果公司需要,可以适当提前两个考前须知1)职业化的语言2)职业化的形象1.3.2 自我介绍(控制在4分半以内,不超过5分钟)1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 技术 高频 试题
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。