Advertisement

2024年大数据最新【面试题】大数据方向_大数据方向问题(2),2024年最新大数据开发最新面试题

阅读量:
img
img
img

这段内容既包含专为小白设计的入门级学习材料,也专门针对经验丰富的资深学习者提供深入的学习资源;课程内容全面涵盖超过95%的大数据核心知识点,并经过精心设计与整合。

鉴于文件数量较多,在此仅作为参考提供了一些目录截屏,并且不仅包括大厂面经与学习笔记等基础材料内容还包括源码讲义以及实战项目的详细解析同时还会持续更新

需要这份系统化资料的朋友,请直接访问以下链接获取

具备这份系统化资料的朋友,请直接访问以下链接获取

复制代码
    **UDTF**(User-Defined Table-Generating Functions)表生成函数,一进多出
    
    
    #### 10.开窗函数的介绍?排序的函数?
    
    
    窗口函数(Window functions)是一种SQL函数,非常适合于数据分析,因此也叫做OLAP函数,其最大特点是:输入值是从SELECT语句的结果集中的一行或多行的“窗口”中获取的。你也可以理解为窗口有大有小(行有多有少)。
    
    
    通过OVER子句,窗口函数与其他SQL函数有所区别。如果函数具有OVER子句,则它是窗口函数。如果它缺少OVER子句,则它是一个普通的聚合函数。
    
    
    窗口函数可以简单地解释为类似于聚合函数的计算函数,但是通过GROUP BY子句组合的常规聚合会隐藏正在聚合的各个行,最终输出一行,**窗口函数聚合后还可以访问当中的各个行,并且可以将这些行中的某些属性添加到结果集中**。
    
    
    窗口排序函数
    
    
    **row\_number**:在每个分组中,为每行分配一个从1开始的唯一序列号,递增,不考虑重复;
    
    
    **rank**: 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,挤占后续位置;
    
    
    **dense\_rank**: 在每个分组中,为每行分配一个从1开始的序列号,考虑重复,不挤占后续位置;
    
    
    #### 11.Sort by和Order by的区别?
    
    
    order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。
    
    
    sort by不是全局排序,其在数据进入reducer前完成排序.  
     因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1, 则sort by只保证每个reducer的输出有序,不保证全局有序。
    
    
    #### 12.行转列和列转行用的哪些函数?
    
    
    collect\_ws  
     collect\_set  
     collect\_list
    
    
    collect\_set去除重复元素;collect\_list不去除重复元素
    
    
    #### 13.Hive中Join的工作原理?mapJoin的工作原理?
    
    
    
    
    
    #### 14.工作中如果做一个指标需要依赖于别人开发设计好的一张宽表,这种场景你们是怎么处理的?
    
    
    #### 15.数仓怎么搭建起来的?
    
    
    #### 16.你们数仓怎么建模型的?怎么分层的?
    
    
    #### 17.如果要让你设计一个模型的话,你会怎么设计?(可以随便举个例子来说)
    
    
    #### 18.指标分析你们主要是用的什么?
    
    
    #### 19.谈谈你对Hive的优化以及写SQL过程中的优化?
    
    
    #### 20.Select \* 与Select 写全部列名 这两个有什么区别吗?
    
    
    结论:两者差别几乎可忽略。所以查询所有字段(或者大多数字段)的时候,大可 select \* 来操作。如果某些不需要的字段数据量特别大,还是写清楚字段比较好,因为这样可以减少网络传输。
    
    
    (1)减少数据的负担。
    
    
    SELECT \*,需要数据库先 Query Table Metadata For Columns,一定程度上为数据库增加了负担(影响网络传输的性能),但是实际上,两者效率差别不大。
    
    
    (2)考虑到今后的扩展性。
    
    
    因为程序里面你需要使用到的列毕竟是确定的, SELECT \* 只是减少了一句 SQL String 的长度,并不能减少其他地方的代码。
    
    
    (3)索引问题
    
    
    select abc from table; 和 select \* from table;
    
    
    在 abc 字段有索引的情况下,mysql 是可以不用读 data,直接使用 index 里面的值就返回结果的。但是一旦用了 select \*,就会有其他列需要读取,这时在读完 index 以后还需要去读 data 才会返回结果,这样就造成了额外的性能开销。
    
    
    综上:除平时练习使用,其他情况都不推荐使用 SELECT \* FROM XXX 。
    
    
    #### 21.一个SQL题:如何去求这一天24小时每隔5分钟的股票的一个峰值和低估值?(不是实时的,数据可以是昨天一天的数据)
    
    
    #### 22.维度建模 如何建?
    
    
    确认主题 确认粒度 确认度量 确认事实表 确认维度表
    
    
    #### 23.Redis有哪些数据结构?zset底层咋实现的?
    
    
    String:使用一种叫简单动态字符串(SDS)的数据类型来实现
    
    
    List:一个 key 对应一个字符串列表,底层使用双向链表实现,很多双向链表支持的操作它都支持。
    
    
    Hash
    
    
    Set
    
    
    Zset :数据少时:使用ziplist 数据多时:(字典(dict) + 跳表)
    
    
    三种特殊数据类型:位图(bitmaps) 、计数器(hyperloglogs)和地理空间(geospatial indexes)。
    
    
    #### 24.Redis用来当分布式锁是咋整的?
    
    
    #### 25.Zookeeper知道不?里面用的啥协议?
    
    
    ZAB
    
    
    #### 26.MySQL有哪些锁?next-key lock能解决啥问题?
    
    
    https://www.51cto.com/article/665412.html
    
    
    #### 27.Kafka通过哪些机制实现了高吞吐量?
    
    
    1、顺序读写  
     kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能  
     顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写
    
    
    2、零拷贝  
     在Linux kernel2.2 之后出现了一种叫做"零拷贝(zero-copy)"系统调用机制,就是跳过“用户缓冲区”的拷贝,建立一个磁盘空间和内存的直接映射,数据不再复制到“用户态缓冲区”
    
    
    常用模式:
![在这里插入图片描述]()
    
    
    kafka使用如下模式:
![在这里插入图片描述]()
    
    
    3、分区  
![img]()
![img]()
![img]()
    
    **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[需要这份系统化资料的朋友,可以戳这里获取]()**
    
    提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[需要这份系统化资料的朋友,可以戳这里获取]()**

全部评论 (0)

还没有任何评论哟~