面试题目梳理
一. 数据结构和算法 LeetCode
- 合并数组
- 二元查找树转双向链表
- 二叉树层次遍历
- 堆 最小堆
- 排序算法
- 动态规划
- 青蛙跳台阶
- 贪心算法
- 字符串转换成整数
- 链表中倒数第K个结点
- 二维数组中的查找
- 替换空格
- 从尾到头打印链表
- 重建二叉树
- 用两个栈实现队列
- 斐波那契数列及变形题
- 二进制中1的个数
- 在O(1)时间删除链表结点
- 调整数组顺序使奇数位于偶数前面
- 反转链表
- 合并两个排序的链表
- 树的子结构
- 二叉树的镜像
- 顺时针打印矩阵
- 栈的压入、弹出序列
- 二叉搜索树的后序遍历序列
- 二叉树中和为某一值的路径
- 数组中出现次数超过一半的数字
- 最小的k个数
- 连续子数组的最大和
- 第一个只出现一次的字符
- 两个链表的第一个公共结点
- 链表中环的入口结点
- 二叉树的镜像
- 跳台阶
- 变态跳台阶
- 矩形覆盖
- 从上往下打印二叉树
- 二叉搜索树的第K个结点
二. 计算平台
1. Hadoop
数据倾斜问题
hive开窗函数
hive UDF UDAF
Mapreduce原理MR的Shuffle过程
Yarn的工作机制,以及MR Job提交运行过程
MapReduce1的工作机制和过程
HDFS写入过程
Fsimage 与 EditLog定义及合并过程
HDFS读过程
HDFS简介
在向HDFS中写数据的时候,当写某一副本时出错怎么处理?
namenode的HA实现
简述联邦HDFS
HDFS源码解读–create()
NameNode高可用中editlog同步的过程
HDFS写入过程客户端奔溃怎么处理?(租约恢复)
2. Hive
- Hive内部表与外部表的区别
- Hive与传统数据库的区别
- Hiverc文件
- Hive分区
- Hive分区过多有何坏处以及分区时的注意事项
- Hive中复杂数据类型的使用好处与坏处
- hive分桶?
- Hive元数据库是用来做什么的,存储哪些信息?
- 为何不使用Derby作为元数据库?
- Hive什么情况下可以避免进行mapreduce?
- Hive连接?
- Hive MapJoin?
- Hive的sort by, order by, distribute by, cluster by区别?
- Hadoop计算框架特性
- Hive优化常用手段
- 数据倾斜整理(转)
- 使用Hive如何进行抽样查询?
3. Spark
- Spark的运行模式
- RDD是如何容错的?
- Spark和MapReduce的区别
- 说一下Spark的RDD
- 自己实现一个RDD,需要实现哪些函数或者部分?
- MapReduce和Spark的区别
- Spark的Stage是怎么划分的?如何优化?
- 宽依赖与窄依赖区别
- Spark性能调优
- Flink、Storm与Spark Stream的区别(未)
- 说下spark中的transform和action
- RDD、DataFrame和DataSet的区别
- Spark执行任务流程(standalone、yarn)
- Spark的数据容错机制
- Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
- Spark master使用zookeeper进行HA的,有哪些元数据保存在Zookeeper?以及要注意的地方
- driver的功能是什么?
- spark端口
- RDD有哪几种创建方式
- map和flatmap的区别
- Spark的基本工作流程
4. Flink
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)同步异步阻塞
六. 计算机网络
- 简述TCP和UDP的区别
- 七层协议每一层的任务及作用
- 简述http状态码
- 简述http协议与https协议
- 简述SSL协议
- 解析DNS过程
- 三次握手,四次挥手的过程??为什么三握?
七. 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键切换到命令模式