天天看點

網易2020校招筆試- 資料分析師(正式批)[試題整理]

5. 現在假設F是一個森林,B是由F轉換得到的二叉樹,F中有n個非終端結點,B中右指針域為空的結點有( )個?

正确答案: A

N+1

N-1

N+2

N

以隻有兩個節點的森林為例, N = 1, 轉換成二叉樹,兩個節點的右指針域都為空

11. 題目描述

使用者分析是電商資料分析中重要的子產品,在對使用者特征深度了解和使用者需求充分挖掘基礎上,進行全生命周期的營運管理(拉新—>活躍—>留存—>價值提升—>忠誠),請嘗試回答以下3個問題:

① 現在資料庫中有一張使用者交易表order,其中有userid(使用者ID)、orderid(訂單ID)、amount(訂單金額)、paytime(支付時間),請寫出對應的SQL語句,查出每個月的新客數(新客指在嚴選首次支付的使用者),當月有複購的新客數,新客當月複購率(公式=當月有複購的新客數/月總新客數)。

SELECT 
    order1.年月,
    order1.新客戶數 AS 每月新客戶數,
    IFNULL(order2.有複購的新客戶數, 0) AS 當月有複購的新客數,
    (IFNULL(order2.有複購的新客戶數, 0) / order1.新客戶數) AS 新客當月複購率
FROM
    (SELECT 
        年月, COUNT(userid) AS 新客戶數
    FROM
        (SELECT 
        userid, MIN(paytime), 年月
    FROM
        `order`
    GROUP BY userid) AS o1
    GROUP BY 年月) AS order1
        LEFT JOIN
    (SELECT 
        年月, COUNT(userid) AS `有複購的新客戶數`
    FROM
        (SELECT 
        o2.userid, COUNT(o2.userid) AS 次數, o2.年月
    FROM
        (SELECT 
        userid, MIN(paytime), 年月
    FROM
        `order`
    GROUP BY userid) AS o1, `order` o2
    WHERE
        o2.userid = o1.userid
            AND o2.年月 = o1.年月
    GROUP BY o2.userid) AS o3
    WHERE
        次數 >= 2
    GROUP BY 年月) AS order2 ON order1.年月 = order2.年月
ORDER BY order1.年月;
           

② 當你發現最近一周APP端新訪使用者當天轉化率(公式=新訪當天支付人數/新訪使用者數,新訪是指首次通路嚴選APP的裝置)環比最近4周日均轉化率大幅下跌(超30%),你會如何去探查背後的原因?請描述你的思路和其中涉及的關鍵名額

參考答案

a. 由于最近一周APP新訪使用者當天轉化率都大幅下跌,是以可以排除偶然事件的影響,判定是産品側出了問題需要改進。

b. 根據轉化率公式=新訪當天支付人數/新訪使用者數,首先判斷是不是在新訪使用者數不變的基礎上、新訪當天支付人數減少了?是哪些人群的支付人數減少了?這些人是否存在管道的差異?如果存在,那麼是哪個管道的人群轉化率降低了?是不是這個管道的素材出了問題?不同的管道對應不同的人群,是不是産品政策最近有改變導緻這個人群下單需求降低?可以通過檢視分管道新訪使用者數和轉化率進行判斷。

c. 然後繼續判斷,是不是新訪使用者數增多,但當天支付人數沒有增多。新訪使用者數增多是所有管道都增多還是個别管道增多?如果是個别管道新訪客增多,那說明産品前期營運做的不錯,對使用者是有一定吸引力的。但為什麼選擇下單的使用者少?是具體哪個功能子產品出了問題?是相關推薦的算法不夠精确還是購物車的設計不夠友善支付?可以檢視各管道的新訪使用者數,當天支付使用者數,各管道的使用者對各功能的使用情況來排查有問題的部分。

③ 在進行使用者營運之前,我們通常會對使用者進行分層,針對不同類型使用者實施差異化的營運政策和資源投入,請你幫助設計嚴選使用者分層的方案,包括關鍵特征的選擇,分層的方法,如涉及模型/算法,請說明選擇的算法類型、基本原理和步驟

a. 使用者分層指的是根據使用者不同的消費傾向與消費偏好,針對性的提供營銷和服務,以極化使用者價值。這裡使用者分層的具體業務目标是,便于進行全生命周期的營運管理(拉新、活躍、留存、價值提升、忠誠)

b. 為了便于進行營運管理,根據全生命周期的幾個階段進行使用者分層,以便對每個階段的使用者實施差異化的政策,将其向下個階段轉化。可以看到每個階段都是對使用者購物行為的一種描述,那麼根據使用者的購物模式來分層。根據使用者的消費金額、最近消費頻率、最近活躍天數、最近活躍行為等關鍵特征分為以下幾層:

客單≥500且最近七天有活躍(高品質使用者,防流失)

近30天購買頻次≥3且近7天未通路(活躍使用者,提高留存)

近7天通路頻次≥5且近7天未購買(需要價值提升)

七天内注冊使用者且無下單購買(新使用者需要開單)

客單≥500且近7天未通路(提高活躍度)

c. 由于消費金額/頻率/活躍天數這些都是連續型資料,且資料量較大,是以用Kmeans聚類算法。

12. 網易嚴選是網易旗下原創生活類自營電商品牌,深度貫徹“好的生活,沒那麼貴”的品牌理念。商品覆寫居家、餐廚、配件、服裝、洗護、母嬰、原生态飲食等幾大類目,兼具品質和成本效益,得到使用者的廣泛好評。若你是網易嚴選負責商品的資料分析師,當面對以下業務問題時,你會如何解決?

① 居家品類期望了解購買居家類目的使用者是哪群人,期望你幫助她進行品類使用者畫像的建構,以作為居家品類規劃和商品營運的參考,你會從哪些次元去完成類目使用者的刻畫?

  1. 建構居家品類使用者畫像的目的是,了解這類使用者的特征進而了解他們的需求,進而作為參考幫助營運給使用者提供差別化的對待、個性化的服務,達到提升使用者購物體驗進而提升平台流水的效果。
  2. 要具體的刻畫購買居家品類的使用者,要從和居家有關系的方面入手,涵蓋盡可能多的方面。根據以上具體業務目标,我選用以下次元描述購買居家類目的使用者:

    ①自然屬性 年齡,性别;

    ②社會屬性 職業,住在哪裡,婚戀狀況,教育程度;

    ③興趣屬性 喜歡進行的活動,花費時間最多的工作之外的活動,是否養寵物

    ④消費屬性 消費頻次,消費額,最喜歡購買哪個品牌的居家類商品,購買次數最多的居家類商品是什麼。這些資料平台本身容易獲得,對于個别資料如婚戀狀況、教育程度等可以通過問卷的形式收集得到。

② 如果需要選擇一批商品來吸引新使用者,你會從哪些次元進行選擇?請寫出次元,選擇的原因,對應的名額

  1. 從商品品類次元選,各種品類的商品都挑選,顯示出網易嚴選商品的齊全、種類多。涉及到的名額有,覆寫到的商品類目有多少、商品類目有哪些。
  2. 從商品品質次元選,顯示出網易嚴標明位的一大特點:品質優,這對于商品來說是一個硬核項。要直覺的表示商品品質不太容易,可以利用品牌效應,選大牌商品,列舉出網易嚴選平台上有多少垂直領域裡的大牌,突出平台的定位。涉及到的名額有:網易嚴選有多少大牌/專業品牌,具體到每個領域的大牌有哪些
  3. 從商品成本效益次元選,顯示出網易嚴標明位的另一大特點:成本效益高。涉及到的名額有:優質商品在網易嚴選的定價和在其他平台的定價對比
  4. 從商品好評率次元選,選好評率最高的,讓使用者的贊揚聲感染更多的使用者。涉

    及到的名額有:商品評價裡好評個數/評價總數

13.小易給定你數字A, B(A<B)和系數p, q。每次操作你可以将A變成A+p或者将p變成p*q。問至少幾次操作使得B<=A。

輸入描述:

 第一行資料組數  T ,  對于每組資料,一行四個整數  A , B , p , q 。 1 ≤ A , p , B ≤ 1 0 9 , 2 ≤ q ≤ 10 , 1 ≤ T ≤ 5 \begin{aligned} &\text { 第一行資料組數 } T, \text { 對于每組資料,一行四個整數 } A, B, p, q。\\ &1 \leq A, p, B \leq 10^{9}, 2 \leq q \leq 10,1 \leq T \leq 5 \end{aligned} ​ 第一行資料組數 T, 對于每組資料,一行四個整數 A,B,p,q。1≤A,p,B≤109,2≤q≤10,1≤T≤5​

T = int(input())

for i in range(T):
    A,B,p,q = map(int, input().split()) # how to read in the data
    k = 0
    while(A < B):
        if (A + p >= B):
            A = A + p
        else:
            p = p * q
        k = k + 1
    print(k)
           

14. 有三種葡萄,每種分别有a, b, c顆。有三個人,第一個人隻吃第1,2種葡萄,第二個人隻吃第2,3種葡萄,第三個人隻吃第1,3種葡萄。

适當安排三個人使得吃完所有的葡萄,并且且三個人中吃的最多的那個人吃得盡量少。

輸入描述:

第一行數字 T , T, T, 表示資料組數。接下來 T T T 行,每行三個數 a , b , c a, b, c a,b,c 1 ≤ a , b , c ≤ 1 0 18 , 1 ≤ T ≤ 10 1 \leq a, b, c \leq 10^{18}, 1 \leq T \leq 10 1≤a,b,c≤1018,1≤T≤10

輸出描述:對于每組資料,輸出一行一個數字表示三個人中吃的最多的那個人吃的數量。

import math
T = int(input())
for i in range(T):
    x,y,z = map(int, input().split())
    maxn = max(x,y,z)
    total= x + y + z
    if maxn // 2 >= total - maxn:
        print((maxn + 1) // 2)
    else:
        print((total + 2) // 3)
           

對于進位的操作:

t=int(input())
for _ in range(t):
    a,b,c=map(int,input().split())
    maxnum=max(a,b,c)
    total=a+b+c
    if maxnum//2>=total-maxnum:
        if maxnum%2==0:
            print(maxnum//2)
        else:
            print((maxnum+1)//2)
    else:
        if total%3==0:
            print(total//3)
        elif total%3==1:
            print((total+2)//3)
        else:
            print((total+1)//3)
           

15.

網易2020校招筆試- 資料分析師(正式批)[試題整理]
n = int(input())
for i in range(n):
    T = int(input())
    a = list(map(int, input().split()))
    i, j = 0, 1
    cur = 0
    while j < len(a) and i < len(a):
        while j < len(a) and sum(a[i:j]) <= a[j]:
            j += 1
        cur = max(cur, j - i)
        i = j
        j = i + 1
        
    print(cur)
           

16.

網易2020校招筆試- 資料分析師(正式批)[試題整理]
網易2020校招筆試- 資料分析師(正式批)[試題整理]
from collections import Counter
n,m = map(int,input().split())
salary = list(map(int,input().split()))
count_dict = Counter(salary)
for i in range(m):
    question = int(input().strip())
    print(count_dict[question])
           

繼續閱讀