- 0
- 0
- 约5.83千字
- 约 19页
- 2026-02-15 发布于福建
- 举报
第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)