当前位置: 首页 > news >正文

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

说说你项目中数据仓库是怎么分层的,为什么要分层?
首先是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的输出局部有序,但全局不一定有序。

http://www.lryc.cn/news/522719.html

相关文章:

  • WebSocket——推送方案选型
  • 山石防火墙命令行配置示例
  • LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)
  • Leetcode 983. 最低票价 动态规划
  • Kafka——两种集群搭建详解 k8s
  • springboot使用websocket
  • Redis的安装和配置、基本命令
  • Rnote:Star 8.6k,github上的宝藏项目,手绘与手写画图笔记,用它画图做笔记超丝滑,值得尝试!
  • python如何解析word文件格式(.docx)
  • 「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程(配套案例数据)》专栏上线了
  • 使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址
  • 零基础构建最简单的 Tauri2.0 桌面项目 Star 88.4k!!!
  • 智能科技与共情能力加持,哈曼重新定义驾乘体验
  • 猫贫血吃什么能快速补血?
  • 微服务拆分
  • Android SystemUI——车载CarSystemUI加载(八)
  • 2025年编程语言热度分析:Python领跑,Go与Rust崛起
  • 前缀和 (一维 二维)
  • 精选算法合集
  • HackMyVM-Klim靶机的测试报告
  • C++内存分布
  • mysql主从复制sql进程中断,报错Tablespace is missing for table ……
  • STM32 FreeRTOS 信号量
  • Codemirror6个人使用心得总结
  • Ruby语言的软件开发工具
  • OpenHarmony API 设计规范
  • ESP8266 AP模式 网页配网 arduino ide
  • OpenCV基础:获取子矩阵的几种方式
  • C++ 之多线程相关总结
  • EF Core全局查询筛选器