面试笔试题9

1.Static关键字作用?Java是否可以override一个private或者static的方法?是否可以static方位非static变量? 1. 这说明了static所修饰的方法/变量可以直接通过类名访问,而不是先创建对象再对...

1.Static关键字作用?Java是否可以override一个private或者static的方法?是否可以static方位非static变量?

1. 这说明了static所修饰的方法/变量可以直接通过类名访问,而不是先创建对象再对里面的静态方法/变量进行访问,当然这样也可以。

2. static所修饰的变量/代码块/方法在该类被加载时加载/运行(这里特指静态代码块,并且只执行一次)。同时,被static修饰的变量在堆只有一个副本,所有对象对该变量的操作都是在操作同一个变量,如果是实例变量的话,每个对象都有各自的副本,每个对象操作的都是各自的副本。

不可以覆盖private,也不覆盖static;不可以访问非静态

 

2.怎么解决线程冲突问题

通过Runnable接口创建线程类

继承Thread类创建线程类

通过CallableFuture创建线程

同步加锁的方式解决冲突问题,线程通讯“信号量”的概念,它可以看做两个线程之间的通讯标志对象。假如信号量的值为0,则信号量所监控的资源是可用的,如果非0,则监控资源不可用,

 

3.怎么讲复杂对象序列化/反序列化

答:复杂对象序列化应该就是用fastjson 如果是大文件或者大对象jacson跟好一些

4.接口抽象类区别

attachments-2018-04-SubU5Lk05ae4313a7bbec.png

5.Final修饰变量时是引用不能变还是引用的内容不能变

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

 

6/.Java如何异常处理,throwsthrow,try..cache..finally的意义;try中可以抛出异常吗?

ava通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的

接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一

个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方

法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try

catchthrowthrowsfinally。一般情况下是用try来执行一段程序,如果出现异常

,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,

或最后(finally)由缺省处理器来处理。

try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句

来指定你想要捕捉的"异常"的类型。

throw语句用来明确地抛出一个"异常"

throws用来标明一个成员函数可能抛出的各种"异常"

Finally为确保一段代码不管发生什么"异常"都被执行一段代码。

可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句

保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try

语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到

遇到有处理这种"异常"try语句。

 

7. Hive怎么保存元数据的?内部外部表区别?什么时候分区?

元数据可以保存到mysql

区别:①Hive创建内部表时(默认创建内部表),会将数据移动到数据仓库指向的路径;创建外部表(需要加关键字external),仅记录数据所在的路径,不对数据的位置做任何改变;

⑵Hive删除表时,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据;

分区表:将每个小时或每天的日志文件进行分区存储,可以针对某个特定时间段做业务分析,而不必分析扫描所有数据;

8. kafkaTOpic/consumer/Group/Partition关系如图:

attachments-2018-04-OJ8DysHh5ae431491dbe9.png

9/如果DATANODE一个block坏掉了怎么办

数据块损坏后,在该节点执行directoryscan之前(dfs.datanode.directoryscan.interval决定),都不会发现损坏,在向namenode报告数据块信息之前(dfs.blockreport.intervalMsec决定),都不会恢复数据块,当namenode收到块信息后才会采取恢复措施

 

没事的,该block块会从其他节点副本中恢复拷贝过来。
10HIVE分区与分桶的区别?

Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。分区表指的是在创建表时指定的partition的分区空间

桶是比表或分区更为细粒度的数据范围划分。针对某一列进行桶的组织,对列值哈希,然后除以桶的个数求余,决定将该条记录存放到哪个桶中。
好处:
1、获得更高的查询处理效率。
2、使抽样更高效。

 

11/如何再hadoopspark中分别实现多文件输出

Hadoop mr:设置多文件输出,使用MultipleOutputs

因为Spark内部写文件方式其实调用的都是Hadoop的函数,所以我们也可以通过Spark实现多文件输出。Spark内部没有多文件输出的函数供大家直接调用,我们自己实现这个功能也是很简单的。我们可以通过调用saveAsHadoopFile函数并自定义一个OutputFormat类即可.

12、创建DATESet的方式?

1.sparkSession.createDataset(Seq等数据

可以直接把Seq等這些数据类型转换为dataSet,但需要导入一个隐式转换这一步骤,如下:

3. [java] view plain copy

1. val sparkSession = SparkSession.builder().appName("data set example")  

2.   .master("local").getOrCreate()  

3. import sparkSession.implicits._  

这样其他类型就可以直接转换为dataSet(同时解决序列化编码问题)

2. df转成ds

 创建df的三种方式

Spark中使用toDF函数创建DataFrame

case class + toDF创建DataFrame的示例

Spark中使用createDataFrame函数创建DataF

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
小马甲

2 篇文章

作家榜 »

  1. majia 8 文章
  2. 刘娜娜 6 文章
  3. 在下选择隐性埋名 4 文章
  4. 上神白浅 3 文章
  5. 李家兴 2 文章
  6. 小马甲 2 文章
  7. 刘东鑫 1 文章
  8. 崔楷文 1 文章