当前位置: 首页 > 面试经验 >

阿里巴巴-数据科学-技术面经

优质
小牛编辑
70浏览
2024-08-13

阿里巴巴-数据科学-技术面经

面试过程

  1. 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;

  1. 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;

  1. 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

  1. 算法理论题目(选择题)
  • 传统机器学习:基于树的算法是传统机器学习中常用的模型,包括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种降低计算复杂度的方案。

#软件开发笔面经#
 类似资料: