面试经验分享-回忆版某小公司

说说你项目中数据仓库是怎么分层的,为什么要分层?

首先是ODS层,连接数据源和数据仓库,数据会进行简单的ETL操作,数据来源通常是业务数据库,用户日志文件或者来自消息队列的数据等

中间是核心的数据仓库层,可以细分为DWD,DIM,DWS层。

首先是DWD层主要负责对数据进行进一步测清洗规范化的操作,但是应该尽可能保持和ODS层相同的数据粒度,可以通过维度退化等方式,将维度表退化为事实表例如下单表,减少关联操作

DWS层的主要任务是对DWD层清洗后的数据进行加工,聚合,计算等操作,来满足更多业务场景需求,这一层的表通常是宽表,包含较多的业务相关字段

DIM层主要是根据维度模型建模星型模型雪花模型等,用于存储维度模型中的维度表数据例如商品,优惠券表等,目的是为了更好地进行数据分析

最后是ADS层,基于DWS的数据进行二次开发,针对业务场景和需求进行建模,其统计好的数据可以直接用于数据分析或者数据挖掘使用,比如用户留存率,最受欢迎商品top3等
怎么设计维度表和事实表

对于事实表,首先要确定业务流程,确定事实表的粒度和维度,通常一个事实表中的字段具有相同粒度,确认与其关联的维度表,确定用于度量的事实,常见的是数值类型和可加类型事实。

对于维度表,它存储的通常是离散型的数据,用于过滤数据,如果在维度表出现连续取值的数据要考虑将其放进事实表,要对维度进行合理的整合和拆分,在丰富维度属性的基础上维护维度的单一性,当维度表只有一个字段时,退化成事实表,可以减少关联次数,提高查询性能。
一道简单的SQL题,窗口函数实现top3


在工作中怎么实现多线程的

应该是考察简历中写的rabbitmq,回答的是和业务相关的,因为业务上涉及大量文件的存储转发,为了防止大文件堵塞进程,所以选用消息队列实现,通过消息传递处理进程,Java实现的
追问-如何避免重复消费

记录已处理消息:在消费者处理完消息后,记录一条日志或标记在数据库中,下次消费时检查该消息是否已被处理。
在Django中如何处理高并发

没答上来

应该是使用nginx,但是当时没负责这部分代码

Nginx在处理HTTP请求时,首先由Master进程接收到连接请求,然后将其分配给空闲的Worker进程。Worker进程通过事件循环处理请求,当请求涉及到I/O操作时,Worker进程会将其放入事件队列中,待事件触发时再处理。这种设计确保了Nginx即使在高并发情况下,仍然能够保持低资源消耗。

轮询(Round Robin):这是Nginx默认的负载均衡策略,它将请求依次分配到后端的每一台服务器,从而保证每台服务器的负载相对均衡。
用过爬虫么,有没有遇到过反爬,怎么处理

用过scrapy框架,爬过静态网页和动态网页,在爬取动态网也得时候有遇到过反爬,用过user_agent用户代理,通过配置随机更换请求头的用户代理实现,还可以在setting文件里通过IP代理实现,使用代理池实现。
用pandas处理数据有什么好处

pandas的dataframe能够很好的处理结构化和表格化数据,计算速度快,能够处理比较大量的数据,可以很容易的实现分组,聚合,排序等操作,并且支持多种文件读写,包括本地文件,SQL返回的数据等,并且基本不需要数据转换步骤。
用过那些大模型

扩散模型,clip,gpt
HIVE sql的排序函数

order by sort by
追问两者区别

‌ORDER BY‌:ORDER BY用于对查询结果进行全局排序,即将整个结果集按照指定的列进行升序或降序排列。它通常跟在SELECT语句的末尾,例如:SELECT * FROM table_name ORDER BY column_name ASC。‌

‌SORT BY‌:在一些特定的数据库系统中,SORT BY用于局部排序,它会在每个Reducer端进行排序,确保每个Reducer输出的数据是有序的,但不一定保证全局有序。例如,在Hive中,SORT BY通常用于分布式计算环境中,对数据进行预处理或中间步骤的排序。‌

效率和适用场景

‌ORDER BY‌:由于其需要对所有数据进行全局排序,当处理大量数据时可能会导致内存溢出,因此适合处理小数据量的情况。‌

‌SORT BY‌:通过生成多个临时文件进行局部排序,减少了内存的使用,适合处理大数据量的排序任务。每个Reducer的输出局部有序,但全局不一定有序。

相关推荐
北京_宏哥6 分钟前
🔥Jmeter(二十五) - 从入门到精通 - JMeter函数 - 下篇(详解教程)
前端·jmeter·面试
草莓熊Lotso14 分钟前
【C语言操作符详解(一)】--进制转换,原反补码,移位操作符,位操作符,逗号表达式,下标访问及函数调用操作符
c语言·经验分享·笔记
OpenC++18 分钟前
【C++QT】Layout 布局管理控件详解
c++·经验分享·qt·leetcode
东方翱翔20 分钟前
第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组
算法·职场和发展·蓝桥杯
JiangJiang27 分钟前
🧠 面试官:受控组件都分不清?还敢说自己写过 React?
前端·react.js·面试
Jenlybein28 分钟前
[ Javascript 面试题 ]:提取对应的信息,并给其赋予一个颜色,保持幂等性
前端·javascript·面试
夜熵29 分钟前
JavaScript 中的 this
前端·面试
Synmbrf33 分钟前
说说平时开发注意事项
javascript·面试·代码规范
小智疯狂敲代码41 分钟前
Spring MVC-DispatcherServlet 的源码解析
java·面试
A达峰绮1 小时前
设计一个新能源汽车控制系统开发框架,并提供一个符合ISO 26262标准的模块化设计方案。
大数据·开发语言·经验分享·新能源汽车