2026年数据分析岗位笔试试题(附答案)_第1页
2026年数据分析岗位笔试试题(附答案)_第2页
2026年数据分析岗位笔试试题(附答案)_第3页
2026年数据分析岗位笔试试题(附答案)_第4页
2026年数据分析岗位笔试试题(附答案)_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年数据分析岗位笔试试题(附答案)第一部分:单项选择题(本部分共15题,每题2分,共30分。每题只有一个选项符合题意)1.在数据分析的探索性阶段(EDA),当数据分布呈现明显的右偏(正偏)时,以下哪一种统计量最能代表该组数据的“中心趋势”?A.算术平均值B.中位数C.众数D.几何平均值2.在Python的Pandas库中,给定一个DataFrame`df`,若要删除所有包含缺失值(NaN)的行,应该使用以下哪个方法?A.`df.dropna(axis=1)`B.`df.dropna(how='all')`C.`df.dropna()`D.`df.fillna(0)`3.在SQL查询中,关于窗口函数`RANK()`和`DENSE_RANK()`的区别,下列描述正确的是?A.`RANK()`生成连续的排名,如1,2,3,4B.`DENSE_RANK()`遇到相同数值时会跳过后续排名,如1,2,2,4C.`RANK()`遇到相同数值时会跳过后续排名,如1,2,2,4D.两者在处理并列排名时的逻辑完全一致4.某电商公司进行A/B测试,实验组的点击率是5%,对照组的点击率是4%,样本量均为10,000。进行双样本比例检验(Two-proportionZ-test)后,得到的P值为0.03。若显著性水平α=A.拒绝原假设,认为实验组与对照组点击率无显著差异B.拒绝原假设,认为实验组点击率显著高于对照组C.无法拒绝原假设,认为实验组与对照组点击率无显著差异D.拒绝原假设,认为实验组点击率显著低于对照组5.在数据清洗过程中,发现某数值型特征存在异常值。若数据分布近似正态分布,通常使用什么方法来识别异常值?A.四分位距法(IQRRule)B.3σC.决策树分类D.K-Means聚类6.关于数据库索引的优化,以下说法错误的是?A.索引会加快查询速度,但会降低写入(INSERT/UPDATE/DELETE)速度B.在经常用于WHERE子句的列上建立索引通常效果较好C.在区分度很低(如性别,只有男女两个值)的列上建立索引效果最好D.联合索引遵循“最左前缀原则”7.在Python中,使用NumPy计算两个数组`[1,2,3]`和`[4,5,6]`的内积(点积),结果是多少?A.`[4,10,18]`B.`32`C.`[5,7,9]`D.`14`8.在评估分类模型时,若数据集极度不平衡(例如欺诈检测中正样本极少),以下哪个指标是最不合适的?A.准确率B.精确率C.召回率D.F1-ScoreE.AUC-ROC9.某在线教育平台想要分析用户完课率。定义指标:分子是“完成课程的用户数”,分母是“注册课程的用户数”。发现该指标在周末突然下降,可能的原因不包括?A.周末服务器故障导致数据采集缺失B.周末大量新用户注册但尚未开始学习C.周末课程内容更新导致旧版本无法完成D.周末运营活动吸引了大量高质量用户10.在关系型数据库设计中,为了消除传递依赖,将表规范到第三范式(3NF),主要目的是?A.减少数据冗余B.提高查询速度C.增加数据安全性D.便于数据库备份11.在使用Matplotlib绘制图表时,若要在一个画布上绘制2×A.`plt.subplot(2,2,1)`B.`plt.subplot(1,2,1)`C.`plt.plot(2,2,1)`D.`plt.subplots(2,2,1)`12.关于留一交叉验证,下列描述正确的是?A.它的计算成本通常比K-Fold交叉验证低B.每次迭代只留下一个样本作为测试集,其余作为训练集C.它的模型评估方差通常较大D.它不适用于小样本数据集13.某用户在一段时间内的活跃天数序列为:`[1,0,1,1,0,1]`(1代表活跃,0代表不活跃)。计算该用户的“7日留存率”(假设第0天活跃,考察第7天是否活跃),基于该数据?A.100%B.66.7%C.50%D.无法计算14.在Python中,执行`print(round(2.675,2))`的结果是?A.2.67B.`2.68`C.2.60D.2.715.在RFM模型中,R、F、M分别代表?A.Reach,Frequency,MoneyB.Recency,Frequency,MonetaryC.Recency,Feedback,MonetaryD.Reach,Feedback,Money第二部分:多项选择题(本部分共5题,每题4分,共20分。每题有两个或两个以上选项符合题意,少选得2分,错选不得分)1.下列属于非结构化数据的是?A.数据库中的用户日志表B.服务器生成的文本日志文件C.用户上传的JPG图片D.存储在JSON格式中的配置文件E.社交媒体上的评论文本2.在Pandas中,对于DataFrame`df`,执行`df.groupby('Category')['Sales'].agg(['sum','mean'])`操作,以下说法正确的是?A.会返回一个SeriesB.会返回一个DataFrameC.结果的索引将是'Category'列的唯一值D.结果的列名将包含'sum'和'mean'E.如果'Sales'列包含缺失值,计算时会自动忽略3.下列关于假设检验中的“第一类错误”和“第二类错误”,描述正确的有?A.第一类错误也称为“弃真”,即原假设为真却被拒绝B.第二类错误也称为“取伪”,即原假设为假却被接受C.样本量固定时,无法同时降低第一类错误和第二类错误的概率D.显著性水平α越大,犯第一类错误的概率越小E.增加样本量可以同时降低两类错误的概率4.在数据仓库建模中,维度表的特征通常包括?A.空间占用大B.记录数相对较少C.包含大量的描述性属性(文本)D.经常被连接,是查询的入口E.数据更新频繁(如每秒都在变)5.使用线性回归模型时,若发现残差图呈现“漏斗形”(异方差性),可以采取的补救措施包括?A.对因变量Y进行对数变换B.对自变量X进行多项式扩展C.使用加权最小二乘法(WLS)D.增加正则化项(L1/L2)E.删除部分异常数据点第三部分:填空题(本部分共10题,每题3分,共30分)1.在集合论中,若事件A发生的概率为0.6,事件B发生的概率为0.5,且A与B互斥,则A与B同时发生的概率为\_\_\_\_\_\_。2.在SQL中,若要查询表`employees`中`salary`字段排名前10的员工,可以使用`SELECT*FROMemployeesORDERBYsalaryDESC\_\_\_\_\_\_10;`。3.在Python的`scipy.stats`模块中,用于计算皮尔逊相关系数的函数是\_\_\_\_\_\_。4.某产品的销售额从去年的100万增长到今年的150万,其同比增长率为\_\_\_\_\_\_%。5.在数据可视化中,用于展示数据中各部分占整体比例关系的图表通常称为\_\_\_\_\_\_图。6.在Pandas中,若要将一个字符串类型的列`date_col`转换为datetime类型,应使用`pd.\_\_\_\_\_\_(df['date_col'])`。7.决策树算法中,用于衡量节点纯度的指标包括基尼系数和\_\_\_\_\_\_。8.在Linux系统中,查看文件前20行内容的命令是\_\_\_\_\_\_。9.在正则表达式中,匹配任意一个数字字符的符号是\_\_\_\_\_\_。10.标准正态分布的均值μ为0,标准差σ为\_\_\_\_\_\_。第四部分:简答题(本部分共4题,每题10分,共40分)1.请简述A/B测试(实验设计)的基本流程,并说明在实验分组时为什么要进行“分层抽样”或“随机化”?2.在SQL中,`LEFTJOIN`(左连接)和`INNERJOIN`(内连接)有什么区别?请给出一个具体的业务场景说明何时必须使用`LEFTJOIN`。3.什么是数据泄露?在机器学习建模过程中,有哪些常见的操作会导致数据泄露?应如何避免?4.解释什么是“辛普森悖论”。在数据分析中,当出现分组趋势与整体趋势相反时,作为数据分析师应如何处理和解读?第五部分:综合应用题(本部分共3大题,共80分)1.SQL综合查询题(25分)现有数据库表结构如下:`users`(用户表):`user_id`(INT,主键),`city`(VARCHAR,城市),`register_date`(DATE,注册日期)`orders`(订单表):`order_id`(INT,主键),`user_id`(INT,外键),`amount`(DECIMAL(10,2),订单金额),`order_date`(DATE,下单日期)请写出SQL查询语句,完成以下需求:(1)查询2025年注册用户数量排名前3的城市,以及对应的注册用户数。(8分)(2)查询每个用户的总消费金额、总订单数。只展示总消费金额大于1000元的用户。(8分)(3)查询在2025-10-01至2025-10-31期间,每个城市的日均订单金额(即该城市该期间总订单金额/总天数)。注意:若某城市在该期间无订单,则不显示。(9分)2.Python数据分析处理题(25分)假设你拿到了一份某App的用户活跃日志数据`user_activity.csv`,包含以下字段:`user_id`:用户ID`date`:活跃日期(格式YYYY-MM-DD)`duration`:活跃时长(秒)请使用Python(Pandas)完成以下任务:(1)读取数据,并将`date`列转换为datetime类型。计算该数据集的时间跨度(即最大日期与最小日期的差值)。(5分)(2)统计每个用户的`user_id`的活跃天数,并找出活跃天数最多的Top5用户。(8分)(3)定义“周活跃用户”为:在一周内(周一到周日)至少活跃一次的用户。请计算数据集中每一周的周活跃用户数(提示:按年份和周数进行分组)。(12分)3.业务分析与综合案例题(30分)背景:某生鲜电商APP最近上线了“会员plus”服务(付费会员,每月19元,享受免运费及9折优惠)。上线一个月后,产品经理让你分析该功能的上线效果。数据说明:`exp_group`:实验组(开通了会员plus功能入口)vs对照组(未开通入口,但功能在后台保留)。`user_id`:用户唯一标识。`order_count`:月订单数。`gmv`:月成交总额。`shipping_fee`:月运费总额。`is_member`:是否开通会员(布尔值)。问题:(1)请构建一个评估指标体系,列出至少4个关键指标(KPI),并说明其含义及计算公式。(12分)(2)产品经理发现实验组的GMV(成交总额)显著高于对照组,认为功能非常成功。你深入分析后发现,实验组的人均订单量并没有显著提升。请分析GMV升高的可能原因,并说明如何验证你的假设?(10分)(3)如果该功能要全面推广,但在全面推广前需要预估ROI(投资回报率)。已知会员月费19元,假设全站100万活跃用户,预计10%的转化率。请计算预期的月度增量收入上限。同时,为了保证ROI>1,该功能每月带来的额外GMV(扣除运费减免和折扣成本后)至少需要达到多少?(8分)参考答案及详细解析第一部分:单项选择题1.B解析:在右偏分布中,存在极大的长尾值(异常高值),会拉高算术平均值,使其偏离数据的中心。中位数是位于中间位置的数,不受极端值影响,更能代表此类数据的中心趋势。2.C解析:`df.dropna()`默认参数`axis=0`(删除行)和`how='any'`(只要有一个NaN就删除该行),符合题意。A是删除列,B是全为NaN才删除,D是填充。3.C解析:`RANK()`并列排名会占用名次,如1,2,2,4;`DENSE_RANK()`并列排名不占用名次,如1,2,2,3。4.B解析:P值0.03小于显著性水平0.05,因此拒绝原假设(原假设通常是两组无差异)。由于实验组5%>对照组4%,结论是实验组显著高于对照组。5.B解析:3σ6.C解析:索引的建立需要考虑区分度。如果列的基数很低(如性别,只有两个值),索引往往无法有效过滤数据,甚至因为回表操作降低查询效率,优化器通常不会选择此类索引。7.B解析:内积计算公式为1×8.A解析:在极度不平衡数据中,如果模型全部预测为负类(多数类),准确率依然会很高(如99%),但这没有意义。此时应关注Precision,Recall,F1或AUC。9.D解析:A、B、C均可能导致指标下降。D选项“吸引了大量高质量用户”通常会提升完课率或至少维持稳定,不会导致下降。10.A解析:范式的主要目的是为了减少数据冗余和避免更新异常。11.A解析:`subplot(rows,cols,index)`,所以是`plt.subplot(2,2,1)`。12.B解析:留一法每次留一个样本做测试,其余做训练。其计算量大(等于样本数量),评估方差较小(因为训练集几乎就是全集),但计算成本高。13.D解析:序列长度为6,无法计算第7天的数据。14.A解析:这是Python浮点数表示的经典问题(IEEE754标准),2.675在计算机中可能被存储为2.674999...,因此`round`函数会向偶数舍入,结果为2.67。15.B解析:RFM模型中,R(Recency)最近一次消费时间,F(Frequency)消费频率,M(Monetary)消费金额。第二部分:多项选择题1.B,C,E解析:非结构化数据是指没有固定预定义模型的数据,如文本、图片、音频、视频等。A是结构化数据,D是半结构化数据。2.B,C,D,E解析:`agg`返回DataFrame;索引是分组的列;列名是聚合函数名;Pandas默认忽略NaN进行计算。3.A,B,C,E解析:α是犯第一类错误的概率上限,α越大,犯第一类错误概率越大,所以D错。4.B,C,D解析:维度表通常描述“谁、什么、哪里、何时”,记录数相对事实表少,包含描述性文本。事实表才是空间占用大、数据更新频繁。5.A,C解析:异方差性指残差方差不恒定。对Y取对数可以压缩尺度,缓解异方差;加权最小二乘法(WLS)是专门处理异方差的方法。B是解决非线性问题,D是解决过拟合问题。第三部分:填空题1.0解析:互斥意味着不可能同时发生,P(2.LIMIT解析:SQL标准语法中常用LIMIT(MySQL/PostgreSQL/SQLite),SQLServer用TOP,Oracle用ROWNUM。此处填LIMIT最为通用。3.pearsonr解析:`fromscipy.statsimportpearsonr`。4.50解析:(1505.饼解析:Piechart。6.to_datetime解析:`pd.to_datetime()`。7.信息增益/熵解析:ID3使用信息增益(基于熵),CART使用基尼系数。8.head-n20解析:或者`head20`。9.\d解析:正则中`\d`匹配数字。10.1解析:标准正态分布N(第四部分:简答题1.答:A/B测试基本流程:1.明确目标:确定要优化的指标(如点击率、转化率)。2.提出假设:例如“修改按钮颜色能提高点击率”。3.实验设计:确定样本量、分组方式、流量分配比例、测试时长。4.随机分组:将用户随机分为实验组和对照组,确保除实验变量外其他条件一致。5.实施实验:上线实验版本,收集数据。6.假设检验:计算统计量(如t-test,chi-square),得到P值。7.得出结论:根据P值判断是否显著,决定全量上线、回滚或继续迭代。随机化/分层抽样的原因:为了保证实验组和对照组在统计上是可比的,消除混杂变量的影响(如用户设备、地域、新老用户等)。如果不随机,可能导致“辛普森悖论”或选择性偏差,使得实验结果无法归因于功能改动。2.答:区别:`INNERJOIN`(内连接):只返回两个表中连接字段匹配的行。如果某行在另一表中没有匹配,则不显示。`LEFTJOIN`(左连接):返回左表(FROM子句后的表)的所有行,即使右表中没有匹配的行。未匹配的部分用NULL填充。业务场景:计算“所有用户的订单数”。如果我们有一张`Users`表(所有用户)和`Orders`表(有订单的用户)。使用`INNERJOIN`:只会统计出下过订单的用户及其订单数,未下单用户会丢失。使用`LEFTJOIN`:可以保留所有用户,未下单用户的订单数显示为0或NULL,这是计算“全站用户转化率”或“零购用户占比”时的必要操作。3.答:定义:数据泄露是指在模型训练过程中,模型使用了在预测时本来无法获取到的数据信息,导致评估指标虚高,但模型在实际上线后表现很差。常见操作及避免方法:1.在拆分训练集/测试集之前进行数据预处理:错误:对全数据进行归一化或填充缺失值,再拆分。导致测试集的信息(如均值、最大值)泄露给了训练集。正确:先拆分,再分别对训练集fit,transform测试集。2.特征工程中使用未来信息:错误:计算“用户平均消费金额”时,使用了测试期内的数据;或者在时间序列预测中,用t时刻的数据去预测t时刻。正确:严格按时间切分,特征只能使用截止到t−3.交叉验证处理不当:错误:在K-Fold之前对全数据进行了降维(如PCA)。正确:将降维等步骤包含在Pipeline的每一步Fold内部。4.答:定义:辛普森悖论是指当分组比较数据时,各组内的趋势与合并后的总趋势相反的现象。这通常是因为分组变量是混杂因子,且各组样本占比不同导致的。处理与解读:1.不要只看总数:作为分析师,不能仅凭汇总数据下结论,必须进行下钻分析。2.识别混杂因子:分析是否存在影响结果的潜在变量(如性别、病情轻重、渠道来源)。3.标准化/加权处理:对数据进行加权平均或标准化处理,消除样本结构差异带来的影响。4.因果推断:在解读数据时,明确指出分组趋势,探究导致反向趋势的根本原因(例如,某种药在重症和轻症中都好,但汇总数据差,可能是因为该药大多被用于重症,而对照组多为轻症)。第五部分:综合应用题1.SQL综合查询题(1)```sqlSELECTcity,COUNT(*)asuser_countFROMusersWHEREYEAR(register_date)=2025GROUPBYcityORDERBYuser_countDESCLIMIT3;```(2)```sqlSELECTu.user_id,SUM(o.amount)astotal_amount,COUNT(o.order_id)astotal_ordersFROMusersuLEFTJOINordersoONu.user_id=o.user_idGROUPBYu.user_idHAVINGtotal_amount>1000;```(3)```sqlSELECTu.city,SUM(o.amount)/COUNT(DISTINCTo.order_date)asavg_daily_amountFROMusersuJOINordersoONu.user_id=o.user_idWHEREo.order_dateBETWEEN'2025-10-01'AND'2025-10-31'GROUPBYu.city;```(注:这里假设题目要求的是“有订单的日期”作为分母,或者直接除以31天。按严格业务逻辑,通常除以当月天数31。若按数据实际日期去重计数,则是`COUNT(DISTINCTorder_date)`。上述SQL采用去重日期逻辑)2.Python数据分析处理题```pythonimportpandasaspd#(1)读取数据并转换类型,计算时间跨度df=pd.read_csv('user_activity.csv')df['date']=pd.to_datetime(df['date'])time_span=df['date'].max()-df['date'].min()print(f"时间跨度:{time_span.days}天")#(2)统计每个用户活跃天数,Top5#去重,因为同一天可能有多条记录unique_active_days=df.drop_duplicates(subset=['user_id','date'])user_active_counts=unique_active_days.groupby('user_id')['date'].count().reset_index(name='active_days')top_5_users=user_active_counts.sort_values('active_days',ascending=False).head(5)print(top_5_users)#(3)计算周活跃用户数#提取年份和周数#isocalendar()返回(year,week,weekday)df['year']=df['date'].dt.isocalendar().yeardf['week']=df['date'].dt.isocalendar().week#按年、周、用户去重,计算每周去重后的用户数weekly_wau=df.drop_duplicates(subset=['year','week','user_id']).groupby(['year','week'])['user_id'].count().reset_index(name='WAU')print(weekly_wau)```3.业务分析与综合案例题(1)指标体系:会员渗透率:开通会员的用户数/活跃用户数。反映功能的受欢迎程度。会员复购率:会员用户中产生二次购买的比例。反映会员对用户留存的影响。客单价(ARPU):总GMV/总用户数。反映用户价值变化。投入产出比(ROI):(会员费收入+增量GMV利润)/(运营成本+优惠成本)。反映商业可行性。运费补贴率:会员节省的运费总额/会员订单总额。反映优惠力度。(2)GMV升高原因分析:原因假设:虽然人均订单量没变,但客单价提升了。可能是因为:1.凑单行为:为了免运费(会员免运),用户倾向于将多个订单合并,或单次购买更多商品以达到免邮门槛。2.价

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论