阿里巴巴-数据科学-技术面经
面试过程
- 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种降低计算复杂度的方案。
#软件开发笔面经#