开头
大家好,我是程序员Manor,我希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。
事情是这样的:
期末考后,我在实习僧试着投了投字节的实习岗,没想到收到了校招的面试邀请
实际上算法这块我还是个菜狗 没办法机会难得,不知道下次能不能这么走运 只能硬着头皮上了……!
以下是我做的一些面试准备:
开场白
面试官你好,我是面试咱们公司大数据开发岗位的xxx,就读于xx大学的数据科学与大数据专业,2022年毕业,在校期间做过2个大型数仓项目,其中教育数仓项目通过大数据处理分析技术,为企业发展提供切实可行的中观指导意见。除了学习之外,我也喜欢写博客,复盘所学的知识,输出自己的成长经历,以及阅读与自己所学方向相关的书籍,如阿里巴巴的大数据之路这本书 。十分感谢贵公司提供的这次面试机会,期望有幸能够加入贵公司,成为大家的工作伙伴。
教育数仓项目介绍
项目背景:受互联网 概念,疫情影响,在线教育,K12教育等发展火热,越来越多的平台机构涌现。但是由于信息的共享利用不充分,导致企业多年积累了大量数据,而因为信息孤岛的问题,一直没有对这些数据进一步挖掘分析,因此也不能给企业的管理决策层提供有效的数据支撑。 项目价值:我们做的这个教育大数据分析平台项目,将大数据技术应用于教育行业,用擅长分析的OLAP系统为企业经营提供数据支撑。 实现思路:建立企业的数据仓库,把分散的业务数据预处理,其次根据业务需求从海量的用户行为数据挖掘分析,定制出多维的数据集合,形成数据集市,供各个场景主题使用,最后用BI工具,进行前端展示。 技术架构:mysql,sqoop,基于CM的Hive,Oozie和FineBi。由于OLTP系统中数据大多存储在mysql,所以我们最终选择Sqoop作为导入导出工具,抽取数据到数仓,并使用基于CM管理的Hive进行数据清洗+分析,然后sqoop导出到mysql,最后用FineBI展示OLAP的数据分析结果。 三大痛点:一是数据量太大问题,传统数据库无法满足;二是系统多,数据分散问题,无法解决数据孤岛问题;三是,统计工作量太大,分析难度高问题,无法及时为企业提供数据参考。
可能问到的面试题 可能问到的面试题2
物流数仓项目介绍
项目背景:本项目基于一家大型物流公司研发的智慧物流大数据平台。该物流公司是国内综合性快递、物流服务商,并在全国各地都有覆盖的网点。 业务规模:经过多年的积累、经营以及布局,拥有大规模的客户群,日订单达 上千万。如此规模的业务数据量,传统的数据处理技术已经不能满足企业的经营分析需求。 项目价值:公司需要基于大数据技术构建数据中心,从而挖掘出隐藏在数据背后的信息价值,为企业提供有益的帮助,带来更大的利润和商机。 项目细节: 物流环节:大数据项目主要围绕订单、运输、仓储、搬运装卸、包装以及流通加工等物流环节中 涉及的数据、信息等。 指导方向:通过大数据分析可以提高运输以及配送效率、减少物流成本、更有效地满足客户 服务要求,实现快速、高效、经济的物流,并针对数据分析结果,提出具有中观指导意义的解决方案。 应用案例:针对物流行业的特性,大数据应用主要体现在车货匹配、运输路线优化、库存预测、设备修理预测、供应链协同管理等方面。
针对以上的物流企业痛点,我们给出对应的大数据架构解决方案: 数据源:关系型数据库Oracle和MySQL 采集:OGG和Canal分别将Oracle和MySQL的增量数据同步到Kafka集群存储:ETL计算之后分别存储到kudu,Elasticsearch,ClickHouse中 计算引擎:处理数据使用StructuredStreaming 技术亮点: 该项目具有完整Lambda 架构系统,有离线业务、也有实时业务 ClickHouse实时存储、计算引擎Kudu Impala准实时分析系统 以企业主流的Spark生态圈为核心技术,例如:Spark、Spark SQL、structured Streaming Elasticsearch 全文检索 SpringCloud 搭建数据服务
可能问到的面试题(1) 可能问到的面试题(2)
面试过程
1.自我介绍 2.简单介绍2个项目 项目选型 负责哪一部分 负责的部分是离线数仓部分 3.围绕项目问问题: 项目所使用的数据模型(问的是星型模型和雪花模型的区别,愣是半天没反应过来,害)
举例几个hive常用函数?
标准聚合函数:Count()、Sum()、Min()、MAX()或AVG(); Rank; Dense_Rank; Row_number; Cume_dist; Percent_Rank; NTile; Lead; Lag; First_Value; Last_Value;
ClickHouse和Hbase有什么区别 Hive和Hbase有什么区别
•Hive是通过构建元数据,映射HDFS文件构建成表,本质还是HDFS,实现离线大数据仓库 •Hbase是通过构建上层分布式内存,底层HDFS,实现大数据实时存储的NoSQL数据库
Hive和Mysql有什么区别 (内心os:啊这,为啥老问我这么多区别,现在仔细想想我应该回答的更完整才符合面试官的需求。)
如何处理Hive的数据倾斜 如何解决数据倾斜一类的问题,可参见这篇: Hive千亿级数据倾斜解决方案 描述一下Hive的MapReduce过程
mapreduce的三大阶段: map阶段:并行处理的阶段 shuffle阶段:从离开Mapper开启到进入Reduce之前的阶段 reduce阶段:汇总整理的阶段 mapreduce的八大步骤 设置MapReduce的输入InputFormat类型,默认为TextInputFormat 自定义map函数,得到TextInputFormat的k1,v1;经过处理后传出k2,v2 分区–默认根据k2决定map中的数据该发送到哪个reduce中 排序–默认根据k2进行字典排序 规约–默认没有此阶段,是优化手段,可以提前合并 分组–相同k2的value会放到同一个集合中 自定义reduce函数,讲分组得到的k2,v2转成k3,v3输出 设置输出的OutputFormat,默认采用TextOutputFormat,将结果输出到一个纯文本文件中
Hbase的设计原则 (没答完整,刚刚自己才写的面试题,小丑竟是我自己~)
业务原则:贴合业务,保证前缀是最常用的查询字段 唯一原则:每条rowkey唯一表示一条数据 组合原则:常用的查询条件组合作为Rowkey 散列原则:rowkey构建不能连续 长度原则:满足业务需求越短越好
最后一问:项目的数据流转
4.Java方面 java的基本数据类型有哪些???
java基本数据类型有boolean、byte、short、int、long、char、float、double等
说一下Java的多态和继承
继承 子类可以直接实现父类中的方法,有选择的扩展 多态 调用同一个方法展示出来不同的方式。
String、StringBuilder、StringBuffer的区别?
String:String类被final修饰不能被继承,String内部char[]被final修饰,字符串内容无法被修改 StringBuffer:可变字符串、效率低、线程安全; StringBuilder:可变字符序列、效率高、线程不安全;
5.Mysql的 一些问题 union和union all的区别 左连接和右连接 内连接和外连接 什么是最左前缀原则?什么是最左匹配原则
顾名思义,就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。 最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。 =和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式
innoDB啥。。。 没有复习过全军覆没。。。
结尾
我的想法是约到面试,才能从实战中提升
自己,
这次约上字节的面试是我没想到的,
时间有些仓促,很多东西没准备好,估计一面就得挂了
也仅作为一次正式面试前的练习,
熟悉熟悉面试流程,同时锻炼锻炼自己。