网易2020校招数据分析方向正式批笔试题 解析

网易2020校招数据分析方向正式批笔试题

题目来自网易2020校招数据分析方向正式批笔试题

选择题

  1. 关于主成分分析说法错误的是

PCA可以用来降维处理

PCA可以通过SVD来实现

PCA实现线性组合最大化样本方差

PCA可以通过特征值分解来实现

  1. 2个盒子被小牛分别放入中有两个大小相同的球,这两个球只可能是红和蓝两种颜色,并且一个球是红的还是蓝的是等可能的。小牛让小客来猜盒子里球的颜色分别是什么样颜色。在小客猜的过程中,小牛告诉小客其中一个是盒子里面是红色的小球,那么另一个盒子里球还是红色的概率是多少

题解:

总共4种情况:红红、红蓝、蓝红、蓝蓝

现在已知一个是红色 排除最后一种 还有一个是红的概率是 1/3

  1. f ′ ( e x ) = x e − x , f ( 1 ) = 1 f'(e^x) = xe^{-x},f(1)=1 f(ex)=xex,f(1)=1,那么 f ( e ) = ? f(e)=? f(e)=?

y = e x , x = l n y y = e^x , x = lny y=ex,x=lny ,则$ f’(y) = lny * y^{-1}$

通过交换 可得$f(y) = 1/2 * (lny)^2 + c $

把f(1) = 1带入 c = 1

$f(e) = 1/2 +1 = 1.5 $

  1. 数据结构中,沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( 后)序的遍历实现编号。

先序 根左右

中序 左根右

后序 左右根

  1. 现在假设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,B中右指针域为空的结点有( n+1 )个?

简单画图可知

根据森林转换为二叉树的“左孩子右兄弟”的表示法,即对于每棵二叉树,每个结点的右指针指向其右邻兄弟。

针对每一个非终端结点,一定会有且仅有一个孩子结点没有右邻兄弟,即右指针领域为空。因此N个非终端结点,就有N个右指针域为空。

看完单棵二叉树,再来看这些二叉树是怎么连接成一棵二叉树的。原理是:将后一棵二叉树的根节点作为前一棵二叉树的右孩子连接起来,所以只有最后一棵二叉树的根结点没有右孩子,即右指针域为空。

因此综上:N个非终端结点,就有(N+1)个结点的右指针域为空。

  1. 现在假设对N个元素的链表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( (N+1)/2)?

  2. 完全二叉树是指深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一 一对应将一棵有50个结点的完全二叉树按节点编号,如根节点的编号为1,那么编号为25的结点是( 有左孩子,无右孩子)?

完全二叉树,而且与深度为K的满二叉树中编号从1至n的结点一 一对应,说明满足每层从左到右都是按编号顺序排列的,根节点的编号为1,对于编号为n的结点,其左孩子编号为2n , 右孩子编号为2n+1。当根节点编号为0时,左孩子编号为2n+1,右孩子为2n+2,父节点为(n-1)/2

  1. 假设有选课表course_relation(student_id, course_id),其中student_id表示学号,course_id表示课程编号,如果小易现在想获取每个学生所选课程的个数信息,请问如下的sql语句正确的是( )
select student_id, count(course_id) from course_relation group by student_id;
  1. 城市A当前剩余的车牌号为70000-99999之间,假设不能有两个相同的数字,那么剩余车牌号有(9072 )个.

3 * 9 * 8 * 7 * 6 = 9072

第一位有7、8、9 三种选择,第二位有9种选择 ,以此类推

10.15个阶梯,你一次可以上一阶或两阶,走上去,共有多少种走法?(987)

斐波那契数列 1、2、3、5、8、13、21、34、55、89、144、233、377、610、987

简答题

用户分析是电商数据分析中重要的模块,在对用户特征深度理解和用户需求充分挖掘基础上,进行全生命周期的运营管理(拉新—>活跃—>留存—>价值提升—>忠诚),请尝试回答以下3个问题:

  1. 现在数据库中有一张用户交易表order,其中有userid(用户ID)、orderid(订单ID)、amount(订单金额)、paytime(支付时间),请写出对应的SQL语句,查出每个月的新客数(新客指在严选首次支付的用户),当月有复购的新客数,新客当月复购率(公式=当月有复购的新客数/月总新客数)

    create view t1 as
    select userid,strftime('%Y-%m',min(paytime)) as year_month 
    from order group by userid 
    
    -- 每个月新客数
    select t1.year_month,count(t1.userid) as '每月新客数'
    from t1 group by t1.year_month
    
    -- 当月有复购的新客数
    select t2.year_month,count(t2.nums) as '复购的新客数'
    from 
    (
      select t1.year_month,count(o1.userid) as nums
      from t1 inner join order o1
      on o1.userid = t1.userid and strftime('%Y-%m',o1.paytime) = t1.year_month
      group by o1.userid
      having count(o1.userid) > 1
    ) as t2
    group by t2.year_month
    
    -- 新客当月复购率
    select a.year_month, a.每月新客数, b.复购的新客数, 1.0*b.复购的新客数/a.每月新客数 as '当月复购率'
    from 
    (
      	select t1.year_month,count(t1.userid) as '每月新客数'
    		from t1 group by t1.year_month
    ) as a
    (
      	select t2.year_month,count(t2.nums) as '复购的新客数'
    		from 
     		(
          	select t1.year_month,count(o1.userid) as nums  
          	from t1,order o1
    				where o1.userid = t1.userid and strftime('%Y-%m',o1.paytime) = t1.year_month
    				group by o1.userid  having count(o1.userid) > 1
     		)as t2
     		group by t2.year_month
    ) as b
    where a.year_month=b.year_month
    order by a.year_month
    
    1. 当你发现最近一周APP端新访用户当天转化率(公式=新访当天支付人数/新访用户数,新访是指首次访问严选APP的设备)环比最近4周日均转化率大幅下跌(超30%),你会如何去探查背后的原因?请描述你的思路和其中涉及的关键指标

    环比:2020.11 和 2020.12

    同比:2019.12 和 2020.12

    由于最近一周APP新访用户当天转化率都大幅下跌,所以可以排除偶然事件的影响,判定是产品侧出了问题需要改进。

    1. 根据转化率公式=新访当天支付人数/新访用户数,
    • 首先判断是不是在新访用户数不变的基础上、新访当天支付人数减少了?

      • 是哪些人群的支付人数减少了?
      • 这些人是否存在渠道的差异?
      • 哪个渠道的人群转化率降低了?
      • 是不是这个渠道的素材出了问题?
      • 是不是产品策略最近有改变导致这个人群下单需求降低?
      • 可以通过查看分渠道新访用户数和转化率进行判断。
    • 然后继续判断,是不是新访用户数增多,但当天支付人数没有增多。

      • 新访用户数增多是所有渠道都增多还是个别渠道增多?
      • 如果是个别渠道新访客增多,那说明产品前期运营做的不错,对用户是有一定吸引力的。但为什么选择下单的用户少?
      • 是具体哪个功能模块出了问题?
      • 是相关推荐的算法不够精确还是购物车的设计不够方便支付?
      • 可以查看各渠道的新访用户数,当天支付用户数,各渠道的用户对各功能的使用情况来排查有问题的部分。
  2. 在进行用户运营之前,我们通常会对用户进行分层,针对不同类型用户实施差异化的运营策略和资源投入,请你帮助设计严选用户分层的方案,包括关键特征的选择,分层的方法,如涉及模型/算法,请说明选择的算法类型、基本原理和步骤

  • 用户分层指的是根据用户不同的消费倾向与消费偏好针对性的提供营销和服务,以极化用户价值。这里用户分层的具体业务目标是,便于进行全生命周期的运营管理(拉新、活跃、留存、价值提升、忠诚)

  • 为了便于进行运营管理,根据全生命周期的几个阶段进行用户分层,以便对每个阶段的用户实施差异化的策略,将其向下个阶段转化。可以看到每个阶段都是对用户购物行为的一种描述,那么根据用户的购物模式来分层。根据用户的消费金额、最近消费频率、最近活跃天数、最近活跃行为等关键特征分为以下几层:

    • 客单>=500 且 最近七天有活跃(高质量用户,防流失)
    • 近30天购买频次 >=3 且 近7天未访问(活跃用户,提高留存)
    • 近7天访问频次 >=5 且 近7天未购买(需要价值提升)
    • 七天内注册用户且无下单购买(新用户需要开单)
    • 客单≥500且近7天未访问(提高活跃度)

    c.由于消费金额/频率/活跃天数这些都是连续型数据,且数据量较大,所以用Kmeans聚类算法。

    基本原理和步骤略

网易严选是网易旗下原创生活类自营电商品牌,深度贯彻“好的生活,没那么贵”的品牌理念。商品覆盖居家、餐厨、配件、服装、洗护、母婴、原生态饮食等几大类目,兼具品质和性价比,得到用户的广泛好评。若你是网易严选负责商品的数据分析师,当面对以下业务问题时,你会如何解决?

  1. 居家品类期望了解购买居家类目的用户是哪群人,期望你帮助她进行品类用户画像的构建,以作为居家品类规划和商品运营的参考,你会从哪些维度去完成类目用户的刻画?
  • 构建居家品类用户画像的目的是,了解这类用户的特征进而了解他们的需求,从而作为参考帮助运营给用户提供区别化的对待、个性化的服务,达到提升用户购物体验进而提升平台流水的效果。
  • 要具体的刻画购买居家品类的用户,要从和居家有关系的方面入手,涵盖尽可能多的方面。根据以上具体业务目标,我选用以下维度描述购买居家类目的用户:
    • 自然属性 年龄,性别;
    • 社会属性 职业,住在哪里,婚恋状况,教育程度;
    • 兴趣属性 喜欢进行的活动,花费时间最多的工作之外的活动,是否养宠物
    • 消费属性 消费频次,消费额,最喜欢购买哪个品牌的居家类商品,购买次数最多的居家类商品是什么。
  1. 如果需要选择一批商品来吸引新用户,你会从哪些维度进行选择?请写出维度,选择的原因,对应的指标
  • 商品品类维度选,各种品类的商品都挑选,显示出网易严选商品的齐全、种类多。涉及到的指标有,覆盖到的商品类目有多少、商品类目有哪些。

  • 商品品质维度选,显示出网易严选定位的一大特点:品质优,这对于商品来说是一个硬核项。要直观的表示商品品质不太容易,可以利用品牌效应,选大牌商品,列举出网易严选平台上有多少垂直领域里的大牌,突出平台的定位。涉及到的指标有:网易严选有多少大牌/专业品牌,具体到每个领域的大牌有哪些

  • 商品性价比维度选,显示出网易严选定位的另一大特点:性价比高。涉及到的指标有:优质商品在网易严选的定价和在其他平台的定价对比

  • 商品好评率维度选,选好评率最高的,让用户的赞扬声感染更多的用户。涉及到的指标有:商品评价里好评个数/评价总数

编程题


小易给定你数字A、B(A < B)和系数p,q。每次操作你可以A将变成A+p或者将p变成p*q。问至少几次操作使得B<=A。

输入描述:
第一行数据组数T,对于每组数据,一行四个整数A,B,p,q。
1<=A,p,B<=10^9,2<=q<=10,1<=T<=5

输出描述:
对于每组数据,输出一个数字表示答案

示例1
输入
2
1 5 7 2
3 5 1 2
输出
1
2

示例2
输入
2
1 15 4 2
12 19 3 2
输出
3
3

#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n;cin>>n;
    while(n--){
        int a,b,p,q;
        cin>>a>>b>>p>>q;
        if(b-a<=p)
            cout<<1<<endl;
        else{
            int ans = (b-a)/p;
            if(ans * p != b-a)
                ans++;
            int res = log(ans)/log(q);
            if(log(q) * res != log(ans))
                res++;
            cout<<res+1<<endl;
        }
    }
    return 0;
}
有三种葡萄,每种分别有a,b,c颗。有三个人,第一个人只吃第种12葡萄,第二个人只吃第23种葡萄,
第三个人只吃第13种葡萄。适当安排三个人使得吃完所有的葡萄,并且且三个人中吃的最多的那个人吃得尽量少。

输入描述:
第一行数字T,表示数据组数。
接下来T行,每行三个数a,b,c
1<=a,b,c<=10^18,1<=T<=10


输出描述:
对于每组数据,输出一行一个数字表示三个人中吃的最多的那个人吃的数量。

示例1
输入
2
1 2 3
1 2 6
输出
2
3

示例2
输入
1
12 13 11
输出
12

题解:
 1. 把这三种葡萄数量 看成三角形的三条边
 2. 如果这些数量构成 三角形 每个人吃相邻两边 也就是均分所有葡萄 这里要的是最大值 所以记得处理小数
 3. 如果不能构成 三角形 且两短边之和大于等于长边的一半,也可实现总数平分;
 4. 反之,则结果为长边的一半 说明有一种葡萄的数量大于 其他两种数量之和 那种葡萄两个人平分 所以最大的是
 
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    long nums[3];
    int n;
    cin>>n;
    while(n--){
        long sumnums = 0;
        for(int i = 0;i < 3;i++){
            cin>>nums[i];
            sumnums += nums[i];
        }
        sort(nums,nums+3);
      	//特殊处理下小数
        cout<<max((sumnums+2)/3,(nums[2]+1)/2)<<endl;
    }
    return 0;
}

小易定义一个数字序列是完美的,即每个数字都要大于等于前面所有数字的和。现在给定数字序列A
小易想请你从中找出最长的一段连续子序列,满足它是完美的。

输入描述:
第一行数据组数T。对于每组数据,第一行一个整数n,接下来一行n个整数表示序列。
1<=n<=10^5

输出描述:
对于每组数据,一行一个数字表示最长完美的连续子序列的长度。

示例1
输入
2
5
1 3 9 2 6
5
4 2 9 16 7
输出
3
3

题解:
1.双指针滑动窗口
2.设置起点,遍历数组,如果当前符合完美数组,加入并更新
3.否则重新建立 ,更新

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int n, m;
    cin >> n;
    while(n--) {
        cin >> m;
        int nums[m];
        int start = 1;
        int ans = 0;
        for(int i = 0; i < m; i++)
            cin >> nums[i];
        int sum = nums[0];
        for(int i = 1; i < m; i++) {
            if(sum <= nums[i]) {
                sum += nums[i];
                ans = max(ans, i - start + 1);
            }else {
                start = i;
                sum = nums[i];
            }
        }
        cout << ans << endl;
    }
    return 0;
}
小易的公司一共有n名员工, 第i个人每个月的薪酬是xi万元。
现在小易的老板向小易提了m次询问, 每次询问老板都会给出一个整数k, 小易要快速回答老板工资等于k的员工的数量。

输入描述:
第一行,两个空格间隔的整数n和m,表示人数和提问的次数 
第二行,n个用空格间隔的整数xi,表示每名员工的薪酬
接下来有mm行,每行一个整数,表示老板的一次提问。
1<=m<=80000 ,1<=n<=100000 ,1<=xi<=500,000,000

输出描述:
m行,每行一个整数,表示对应提问的答案

示例1
输入
7 4
6 2 1 2 6 2 5
6
5
8
2
输出
2
1
0
3

解法:
直接用unordered map 哈希表



#include <stdio.h>
#include <iostream>
#include <vector>
#include <unordered_map>

using namespace std;

int main()
{
    int n,m;
    cin>>n>>m;
    unordered_map<int, int> dicts;
    for(int i = 0; i< n; i++)
    {
        int x;cin>>x;
        dicts[x]++;
    }
    int k;
    for(int i = 0; i < m; i++ ){
        int x;cin>>x;
        cout<<dicts[x]<<endl;
    }
    return 0;
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 网易数据分析师笔试题是什么? 根据题描述来看,可能是一道针对数据分析领域的题,要求应聘者使用编程语言或数据分析工具进行数据处理、分析和可视化等操作。 笔试题可能会考察应聘者对数据预处理、数据分析和数据可视化的能力。在这个过程中,应聘者需要运用统计学、数据挖掘、机器学习等相关方法,对原始数据进行清洗、探索和分析,最终得出有意义的结论。 在回答这个问题时,可以从以下几个方面进行回答: 首先,应聘者可以介绍自己在数据分析领域的经验和能力。比如,自己是否具备数据分析相关的学历、培训或工作经验,擅长的编程语言、数据分析工具等。 其次,应聘者可以总结一下数据分析的过程。比如,数据预处理、特征选择、模型构建和评估等。 接着,应聘者可以谈谈自己在数据分析过程中常用的编程语言与工具,比如Python语言和数据分析工具如Pandas、NumPy和Scikit-learn等。 然后,应聘者可以详细描述一下自己在数据预处理、数据分析和数据可视化方面的经验。可以通过举例子,介绍一些在实际项中采用的方法和技巧。 最后,应聘者可以简要说明一下自己未来在数据分析领域的规划和标,比如希望深入学习机器学习算法或者数据可视化技术等。 通过以上的回答,可以展示出自己对数据分析领域的了解和热情,同时也能体现出自己的能力和潜力。 ### 回答2: CSDN是中国最大的IT技术专业社区,汇聚了众多的软件开发者、数据分析师、系统架构师等技术人员。网易作为中国的著名互联网公司之一,与CSDN合作也非常频繁。 网易数据分析师笔试题是指网易针对数据分析师岗位候选人举行的笔试。此笔试主要考察应聘者在数据处理、统计分析、数据报告撰写等方面的能力。 笔试题中可能包含以下内容: 1. 数据处理:要求应聘者掌握数据清洗、数据整合等技巧,能够合理地对大量的数据进行加工与整理。 2. 统计分析:要求应聘者具备一定的统计学基础,能够使用统计学方法进行数据分析,包括描述性统计、推断统计等。 3. 数据建模:要求应聘者能够基于已有数据进行建模分析,深入挖掘数据背后的规律和信息。 4. 数据报告撰写:要求应聘者能够将分析结果清晰地呈现出来,撰写具有合理结构和逻辑性的数据报告。 对于参加网易数据分析师笔试的候选人来说,最重要的是要具备良好的基础知识和实际操作能力。此外,还需培养自己的逻辑思维和问题解决能力。对于CSDN网站的应聘者来说,他们可以通过学习和参与网站上的技术讨论、项实践等方式,不断提升自己的技术水平和经验。 总之,网易数据分析师笔试题是对应聘者数据分析能力和技术实力的考核,候选人需要在学习基础知识的基础上,进行实际操作训练,并通过各种途径积累经验,提升自己的能力。 ### 回答3: CSDN是中国领先的IT技术社区,致力于推动技术行业的发展和传播,为广大开发者提供学习、交流和分享的平台。而网易是中国领先的综合互联网技术公司,拥有丰富的数据资源和庞大的用户群体。 作为网易数据分析师笔试题可能涉及数据分析的基本概念、数据处理技术和数据挖掘方法等方面。在这道题中,我会将网易作为数据分析的对象进行分析。 首先,作为一家综合性互联网公司,网易拥有大量的用户行为数据、产品销售数据和广告投放数据等等。数据分析师可以通过对这些数据的收集、整理和分析,帮助网易公司了解用户的偏好、产品的销售情况以及广告投放的效果。通过对这些数据的深入挖掘和分析,可以为网易提供决策支持和业务优化的建议。 其次,数据分析师可以利用数据分析工具和技术,对网易的业务进行更细致的划分和评估。例如,可以通过用户分群和用户画像的方法,对不同用户群体的行为和偏好进行分析,从而为网易提供个性化推荐和精准广告投放。此外,数据分析师还可以使用数据挖掘和机器学习的方法,寻找隐藏在数据背后的规律和模式,进一步提升网易的产品和服务。 最后,数据分析师需要具备良好的数据分析能力和业务理解能力。同时,也需要具备较强的沟通能力,能够将复杂的数据分析结果以简明的方式传达给相关部门和决策者。通过有效的沟通和交流,可以促进数据驱动的决策,提高网易的竞争力和市场地位。 综上所述,作为网易数据分析师,需要从数据收集、整理和分析的角度,为网易提供决策支持和业务优化的建议。通过数据分析工具和技术,对网易的业务进行更细致的划分和评估。同时,也需要具备良好的数据分析能力和业务理解能力,并具备较强的沟通能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值