数据分析师面试常见问题及行为面试题答案.docxVIP

  • 0
  • 0
  • 约5.83千字
  • 约 19页
  • 2026-02-15 发布于福建
  • 举报

数据分析师面试常见问题及行为面试题答案.docx

第PAGE页共NUMPAGES页

2026年数据分析师面试常见问题及行为面试题答案

一、技术能力测试(共5题,每题10分,总分50分)

题目1:SQL查询优化(10分)

问题描述:某电商平台用户表(user)包含字段:user_id(用户ID)、reg_date(注册日期)、last_login(最后登录日期)、city(城市)、device_type(设备类型)。订单表(order)包含字段:order_id(订单ID)、user_id(用户ID)、order_date(订单日期)、amount(订单金额)。请写出以下SQL查询语句,并说明优化方法:

1.查询2025年1月注册,且在过去30天内登录过的北京用户,按订单金额降序排列,返回用户ID和总订单金额。

2.查询每个城市的用户平均订单金额,只显示平均金额大于500的城市。

答案与解析:

1.SQL查询:

sql

SELECT

u.user_id,

SUM(o.amount)AStotal_amount

FROM

useru

JOIN

orderoONu.user_id=o.user_id

WHERE

u.reg_dateBETWEEN2025-01-01AND2025-01-31

ANDu.last_login=DATE_SUB(CURDATE(),INTERVAL30DAY)

ANDu.city=北京

GROUPBY

u.user_id

ORDERBY

total_amountDESC;

优化方法:

-添加索引:在user表的reg_date、last_login、city字段上创建组合索引

-使用分区表:按注册日期分区user表,按月份分区order表

-优化JOIN:确保user_id字段有索引

-考虑缓存:对于高频查询的注册日期范围,可使用Redis缓存结果

2.SQL查询:

sql

SELECT

u.city,

AVG(o.amount)ASavg_amount

FROM

useru

JOIN

orderoONu.user_id=o.user_id

GROUPBY

u.city

HAVING

AVG(o.amount)500;

优化方法:

-使用子查询先过滤出高价值订单

-创建物化视图保存城市平均金额计算结果

-为city字段添加索引

-考虑使用窗口函数优化分组计算

题目2:Python数据分析(10分)

问题描述:给定以下DataFrame,请用Python完成以下任务:

python

importpandasaspd

importnumpyasnp

data={

date:pd.date_range(start=2025-01-01,periods=100,freq=D),

sales:np.random.randint(100,1000,100),

traffic:np.random.randint(1000,10000,100),

conversion:np.random.random(100)0.1

}

df=pd.DataFrame(data)

1.计算每个季度的销售额和流量总和,结果保留两位小数。

2.绘制销售额和流量趋势图,使用不同颜色区分,并添加标题和图例。

3.找出转化率最高的5天,并返回日期和转化率。

答案与解析:

1.代码实现:

python

计算每个季度的销售额和流量总和

df[quarter]=df[date].dt.to_period(Q)

summary=df.groupby(quarter).agg({

sales:sum,

traffic:sum

}).round(2)

print(summary)

解析:

-使用to_period(Q)将日期转换为季度

-groupby按季度分组

-agg进行聚合计算并保留两位小数

2.代码实现:

python

importmatplotlib.pyplotasplt

plt.figure(figsize=(12,6))

plt.plot(df[date],df[sales],label=Sales,color=blue)

plt.plot(df[date],df[traffic],label=Traffic,color=orange)

plt.title(SalesandTrafficTrends)

plt.xlabel(Date)

plt.ylabel(Value)

plt.legend()

plt.xticks(rotation=45)

plt.tight_layout()

plt

文档评论(0)

1亿VIP精品文档

相关文档