1.数据开发工程师面试题目必知必会


面试题目梳理

一. 数据结构和算法 LeetCode

  1. 合并数组
  2. 二元查找树转双向链表
  3. 二叉树层次遍历
  4. 堆 最小堆
  5. 排序算法
  6. 动态规划
  7. 青蛙跳台阶
  8. 贪心算法
  9. 字符串转换成整数
  10. 链表中倒数第K个结点
    1. 二维数组中的查找
    1. 替换空格
    1. 从尾到头打印链表
    1. 重建二叉树
  11. 用两个栈实现队列
  12. 斐波那契数列及变形题
  13. 二进制中1的个数
  14. 在O(1)时间删除链表结点
  15. 调整数组顺序使奇数位于偶数前面
  16. 反转链表
  17. 合并两个排序的链表
  18. 树的子结构
  19. 二叉树的镜像
  20. 顺时针打印矩阵
  21. 栈的压入、弹出序列
  22. 二叉搜索树的后序遍历序列
  23. 二叉树中和为某一值的路径
  24. 数组中出现次数超过一半的数字
  25. 最小的k个数
  26. 连续子数组的最大和
  27. 第一个只出现一次的字符
  28. 两个链表的第一个公共结点
  29. 链表中环的入口结点
  30. 二叉树的镜像
  31. 跳台阶
  32. 变态跳台阶
  33. 矩形覆盖
  34. 从上往下打印二叉树
  35. 二叉搜索树的第K个结点

二. 计算平台

1. Hadoop

  1. 数据倾斜问题

  2. hive开窗函数

  3. hive UDF UDAF
    Mapreduce原理

  4. MR的Shuffle过程

  5. Yarn的工作机制,以及MR Job提交运行过程

  6. MapReduce1的工作机制和过程

  7. HDFS写入过程

  8. Fsimage 与 EditLog定义及合并过程

  9. HDFS读过程

  10. HDFS简介

  11. 在向HDFS中写数据的时候,当写某一副本时出错怎么处理?

  12. namenode的HA实现

  13. 简述联邦HDFS

  14. HDFS源码解读–create()

  15. NameNode高可用中editlog同步的过程

  16. HDFS写入过程客户端奔溃怎么处理?(租约恢复)

2. Hive

  1. Hive内部表与外部表的区别
  2. Hive与传统数据库的区别
  3. Hiverc文件
  4. Hive分区
  5. Hive分区过多有何坏处以及分区时的注意事项
  6. Hive中复杂数据类型的使用好处与坏处
  7. hive分桶?
  8. Hive元数据库是用来做什么的,存储哪些信息?
  9. 为何不使用Derby作为元数据库?
  10. Hive什么情况下可以避免进行mapreduce?
  11. Hive连接?
  12. Hive MapJoin?
  13. Hive的sort by, order by, distribute by, cluster by区别?
  14. Hadoop计算框架特性
  15. Hive优化常用手段
  16. 数据倾斜整理(转)
  17. 使用Hive如何进行抽样查询?

3. Spark

  1. Spark的运行模式
  2. RDD是如何容错的?
  3. Spark和MapReduce的区别
  4. 说一下Spark的RDD
  5. 自己实现一个RDD,需要实现哪些函数或者部分?
  6. MapReduce和Spark的区别
  7. Spark的Stage是怎么划分的?如何优化?
  8. 宽依赖与窄依赖区别
  9. Spark性能调优
  10. Flink、Storm与Spark Stream的区别(未)
  11. 说下spark中的transform和action
  12. RDD、DataFrame和DataSet的区别
  13. Spark执行任务流程(standalone、yarn)
  14. Spark的数据容错机制
  15. Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
  16. Spark master使用zookeeper进行HA的,有哪些元数据保存在Zookeeper?以及要注意的地方
  17. driver的功能是什么?
  18. spark端口
  19. RDD有哪几种创建方式
  20. map和flatmap的区别
  21. Spark的基本工作流程
4.1 Flink核心概念和基础

第一部分:Flink 中的核心概念和基础篇,包含了 Flink 的整体介绍、核心概念、算子等考察点。

第二部分:Flink 进阶篇,包含了 Flink 中的数据传输、容错机制、序列化、数据热点、反压等实际生产环境中遇到的问题等考察点。

第三部分:Flink 源码篇,包含了 Flink 的核心代码实现、Job 提交流程、数据交换、分布式快照机制、Flink SQL 的原理等考察点。

5. Storm:

Storm的可靠性如何实现?包括spout和bolt两部分

怎么提高Storm的并发度?

Storm如何处理反压机制?

Storm中的Stream grouping有哪几种方式?

Storm的组件介绍

Storm怎么完成对单词的计数?

简述Strom的计算结构

6. kafka:

kafka介绍

Kafka与传统消息队列的区别?

kafka的零拷贝

kafka消息持久化和顺序读写?

7. Kylin

简介Kylin

Kylin的工作原理

Kylin的技术框架

Cube、Cuboid 和 Cube Segment

Kylin 对维度表的的要求

Cube的构建过程

全量构建和增量构建的区别

流式构建原理

三. 数据库

     1)两大引擎Innodb引擎和MyIASM引擎,

      2)mysql索引原理和底层实现BTREE、B+ TREE

四. 数据仓库

​ 1)拉链表
​ 2)星型模型和雪花模型
​ 3)维度建模过程

五. 操作系统

1)线程和进程,进程间的通信方式
2)死锁
3)内存分页
4)同步异步阻塞

六. 计算机网络

  1. 简述TCP和UDP的区别
  2. 七层协议每一层的任务及作用
  3. 简述http状态码
  4. 简述http协议与https协议
  5. 简述SSL协议
  6. 解析DNS过程
  7. 三次握手,四次挥手的过程??为什么三握?

七. Linux

1. 比较常用Linux指令

  1.1、ls/ll、cd、mkdir、rm-rf、cp、mv、ps -ef | grep xxx、kill、free-m、tar -xvf file.tar、(说那么十几二十来个估计差不多了)

2. 进程相关

查看进程

  2.1、ps -ef | grep xxx

  2.2、ps -aux | grep xxx(-aux显示所有状态)

杀掉进程

  3.1、kill -9[PID] —(PID用查看进程的方式查找)

4、启动/停止服务

  4.1、cd到bin目录cd/

  4.2、./startup.sh –打开(先确保有足够的权限)

  4.3、./shutdown.sh —关闭

5、查看日志

  5.1、cd到服务器的logs目录(里面有xx.out文件)

  5.2、tail -f xx.out –此时屏幕上实时更新日志。ctr+c停止

  5.3、查看最后100行日志 tail -100 xx.out

  5.4、查看关键字附件的日志。如:cat filename | grep -C 5 ‘关键字’(关键字前后五行。B表示前,A表示后,C表示前后) —-使用不多**
**

  5.5、还有vi查询啥的。用的也不多。

6、查看端口:(如查看某个端口是否被占用)

  6.1、netstat -anp | grep 端口号(状态为LISTEN表示被占用)

7、查找文件

  7.1、查找大小超过xx的文件: find . -type f -size +xxk —–(find . -type f -mtime -1 -size +100k -size-400k)–查区间大小的文件

  7.2、通过文件名:find / -name xxxx —整个硬盘查找

  其余的基本上不常用

8、vim(vi)编辑器  

  有命令模式、输入模式、末行模式三种模式。
  命令模式:查找内容(/abc、跳转到指定行(20gg)、跳转到尾行(G)、跳转到首行(gg)、删除行(dd)、插入行(o)、复制粘贴(yy,p)
  输入模式:编辑文件内容
  末行模式:保存退出(wq)、强制退出(q!)、显示文件行号(set number)
  在命令模式下,输入a或i即可切换到输入模式,输入冒号(:)即可切换到末行模式;在输入模式和末行模式下,按esc键切换到命令模式


文章作者: Leon
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Leon !
评论
  目录