小米大数据工程师一面凉凉

自己还是太水,周一面试了小米大数据开发,面试官人真的很好,上周我去德国开会了他还等了一周。

微信语音面,7点发消息约了8点半面试。

简单介绍了自己的项目,然后问是不是只想搞算法,愿不愿意做工程,我特么当然想做工程啊。

1、mapreduce的流程

2、map阶段和reduce阶段有什么区别

3、为什么hadoop能提高效率

4、除了Hadoop还用过哪些框架?比较?

5、Hbase是个什么样的数据库?

6、行存储和列存储的区别?

7、为什么要把数据存在HDFS上?Hadoop的计算资源?yarn?

8、java的装箱和拆箱?

简单一点说,装箱就是  自动将基本数据类型转换为包装器类型;拆箱就是  自动将包装器类型转换为基本数据类型。

装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的。(xxx代表对应的基本数据类型)。

这其实是java早年设计的一个缺陷,基本数据类型不是对象,自然不是Object的子类,需要装箱才能把数据类型变成一个类,那就可以把装箱过后的基本数据类型当做一个对象,就可以调用object子类的接口。而且基本数据类型是不可以作为形参使用的,装箱后就可以。而且在jdk1.5之后就实现了自动装箱拆箱,包装数据类型具有许多基本数据类型不具有的功能,只是装箱拆箱过程会稍稍微的影响一下效率,不过基本是看不出来的,项目优化的话有很多别的手段,也没必要去纠结这一点

9、java虚拟机了解吗?

10、public、private、protected的区别。

小米大数据工程师一面凉凉_第1张图片

11、java的异常,说出几个runtime异常

Exceotion类有根据错误发生的原因分别为运行时异常(RuntimeException)和一般异常(CheckedException)。对于后者,即一般异常,Java要求我们必须对其进行try-catch或者throws处理;而对于运行时异常我们可以不处理。

常见RuntimeException异常:

NullPointerException空指针异常

ArrayIndexOutOfBoundsException数组下表越界异常

ArithmeticExceotion算数异常

ArratStoreException数组中包含不兼容的值抛出的异常

IllegalArgumentException非法参数异常

SecurityException安全性异常

NegativeArratSizeException数组长度为负异常

12、异常如何处理

Java语言的异常捕获结构由try、catch和finally3部分组成。其中,try语句块存放的是可能发生异常的Java语句;catch程序块在try语句之后,用来激发被捕获的异常;finally语句块是异常处理结构的最后执行部分,无论try语句块中的代码如何退出,都将执行finally语句块。

throws catch

13、java的继承和实现。

继承:如果多个类的某个部分的功能相同,那么可以抽象出一个类出来,把他们的相同部分都放到父类里,让他们都继承这个类。
实现:如果多个类处理的目标是一样的,但是处理的方法方式不同,那么就定义一个接口,也就是一个标准,让他们的实现这个接口,各自实现自己具体的处理方法来处理那个目标

14、传值和传引用的区别。

java中方法参数传递方式是按值传递。
如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝。

15、手撕代码,深度遍历一棵二叉树

16、手撕代码,反转单项链表。

你可能感兴趣的:(面试)