某三大运营商之一的北京研究院

一、抽象类和接口的区别

       如果一个类中包含抽象方法,那么这个类就是抽象类,在java中可以把类或者类中的某个方法声明为abstract来表示一个抽象类。接口指的是一个方法的集合,接口中的所有方法都没有方法体,接口是通过implement来实现的。

相同点:

(1)都不能被实例化。

(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化。

不同点:

(1)接口只有定义。其方法不能在接口中实现,只有实现接口的类才能够实现接口中定义的方法。

(2)接口需要实现(用implement),但抽象类只能被继承。一个类可以实现多个接口,但是一个类只能继承一个抽象类。因此使用接口可以间接达到多重继承的目的。

(3)接口强调特定功能的实现,抽象类强调所属关系。

(4)接口中定义的成员变量默认为public static final,只能够有静态的不能被修改的数据成员。而且必须给其赋值,所有成员方法都是public、abstract的,而且只能被这两个关键字修饰。抽象类可以有自己的数据成员变量,也可以有非抽象的成员方法,而且,抽象类中的成员变量默认为default。

(5)接口被运用于实现比较常用的功能,便于日后维护或者添加删除方法;抽象类更倾向于充当公共类的角色,不适用于日后重新对里边的代码进行修改。


二、hashmap的底层实现

这个答案挺详细的:

https://zhuanlan.zhihu.com/p/21673805?utm_source=wechat_timeline&utm_medium=social&from=timeline


三、Hadoop相关


四、HBase与MySql的区别

HBASE并不是关系型数据库,它不支持sql。

最主要的区别:HBASE是面向列的分布式数据库,MySQL是面向行存储的。

HBASE中的列被称为列族,同一个列族的所有成员具有相同的前缀。


五、Hive主要存储的什么数据

这个博客中有一些hive相关的面试题:https://blog.csdn.net/qq_26442553/article/details/78725690

hive主要存一些离线数据。

hive的表在逻辑上由存储的数据和描述表中数据形式的相关元数据组成。数据一般存在hdfs中,也可以放在其他任何Hadoop文件系统中;元数据一般存放在关系型数据库中。

六、搭建Hadoop集群的两种方式

1、修改配置文件的方式搭建Hadoop集群

2018国企技术岗春招面试经验---大数据岗位

(1)MySQL安装

(2)jdk安装

(3)Hadoop安装(修改主机名、修改hosts、配置ssh免密登陆、下载Hadoop安装包、解压Hadoop、配置环境变量、修改配置文件)

(4)启动集群(关闭防火墙、格式化namenode、在master上启动dfs服务、启动yarn服务、运行实例程序)

(5)zookeeper安装(download zookeeper、配置环境变量、配置文件修改、测试)

(6)HBASE安装(下载安装包、配置环境变量、将HBASE中与Hadoop相关的jar包都替换成已安装版本的Hadoopjar包、配置文件)

(7)hive安装(下载hive安装包、配置环境变量、配置文件、把MySQL的jdbc驱动包复制到hive的lib目录下、启动hive shell)

(8)spark安装(下载并安装Scala、配置环境变量、测试Scala、将Scala安装文件复制到其他三个slave节点并配置环境变量、下载spark、配置环境变量、配置文件、将spark安装文件复制到其他节点,并配置环境变量、测试spark)

特别鸣谢:赵庆)

2、通过安装Cloudera manager然后安装CDH5

配置集群各个节点,安装Cloudera manager之后会有可视化的操作界面,根据提示以及需求进行Hadoop及其相关组件安装即可。


七、流式计算等(kafka、flume、storm)


八、说一些你常用的linux指令

ls、cd、mkdir、rm、mv、cp、chmod(改变文件的权限)、grep、kill、file、tar、vim、cat、chown(改变文件的所有者)

九、如果你的集群中有一台slave节点检测不到了,你会怎么做?说一下思路

(1)ping

(2)可视化界面操作

(3)slave节点服务关停并重新启动

(4)查看日志

(5)slave服务器重启

(6)集群重启

十、spark代替了Hadoop的哪些内容?

Hadoop:存储、运算

spark替代了运算

相关文章: