35道必会的大数据面试题及答案,面试一定会问到的题目

这 3 5 个大数据面试问题就像是我 1 0 年问答论坛中的一个小样本。
老实说,每个问题背后都有很多经验和教训。
下面我将讨论这些话题并分享一些我个人的见解。

首先,我们需要谈谈技术基础。
例如大数据的“4 V”特征;数量、速度、多样性和准确性是大数据的四个基石。
我记得我做项目的时候,数据量从TB上升到PB。
当时压力很大,但也教会了我如何处理大数据。

HDFS 和 YARN;这两个是Hadoop生态系统中的主要组件。
HDFS负责存储,YARN负责资源管理。
它们就像两个巨大的信息支柱。
我负责搭建Hadoop集群,那段时间我日夜不停地工作,但很高兴看到系统稳定运行。

MapReduce 和 Spark 都有各自的优点。
MapReduce适合离线批处理,而Spark更适合实时处理。
之前在一个实时数据分析项目中使用过Spark;速度确实是感人的。

Hive和HBase有不同的应用场景。
Hive适合批量处理,HBase适合实时查询。
我正在做一个用户行为分析项目,我使用了HBase,对实时性要求很高,效果非常好。

接下来,我们来谈谈数据处理和算法。
数据倾斜是大数据处理中常见的问题。
原因可能有很多,例如连接操作中键分布不均匀或表大小过大。
有多种解决方案,例如单独处理拆分键或使用 DISTRIBUTEBY 或 SKEWJOIN 优化。

实时日志分析系统;这个建筑设计非常有趣。
在文档分析项目中;我是按照这个架构设计的,效果非常好。

推荐系统;这是大数据应用非常热门的方向。
协同过滤;度量分析和深度学习都是常用的算法。
我一直在研究一个使用协同过滤和矩阵分解的电子商务推荐系统,结果非常好。

数据仓库和数据罐;这两个概念也很有趣。
数据仓库是结构化的、面向分析的。
数据湖是原始数据,支持探索性分析。
我正在做一个数据仓库项目,该项目是根据ODS/DWD/DWS/ADS的分层模型设计的。

项目经验及活动问题;这部分考验的是实践能力。
例如,如何解决数据质量问题、如何设计用户原型系统,都需要实践经验。

系统设计和架构的类型;这一部分比较宏观,需要考虑整个系统的设计。
比如,如何设计一个数十亿数据的实时计数系统,如何保证分布式系统中数据的一致性,都需要全局的视角。

软件技能和行为问题;这一部分考验的是一个人的综合素质。
例如,如何在面试前管理好紧张情绪,如何向非技术人员解释复杂的数据概念,都需要良好的沟通能力和同理心。

高级技术问题;本节更深入且有些技术性需要收藏。
比如Flink的检查点机制、Kafka消息递归消费问题等都需要深入理解。

开放式问题;本部分测试您对该行业的理解。
例如,如何利用大数据来增加公司收入,如何设计实时风控系统,都需要结合实际业务情况。

一般来说,大数据面试需要技术深度和业务理解的结合。
建议通过实际项目验证知识,提前准备行为问题。
同时,关注 Lakehouse 架构和数据工程人工智能等可以提高竞争力的业务趋势。

Oracle数据库的面试题目及答案

哎呀,我以前面试的时候也遇到过这个问题。
我们先来说说截断和删除。
两者都可以删除表中的所有记录,但玩法不同。

截断是一种DDL(数据定义语言)操作。
它直接把数据去掉,然后移动一个叫做HWK(High Water Mark,高水位线)的东西。
这个过程不需要回滚段,所以速度很快,但是一旦执行就无法回滚。

删除是一种DML(数据操作语言)操作。
它必须先记录已删除的数据,然后才能删除。
这就需要一个回滚段,所以速度比较慢。

两者之间存在一些差异。
例如,不带where子句的truncate和drop,都是直接删除数据,但truncate不会删除表结构,而drop会删除表结构、约束、触发器和索引,但存储过程和函数会失效。

再比如,delete会将删除的数据记录在回滚段中,直到事务提交后才会生效。
如果有触发器的话,执行delete的时候可能会触发。
但truncate和drop是立即生效的,不会记录在rollback段中,也不会触发触发器。

另外,truncate不会影响表占用的空间,而drop会释放表占用的所有空间。
默认情况下,truncate 会释放空间到minextents 范围,除非你使用reusestorage; truncate 会将高水位线重置回原始位置。

从速度上来说,一般来说是drop>truncate>delete。

使用时要小心。
如果要删除某些数据行,请使用delete。
记得带上 where 子句。
回滚段必须足够大。
如果你想删除一个表,当然使用drop。
如果想保留表但删除所有数据,如果与事务无关,就用truncate即可。
如果与事务相关,或者想触发触发器,则使用delete。
如果想内部对表进行碎片整理,可以使用truncate加reusestorage,然后再导入或插入数据。

接下来我们来说一下空值(NULL)的问题。
如果想在查询语句中将空值输出为0,可以使用nvl函数。
nvl 函数从两个表达式返回一个非空值。
语法为 NVL(eExpression1 , eExpression2 )。
如果 eExpression1 为 null,则返回 eExpression2 例如:
sql 选择 nvl(a.name, 'empty') 作为名称 来自学生a 通过 a.ID = b.ID 加入学校 b
请注意,两个参数的类型必须匹配。

最后我们来说一下Oracle中的char和varchar2 数据类型。
char的长度是固定的,而varchar2 的长度是可以改变的。
例如,存储字符串“test”,对于char(1 0),无论“test”占用多少字节,都会占用1 0个字节。
对于varchar2 (1 0)类型来说,如果“test”只占用4 个字节,那么它只占用4 个字节的空间。

区别就在这里。
char是固定长度的,而varchar2 是可变长度的。

史上最全Redis面试题,让面试官问无可问(附答案)

嗯...Redis就是这个东西...它是Remote Dictionary.Server...简单来说Redis...它是一个内存数据库...纯内存...非常高性能...2 02 2 年...每秒可以处理超过1 0万次读写操作...非常快...
它的优点是什么? ...比如...性能极高...支持多种数据结构...有字符串、列表、集合、排序集...还有哈希...数据还可以持久化...可以保存到磁盘...防止数据丢失...还有内存数据集大小限制...数据淘汰策略...
但是...也有缺点...数据库容量受物理内存限制...如果数据量太大...比如...2 000万条数据MySQL里有...你只放2 0万条热数据存入Redis...不适合海量数据的高性能读写...这样会导致集群不可用...
相比Memcached...Redis支持更丰富的数据类型...不只是简单的键值对...还可以继续...Memcached不能...所以...高并发下...有时候单线程Redis比多线程memcached效率更高...
为什么不呢Redis官方提供Windows版本吗? ...可能是因为Linux版本稳定...用户很多...不需要专门开发Windows版本...避免兼容性问题...
字符串类型值可以存储多大? ...最大5 1 2 M...
为什么Redis将所有数据保存在内存中? ...用于快速读取和写入...异步写入磁盘留...
如何实现Redis集群解决方案? ...有主从复制、哨兵模式、集群模式...比如...2 02 2 年...如果某个节点出现故障...集群缺少一定的槽位范围...整个集群将不可用...
Redis适合哪些场景? ...会话缓存、整页缓存、队列、排行榜/计数器、发布/订阅...
支持哪些 Java 客户端? ...Radisson、Radisson、Lettuce...官方推荐使用Radisson...
Radisson 和 Redis 是什么关系? ... Radisson是Redis的分布式、可扩展的Java数据结构实现... Jedis vs Radisson ... Jedis功能齐全... Radisson注重分布式和可扩展... Redis Cluster使用哈希槽的概念,将数据均匀分布在集群节点之间... 最大节点数为1 6 3 8 4 ...
Redis中管道有什么用? ...一次发送多个命令...提高效率...Redis事务...对命令进行排序并按顺序执行...不会被其他命令打断...Rediskey过期时间和永久有效性...使用EXPIRE和PERSIST命令设置...
Redis是如何进行内存优化的? ...使用哈希表存储数据...
Redis回收过程...跟踪内存使用情况...超过限制时...根据策略回收内存...
Redis提供多种锁定策略...如互斥锁、分布式锁...
使用setNx强制分布式锁并终止...缺点可能包括死锁和性能问题是...
使用链表结构实现异步队列...通过rpush准备消息,通过lpop消费消息...
什么是缓存项? ...如何避免这种情况? ...现金雪崩? ...如何避免这种情况? ...包括缓存空结果、二级缓存以及过期时间的正确设置...
Redis与Memcached的区别...数据类型支持、持久化、并发模型...
Redis常见性能问题...内存管理、网络延迟...解决方案...优化内存使用、调整配置参数...
Redis的数据淘汰策略...LFU、LRU、TTL...
Redis中的数据结构有哪些? ...String、List、Set、SortedSet、Hash...
Redis是如何实现延迟队列的? ...通过设置过期时间或使用计划任务...
好的...就是这样...可能有点长...