面试题总结

疫情期间找工作其实真的不是很好找,下面是最近一段时间的面试总结

hive面试总结:
一、经常会被问到的就是row_number()函数的使用

(1)、用户登录日志:
APP  userid datetime
快手  user001 2020-01-01 02:00:00
电猫  user002 2020-03-01 09:12:03
快手  user001 2020-01-02 02:00:00
输出每个APP下访问次数最多的5个用户(快手又被问到)

(2)、数据如下
date           user  age  programid  Playtime
20190421    u1    30     a              4min
20190421  u1    30     b             10min
20190421  u2    27     a               2min
20190422  u3    35     c                3min
20190422  u2    27     d             1min
问题如下
统计:(1条sql)用户总量,所有用户平均年龄,所有用户平均观看时长
统计:每10岁一个分段,统计每个区间的用户总量,每个区间用户的平均观看时长
统计:每个用户最喜欢的节目
统计:观看时长大于5min的用户总量,只要有一个节目用户观看时间小于5min就不能算(智联面试题)

(3)、

二、hive倾斜的调优

解决方案:
 1、存在大量null值的时候需要取出null

 2、大小表关联的时候,小表在左大表在右,减少join操作时的条数

 3、增加随机前缀的方式

 4、局部聚合+全局聚合

    原理:首先把大表先加入随机前缀,对下面需要join的表也进行拆分成多个小表的形式,分别与左表进行关联,然后把最终的结果在进行聚合

5、sql优化

   这个在这里就不细说,比如避免使用distinct等

hbase面试题:

 因为简历项目中有涉及到二级索引和协处理器方面的东西,所以面试中有被问到过

1、hbase热点问题:

   可以使用加盐的方式或者哈希的方式避免热点问题

2、hbase表结构的设计

3、hbase为什么支持高并发增删改?

   因为hbase是基于hbfs,所以可以提高并发,而且hbase是构建在hdfs上的分布式的面向列的存住系统,hbase上的数据都是以storeFile二进制流的形式存储到hdfs上的block块中,对于hdfs文件系统是透明的

4、hbase region拆分

   (1)手动拆分:手动指定拆分点,调用hbase shell的split方法

   (2)预拆分:在建表的时候就定一号拆分点的算法

   (3)自动拆分:使用参数hbase.hregion.max.filesize参数

5、hbase中regionserver宕机恢复

因为数据写入并没有直接写入数据文件,而是会先写入缓存(Memstore)在满足一定条件下缓存数据再会异步刷新到硬盘,写入缓存之前会首先将数据写入HLog中,可以从HLog中进行日志回放,进行数据的补救

spark面试题:

1、spark中DAGger理解:

2、spark中stage

3、spark提交流程(大厂可能会问一些源码相关的东西)

4、spark中的shuffle

    这个需要把1.6版本前后的一个更新都需要介绍一下 ,shuffle的原理

5、spark底层引擎

   这个问的不是很多,感兴趣的大家可以网上查阅资料

6、spark的容错机制

7、spark中sortBykey的底层理解,怎么对key进行排序的

8、spark处理内存溢出

9、scala的class和case class区别

10、scala隐式转换(360有被问到)

11、spark倾斜问题

sparkstreaming主要问的问题就是和kafka结合的时候怎么保证消息的一致性和仅一次语义

还有就是offset的存储问题,这个可以根据实际项目去介绍

其中又被问到kafka如果有一个用户组挂了,会有什么影响的问题

  我这里简单介绍一下我的理解

      会导致所有新版消费者都无法拉取消息,

      为了避免这种现象,我们可以通过设置参数offsets.topic.replication.factor=3设置副本数量,这样当一台消费者宕机时,其他消费者也可以今习惯消费,或者也可以重新启东一个broker,把broker.id设置为损坏的那个broker的id,就会自动复制过去丢失的数据
12、spark中如何优雅的关闭程序

13、spark中的背压机制

数据结构:

快排的原理

代码实现非递归前序遍历二叉树

判断数组中第二大元素

这些可以通过leetcode刷题去学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值