选择题(答案在最下面)
1.java属于下列哪种语言( )
A.机器语言 B.c语言 C.低级语言 D.高级语言
2.在Collections类中以下哪个方法用来使非线程安全的集合变成线程安全的( )
A.sort B.replaceAll C.synchronizedList D.以上都不正确
3.Thread类里面,等待该线程终止的方法是( )
A.getName() B.setName(true) C.join() D.run()
4.以下关于继承的叙述正确的是( )
A. 在Java中类只允许单一继承 B. 在Java中一个类只能实现一个接口 C. 在Java中一个类不能同时继承一个类和实现一个接口 D. 在Java中接口只允许单一继承
5.定义在方法内部的内部类称为( )
A.局部内部类 B.静态内部类 C.局部外部类 D.局部类
6.关于数组和List的说法错误的是( )
A. 都是用来存储数据的集合 B. 数组中的数据被连续的存放到内存中 C. 用length属性表示List中元素的数量 D. List和数组一样每个元素都有一个编号
7.以下关于servlet描述错误的是( )
A. 所有的JSP最终都会被转换成servlet; B. Servlet生命周期执行的方法有init(),service(),destroy()等
C. Servlet对象销毁的时候不调用destory() D. Servlet是用Java编写的Server端程序,它与协议无关
8.下面关于AOP的理解,错误的是( )
A. 面向纵向的开发
B. 面向横向的开发
C. AOP关注是面
D. 使用代理模式
9. NodeManager下面不是它的功能的是( )
A. 单个节点上的资源管理
B. 处理来自ResourceManager的命令
C. 处理来自ApplicationMaster的命令
D. 资源分配与调度(yarn)
10. 下面描述正确的是( )
A. NameNode是一个中心服务器,单一节点,负责管理文件系统的名字空间以及客户端对文件的访问.
B. DataNode负责元数据操作,很文件内容相关的数据流经过DataNode.
C. 副本存放在那些DataNode上有NameNode和DataNode协商控制.
D. DataNode全权管理数块的赋值,接受心跳信号和块状态报告
11. 关于hadoop中各组件之间通信描述正确的是( )
A. 各组件之间有自己的RPC通信协议
B. 各组件都直接采用TCP/IP协议通信
C. 各组件之间用心跳机制来通信
D. 各组件之间用机架感应策略来感知
12.下面对Shuffle过程描述的过程正确的是( )
A. shuffle过程包括map节点和reduce阶段
B. merge过程不可能有Combiner处理
C. 缓冲区默认大小值为128MB
D. 以上都不正确
13.下面那个描述HIVE不正确的是( )
A. Hive是基于Hadoop的一个数据仓库工具
B. 可以将结构化的数据文件映射为一张数据库表
C. 提供类SQL查询功能
D. HIVE处理数据是毫秒级,速度很快
14.下面选项哪个是设置hive的严格模式( )
A. hive.mapred.file=strict;
B. hive.mapred.mode=strict;
C. hive.mapred.mode=true;
D. hive.yarn.mode=true;
15. hbase 中HFile数据格式中的KeyValue数据格式中Value部分是( )
A. 拥有复杂结构的字符串
B. 字符串
C. 二进制数据
D. 压缩数据
16. 关于辅助构造器,以下说法不正确的是( )
A. 辅助构造器的名称为this。
B. 辅助构造器的定义要调用已定义的辅助构造器或主构造器。
C. 辅助构造器可以有任意多个
D. 辅助构造器必须要带参数
17. scala中使用( )跳出循环
A. continue
B. break
C. ruturn
D. 自动跳出
18. 下面哪个不是 RDD 的特点( )
A.可分区
B.可序列化
C.可修改
D.可持久化
19. spark Task 运行在下来哪里个选项中 Executor 上的工作单元( )
A. Driver program
B. spark master
C.worker node
D.Cluster manager
20. 关于广播变量,下面哪个是错误的( )
A.任何函数调用
B.是只读的
C.存储在各个节点
D.存储在磁盘或 HDFS
21.(多选)下列对事务的特性描述中,正确的是 ( )
A.原子性
B.一致性
C.有序性
D.无序性
22.(多选)CSS样式分如下几种( )
A.内嵌入样式
B.行内样式
C.外部样式
D.Xml样式
23.(多选)下面是Spring依赖注入方式的是( )
A. set方法注入
B. 构造方法的注入
C. get方法的注入
D. 静态工厂的方法注入
24.(多选)通过反射技术我们可以得到( )
A.构造器相关信息
B.属性相关信息
C.方法的修饰符、返回类型、名称、参数列表、返回值。
D.方法体内容
25.(多选)linux中使用tar归档命令,对其参数的正确描述是( )
A.-c :建立一个打包文件
B.-x :解开一个打包文件
C.-v :打包文件
D.-f :保持原文件的属性
26.(多选)关于Flume的 channel 说法正确的是( )
A.Memory Channel 是一个不稳定的隧道,其原因是由于它在内存中存储所有事件
B.File Channel 是一个持久化的隧道(Channel),它持久化所有的事件,并将其存储到磁盘中
C.File Channel 比 Memory Channel 效率高
D.Memory Channel 可以保证数据的完整性
27.(多选)将数字0插入到序列lst1的前面生成一个新的List,正确的是( )
A.val lst2 = 0 :: lst1
B.val lst3 = lst1.::(0)
C.val lst4 = 0 +: lst1
D.val lst5 = lst1.+:(0)
28. 下列那些选项导致内存溢出( )
A.map端
B.数据不平衡
C.shuffle后
D.standalone模式下资源分配不均匀
29. 如何解决数据倾斜( )
A.增大分区
B.增加前缀或后缀
C.减少分区
D.根据需要找key
30. scala Actor发送消息的方式有( )
A. ?! -> 发送同步消息,没有返回值
B. ! -> 发送异步消息,没有返回值
C. !? -> 发送同步消息,等待返回值
D. !! -> 发送异步消息,返回值是 Future[Any]
选择题:
1 2 3 4 5 6 7 8 9 10
D C C A A C C A D A
11 12 13 14 15 16 17 18 19 20
A A D B C D C C C D
21 22 23 24 25 26 27 28 29 30
AB ABC ABD ABC AB AB ABCD ABCD ABD BCD
二、简答题
1.String 和 StringBuffer 的区别?
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,
即包含多个字符的字符数据。这个 String 类提供了数值不可改
变的字符串。而这个 StringBuffer 类提供的字符串进行修改。当你知道字符数
据要改变的时候你就可以使用 StringBuffer。
2.线程的生命周期包括哪几个阶段,分别描述?
线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。
新建:就是刚使用new方法,new出来的线程;
就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;
运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;
阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调用notify或者notifyAll()方法。唤醒的线程不会立刻执行run方法,它们要再次等待CPU分配资源进入运行状态;
销毁:如果线程正常执行完毕后或线程被提前强制性的终止或出现异常导致结束,那么线程就要被销毁,释放资源;
3.MVC的各个部分都有那些技术来实现?如何实现?
MVC是Model-View-Controller的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
4.sql语句中join ,left join ,right join有什么区别
join等价于inner join内连接,是返回两个表中都有的符合条件的行。
left join左连接,是返回左表中所有的行及右表中符合条件的行。
right join右连接,是返回右表中所有的行及左表中符合条件的行。
full join全连接,是返回左表中所有的行及右表中所有的行,并按条件连接。
5.数据库三范式是什么?
第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)
数据库表中的字段都是单一属性的,不可再分
第二范式(2NF):是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。
第三范式的要求如下: 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
6.什么是ZooKeeper,简要说明其作用?
ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。
7.hive常见的优化 。
解决收据倾斜问题,减少job数量,设置合理的map和reduce个数,对小文件进行合并,优化时把握整体,单个task最优不如整体最优。按照一定规则分区等
8.什么是hbase热点问题?应该怎么解决?
大量的客户端访问集群一个或者极少个节点,会使节点Region所在的单个机器超出自身的承受能力,引起性能下降,甚至失效。这也会影响到同一个RegionServer上的其他Region,由于主机无法服务其他Region的请求。
设计良好的数据访问模式以使集群被充分的利用,为了避免热点,设计rowkey使得不在同一个Region在数据庞大的情况下,数据应该被写入到集群的多个Region,而不是一个。rowkey的设计师热点的源头。
常见的避免热点的方法有:加盐、哈希、反转
**加盐**:在rowkey的前面增加随机数,具体就是给rowkey分配一个随机前缀以使得它和之前的rowkey的开头不同。 加盐之后的rowkey就会根据随机生成的前缀分散到各个region上,以避免热点。
**哈希**:哈希会使同一行永远用一个前缀加盐。哈希也可以使负载分散到整个集群 ,使用确定的哈希可以让客户端重构完整的rowkey ,使用get操作准确获取某一行的操作。
**反转**:防止热点的方法时反转固定长度或者数字格式的rowkey。这样可以使得rowkey中经常改变的部分(最没有意义的部分)放在前面。这样可以有效的随机rowkey,但是牺牲了rowkey的有序性。
9.Kafka Message(消息)有那几部分组成?
Kafka 中的一条记录或数据单位。主要由4部分组成:offset、timestamp、key、value;
一个Message由固定长度的header和一个变长的消息体body组成。
8 byte offset在parition(分区)内的每条消息都有一个有序的id号,这个id号被称为偏移(offset),它可以唯一确定每条消息在parition(分区)内的位置。即offset表示partiion的第多少message。
4 byte message sizemessage大小。
4 byte CRC32用crc32校验message。
1 byte “magic"表示本次发布Kafka服务程序协议版本号。
1 byte “attributes"表示为独立版本、或标识压缩类型、或编码类型。
4 byte key length表示key的长度,当key为-1时,K byte key字段不填。
10. spark常见的优化?
避免创建重复的RDD
尽可能复用同一个RDD
对多次使用的RDD进行持久化
尽量避免使用shuffle类算子
使用map-side预聚合的shuffle操作
使用高性能的算子
广播大变量
使用Kryo优化序列化性能(作业调优)
优化数据结构
资源调优
spark优化的宗旨是速度快优先,前提,spark一般来说,内存是最珍贵的资源,cpu,磁盘其次