大数据技术人才如今在市场上很吃香,很多公司也需要这样的人才。但是鉴于工作内容的重要性,很多面试公司都会对应聘者进行比较全面的审查和考核。而这个过程就是依靠投放简历和面试来搭接的。那么面试大数据的问题都有哪些呢?千锋大数据讲师整理了一本大数据面试宝典,以下分享的内容便是节选自千锋大数据面试宝典。
一、单例的5种写法
1、懒汉
class LazySingleton{
private static LazySingleton singleton;
private LazySingleton(){
}
public static LazySingleton getInstance(){
if(singleton==null){
singleton=new LazySingleton();
}
return singleton;
}
}
2、恶汉
class HungrySingleton{
private static HungrySingleton singleton=new HungrySingleton();
private HungrySingleton(){}
public static HungrySingleton getInstance(){
return singleton;
}
}
3、静态内部类
class InternalSingleton{
private static class SingletonHolder{
private final static InternalSingleton INSTANCE=new InternalSingleton();
}
private InternalSingleton(){}
public static InternalSingleton getInstance(){
return SingletonHolder.INSTANCE;
}
}
4、枚举
enum EnumSingleton{
INSTANCE;
public void doSomeThing(){
}
}
5、双重校验锁
class LockSingleton{
private volatile static LockSingleton singleton;
private LockSingleton(){}
//详见:http://www.ibm.com/developerworks/cn/java/j-dcl.html
public static LockSingleton getInstance(){
if(singleton==null){
synchronized(LockSingleton.class){
if(singleton==null){
singleton=new LockSingleton();
}
}
}
return singleton;
}
}
二、Linkedlist和ArrayList的区别
ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
三、linux的启动顺序
通电后读取ROM的BIOS程序进行硬件自检,自检成功后把计算机控制权交给BIOS中BOOTsequence中的下一个有效设备,读取该设备MBR找到操作系统,载入linux的bootloader,一般是grub。之后载入kernel,执行 /etc/rc.d/sysinit ,开启其他组件(/etc/modules.conf),执行运行级别,执行/etc/rc.d/rc.local ,执行/bin/login,最后shell启动。
四、使用过的开源框架介绍
Struts2
Spring
hibernate
mybatis
hadoop
hive
hbase
flume
sqoop
Zookeeper
Mahout
Kafka
Storm
Spark
五、HIVE的优化
底层是MapReduce,所以又可以说是MapReduce优化。
小文件都合并成大文件
Reducer数量在代码中介于节点数*reduceTask的最大数量的0.95倍到1.75倍
写一个UDF函数,在建表的时候制定好分区
配置文件中,打开在map端的合并
以上就是千锋小编节选的大数据面试题,如果还没有满足你的需求,欢迎咨询我们的千锋大数据培训讲师,毕竟专业技术问题更需要专业技术人员来回答!
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱