阿里巴巴-数据科学-技术面经
面试过程
- SQL题目:基于如下数据为电商平台中用户每日订单金额,找出各天订单金额排名前三名的用户,表名temp1。
WITH ref_amt AS (
SELECT
dt,
user_id,
SUM(order_amt) AS order_amt_sum
FROM temp1
GROUP BY dt, user_id
)
SELECT
dt,
user_id,
order_amt_sum,
DENSE_RANK() OVER(PARTITION BY dt ORDER BY order_amt_sum DESC) AS drank
FROM ref_amt
WHERE drank <= 3;
- SQL题目:找出连续3天及以上订单金额大于100的用户,表名temp2。
WITH ref_amt AS (
SELECT
user_id,
dt,
SUM(order_amt) AS order_amt_sum
FROM temp2
GROUP BY user_id, dt
),
ref_min_date AS (
SELECT
user_id,
MIN(dt) AS dt_min
FROM ref_amt
GROUP BY user_id
),
cmb_date AS (
SELECT
ref_amt.user_id,
ref_amt.dt,
ref_min_date.dt_min,
ref_amt.order_amt_sum,
DATEDIFF(ref_amt.dt, ref_min_date.dt_min) AS dt_diff
FROM ref_amt
LEFT JOIN ref_min_date ON ref_amt.user_id = ref_min_date.user_id
)
SELECT DISTINCT user_id
FROM cmb_date
GROUP BY user_id, dt_diff
HAVING COUNT(1) >= 3;
- Python题目:小明在双十一晚会上抽奖赢得了一次天猫超市免单的机会,享受在一个包裹内最大体积V,最大重量M内免单。假设商品i,体积Vi,重量Mi,库存Si,价格Pi,请你帮助小明在购物车里添置商品使得总价值最大。
class Solution:
def maxVal(self, Vmax: int, Mmax: int, items: pd.DataFrame) -> int:
max_val = 0
num_items = [0] * len(items.index)
num_items[0] = min(items.iloc[0, 2], Vmax // items.iloc[0, 0], Mmax // items.iloc[0, 1])
max_val = num_items[0] * items.iloc[0, 3]
for idx in range(1, len(items.index)):
V = items.iloc[idx, 0]
M = items.iloc[idx, 1]
S = items.iloc[idx, 2]
P = items.iloc[idx, 3]
V_lft = Vmax - sum(x * y for x, y in zip(num_items, items['V']))
M_lft = Mmax - sum(x * y for x, y in zip(num_items, items['M']))
num_items[idx] = min(S, V_lft // V, M_lft // M)
if sum(x * y for x, y in zip(num_items, items['P'])) > max_val:
max_val = sum(x * y for x, y in zip(num_items, items['P']))
return max_val
- 算法理论题目(选择题):
- 传统机器学习:基于树的算法是传统机器学习中常用的模型,包括Random Forest (RF),GBDT,XGBoost等。
- a. 简述RF,GBDT,XGBoost三种算法的异同。
- b. 分析RF、GBDT模型方差和偏差的来源和规模,并和树模型进行比较。
- c. 这些结论对模型选型有什么启示。
- a. 简述RF,GBDT,XGBoost三种算法的异同。
- b. 分析RF、GBDT模型方差和偏差的来源和规模,并和树模型进行比较。
- c. 这些结论对模型选型有什么启示。
- 深度学习:transformer是当今业界常用的网络结构之一,其核心是multi-head self-attention机制。
- a. 描述multi-head self-attention的结构。
- b. 假设数据中序列的长度为N,特征宽度为D,给出multi-head self-attention的计算复杂度。
- c. 简述2种降低计算复杂度的方案。
- a. 描述multi-head self-attention的结构。
- b. 假设数据中序列的长度为N,特征宽度为D,给出multi-head self-attention的计算复杂度。
- c. 简述2种降低计算复杂度的方案。
#软件开发笔面经#