大数据面经

这是一篇关于大数据面试的全面总结,涵盖了从Linux命令到数据库理论,再到Hadoop和Spark的深入讨论。面试中涉及Linux常用命令、数据库事务隔离级别、MySQL的优化、Hadoop的HDFS和YARN、Spark的特性和优化、数据库的ACID属性、数据结构与算法等。面试官还关注了并发编程、线程安全、网络协议、Java集合框架、数据库设计与优化,以及大数据组件如HBase、Kafka、HDFS和MapReduce的细节。面试过程中,面试者展示了对大数据生态系统的广泛理解和实践经验,包括数据处理、存储、查询优化和分布式计算的挑战与解决方案。
摘要由CSDN通过智能技术生成

Linux:

3、平时都用过哪些Linux命令?直接在屏幕上打出来               Linux常用命令大全(非常全!!!)

4、Linux查看内存、CPU占有量命令?(当时没答上来!)         查看Linux磁盘及内存占用情况      top 命令

7.linux了解吗?epoll?(我说只懂基本命令)                I/O多路复用之epoll      

4、linux命令、ack

 

数据库:

1、手撕MySQL:

1、查找语句,并去重,                                      mysql查询根据部分字段去重

2、常用的函数有哪些,能说多少说多少?           MySQL 函数

3、数据库3大范式?                                             数据库的3大范式和5大约束                          

5、找出总成绩最高的那个人和所有课程的成绩
6、找出每门成绩都高于80的人                                 mysql 学生成绩练习题

2、、left join和inner join的区别                            left join、inner join、right join的区别            

ON 根据限制条件对数据库记录进行过滤,然后生产临时表;而 WHERE 是在临时表生产之后,根据限制条件从临时表中筛选结果。   Mysql查询条件on、where、having区别   

因为 WHERE 在聚集函数之前筛选数据,HAVING 在计算之后筛选分组,因此 WHERE 的查询速度要比 HAVING 的查询速度快。

HiveQL distribute by、group by、sort by、order by、sort by、cluster by区别

hive中Sort By,Order By,Cluster By,Distribute By,Group By的区别

order by 全局排序,distribute by 控制Map=》Reduce, sort by 每个Reduce内部排序,局部有序  group by + 聚合函数

cluster by(只能是使用默认的升序排序,不能使用ACS和DESC):

  这个其实就是distribute by 和sort by 结合使用的结果(前提是同一个字段)。
  例如:select id,money,name from t cluster by id;

  等价于:select id,money,name from t distribute by id sort by id

 

3、数据库里面innodb和另一个的区别        数据库引擎中innoDB和MyISAM区别       数据库存储引擎innodb和mysiam区别

事物支持、存储结构、存储空间、可移植性及备份及恢复、AUTO_INCREMENT、表锁差异、全文索引、表主键、表的具体行数、CURD操作、外键

4、%创建索引???                                           数据库创建索引的规则

隔离、锁,多线程、引擎    

Mysql中的锁机制        MySQL锁机制        mysql多线程

5、数据库索引的类型、为什么mysql底层用b+tree            数据库索引的实现原理             Java面试之数据库——数据库索引     

首先说不同的存储引擎的索引是不同的。然后谈到了InnoBD与ISAM的区别。然后画图并且解释,然后谈到了复杂度然后谈到了索引与二叉搜索树与二分查找的关系。时间复杂度。最后谈到了HBase中实现高性能的LSM树。

然后谈到事务的实现方式MVCC,谈笑风生。

最后是索引的优化与失效,《高性能MySQL》中独立的列。

谈一下索引的页,我谈到了索引随机化产生的页分裂的问题。(其实这些知识都在《高性能MySQL中出现过》)。


6、数据库的事务是什么                              数据库事务详解     ACID  原子、一致、  隔离、  持久

数据库的acid 四个事务隔离级别
每层隔离级别是怎么解决上一层的问题

事务隔离级别对比

事务隔离级别 脏 读 不可重复读 幻 读
读未提及(READ_UNCOMMITTED) 允许 允许 允许
读已提交(READ_COMMITTED) 禁止 允许 允许
可重复读(REPEATABLE_READ) 禁止 禁止 允许
顺序读(SERIALIZABLE) 禁止 禁止 禁止

 

在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。

为表设置索引代价:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

 

           
7、数据库有必要建索引吗?                          数据库创建索引的利弊             

8、你觉得mysql有什么缺点?                       MySQL的优缺点浅析

9、除了mysql有用过其他数据库吗?知道数据仓库吗?          数据库和数据仓库你应该知道的

10、你用过数据库,怎么用的解释一下,你认为注意的点有哪些

11、explain的字段有哪些。

 

数据结构:

递归及动规:

1.动态规划和递归哪个好,有什么区别                           递归和动态规划

  在自顶向下的动态规划中,我们存储已知的值;在自底向上的动态规划中,我们预先计算这些值。选择自顶向下的动态规划:

链表:

2.数组和链表的区别?应用场景是什么?读取和插入的复杂度?             面试之路(8)-BAT面试题之数组和链表的区别

数组和链表和集合的区别和应用场景以及堆和栈的区别

 

二叉树:

5.算法 中序遍历二叉树             前序+中序=>后序     中序+后序=>前序         【算法】二叉树的前序、中序、后序、层序遍历和还原。    Java:前序和中序还原二叉树

 

链表:

6.两个有序链表合并                 合并两个有序单链表(Java)     反转单链表,单链表实现约瑟夫环,合并两个有序单链表、查找两个有序单链表中相同元素

5、写一个链表的数据结构、用单链表存储 并判断回文数123321?(当时写的太慢,而且考虑到用vector/stack来存储,空间复杂度较大,且没有考虑写类和将求链表长度封装成函数,即没有体现面向对象的思想,以后应该注意)!!!
3.Python常用的5个库                         python数据分析五个最常用库

集合:

HashTable和HashMap的区别、ConcurrentHashMap       
hashmap的实现

concurrenthashmap是怎么实现线程安全的;与hashmap的区别;
hashmap的loadfactory是干嘛的
hashmap的扩容    为什么每次扩容都是翻倍,增加1.5倍不行吗   扩容的时候为啥不多扩一点,比如4倍

讲一下Java中的集合,从ArrayList一直讲到ConcurrentHashMap,其中包括底层数据结构,扩容,并发问题。lz也最后谈到了红黑树以及复杂度与并发中CAS算法。

手撕:

1、归并、快排、链表排序、反转(需要自定义链表节点)、数组中第二大的数、(需要自定义链表节点)。

2、剑指原题,两个栈实现一个队列、实现一个线程池、

3、n个有序数组求TopK、前k大,好吧,是堆排。画图解释堆排,堆的构造下沉操作,这次没让写代码。

基于大量数据的前k大,lz当时的反应这肯定得多线程+分布式。最后扯到了MR的思想归并排序。其实后来想了下赛道比马问题的模型解决这个问题更为合适。

4、知道二叉树前中序遍历,怎么得到后续遍历,限时5分钟。               二叉树的后序遍历 非递归实现
5、一个排序数组里面找出所有和等于k(事先给定)的三元组。(我写了个O(N*N)的,面试官问能不能优化,我说不知道,:)

《面试指南》P351 相加和为给定值的所有三元组  

6、智力题:m* n矩阵的方格,寻找内切圆的数量。(面试本来都慌,脑子一片浆糊)

7、算法题:leetcode买股票问题

给定每天股票的价格,只允许一次买和一次卖,求最大收益

解决了上面那个问题后,问允许多次买卖,求最大收益然后二面就结束了

8、键值对这种数据结构的实现方式

9、多线程安全的键值对数 据结构实现方式

10、说说数据存储和处理的历史演变

11、hash树和B树的区别;

然后写一道编程题,给个字符串,只有(){}[],看看是否是匹配的,
用个栈直接解决了,问下优化,如果遇到右括号,在查看栈顶元素的时候如果不匹配直接返回false


来了道算法题,两个三十六进制字符串的相加
一条直线可以把一个平面分成2个平面,两条直线最多分成4个,问n条直线最多分成几个面

 

手写一个leetcode hard,就是两个数组,找全局中间数那个。

 

 

 

网络系统:

1、一次完整的URL浏览器访问过程?               在浏览器中输入URL后,执行的全部过程。(一次完整的http请求过程)

浏览器种输入一个url会发生什么(全过程详解)     从输入url到页面加载完成发生了什么?——前端角度
2、操作系统的进程与线程                   
3、网络协议                                   网络协议

5、了解其他HTTP请求吗? (不会)   
6、操作系统死锁  操作系统学习笔记(七) 死锁    死锁    死锁面试题  死锁面试题(什么是死锁,产生死锁的原因及必要条件)
7、http协议状态码                            http协议状态码及其意义

8、http头部有什么?用过什么      有没有去试着改下header的内容    get,post区别

9、tcp三次握手,udp四次挥手,为什么?   TCP的三次握手与四次挥手理解及面试题(很全面)  tcp四次挥手介绍一下 为什么会有第二次、第三次、第四次?

10、HTTP传输层用了什么协议          应用层协议有哪些

11、介绍下TCP和UDP,两者区别,拥塞控制什么的         什么场景用TCP,什么场景用UDP

12、进程间通信方式有哪些,答了管道、消息队列、共享内存    继续追问,还有其他的么?这三者的区别

说完后又继续追问,还有没有其他的

说了下socket,嘴抽说了句socket一般用于不同机器之间的进程通信

追问那在同一台机器的进程就不能用socket么

答应该可以把,把Socket的IP设置成localhost应该可以,问能不能设置成其他的,emm 设置成127.0.0.1应该也行

问设置成本机真实IP行不行?emm 应该可以。追问,那设置成这三者的区别是什么。

 

HTTP长连接和短连接                  TCP HTTP  HTTPS POST GET
url和uri的区别
HTTP和TCP

3,聊一聊操作系统:

进程的状态,进程线程的区别,进程间通信方式,进程和线程的优劣、开发中使用的进程线程和理解

(面试官明显希望关于进程线程的知识多说一点,但是我php单线程,我对这个不太感冒啊,所以聊起来有些尴尬)

 

 

大数据组件:

Hadoop:

1、Hdfs的文件结构、hdfs小文件过多会怎么样、实现hdfs的高可用性   Hadoop简介    Hadoop基本介绍    HDFS详解(3)——HDFS文件结构

2、为什么数据存入hdfs还要再倒入NoSql,为什么hdfs对olap支持不友好。

3、yarn出现的背景    YARN产生背景   

Hadoop1.0  MR架构,存在问题,YARN之前,一个集群一个计算框架。比如:Hadoop一个集群、Spa

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值