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

百川智能数据开发笔试

优质
小牛编辑
89浏览
2023-10-28

百川智能数据开发笔试

分享一下百川智能的笔试,对于校招生来说难度很大,我只做出来第二题,其余两题都没有什么思路。

笔试题 1

很久很久以前,有一个 NBA 球探,主要负责在大学联盟中,给球队寻找有潜力的年轻射手。现在他手里有非常多而且格式凌乱的新秀投篮数据,让球探不知如何选择,作为球探的助理,你需要给出一份符合要求的球员名单。要求如下:

  1. 在一个学期的大学比赛中,至少连续登场 5 次,并且每场比赛的前 5 次投篮的总分是连续增长的
  2. 在一场比赛中既投中过 2 分球也投中过 3 分球 数据表名称为 player_score, 表内容示例如下(每周有且只有一场比赛)。

player_a

2

2023-09-10 10:03:10

player_b

2

2023-09-11 10:04:23

player_a

0

2023-09-10 10:04:23

player_a

2

2023-09-10 10:03:53

player_b

3

2023-09-13 10:04:22

player_c

0

2023-09-10 10:04:23

其中:player_name: 球员名称、score:每次投篮得分、score_ts:每次投篮时间

找到连续上场5次并且前五次投篮总分增长的球员和在一场比赛中既投中过 2 分球也投中过 3 分球的球员做连接查询

笔试题2

用户访问 App 日志表(user_log),表中包含用户 ID、登陆时间、退出时间。表内容示例如下:uid: 用户 ID、login_ts:登陆时间、logout_ts:退出时间

1

2023-09-10 00:03:10

2023-09-10 00:13:15

2

2023-09-10 11:12:56

2023-09-10 12:19:22

1

2023-09-10 23:03:10

2023-09-10 23:45:07

问题 1:求每一天,最多有多少人同时使用 App问题 2:计算 App,近半年内,每一天的第 7 日留存率tips1: 第 7 日留存率是指用户在第 1 天登录后,第 7 天也登录了 App 的用户比例。例如,如果有 100个用户在第一天登录,其中有 80 个用户在第 7 天仍然登录,那么 7 日留存率就是 80 / 100 = 0.8,也就是 80%。

问题一

求每一天,最多有多少人同时使用 App,我们需要按天对日志进行分组。同时使用 App我们可以理解为在同一时刻在线。在线时间为登陆时间到退出时间。SQL中并没有函数可以直接求出结果,我们可以考虑累加求和,登陆+1,退出-1。那么可以使用以下 SQL 查询语句:

select date(login_ts) as login_date,
max(online_user_cnt) as online_user_cnt_max
from
(select uid,login_ts,sum(index1) over (
order by login_ts asc
) as online_user_cnt
from
(select uid,login_ts,1 as index1
from user_log
union all
select uid,logout_ts,-1 as index1
from user_log
) t1
) t2
group by date(login_ts)

问题二

流程:

  1. 计算用户活跃日期,因为活跃时间可能跨天,所以要进行并集操作,将登录时间和登出时间取并集,union去重
  2. 将用户活跃表和自己左连接,只有是同一用户并且该用户第7天依旧登陆才会保留整个记录,否则右表记录为空
  3. 得到每天用户第七天是否登陆表后,开始计算每天的七日留存率:根据日期分组计算,第七日对应活跃用户个数/每天用户个数
WITH t_user_activity as (
SELECT distinct uid, DATE(login_ts) as ac_time FROM user_log
UNION
SELECT distinct uid, DATE(logout_ts) as ac_time FROM user_log
)

select t1.ac_time,round(count(t2.uid)/count(t1.uid),2) day7_rate
from t_user_activity t1
left join t_user_activity t2
on t1.uid=t2.uid
and t1.dt=date_sub(t2.dt,INTERVAL 7 day)
where t1.ac_time >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
group by t1.ac_time
order by t1.ac_time

笔试题3

在大语言模型评测场景中、为了评价两个模型的效果,通常会让两个模型打比赛。 比赛结果计分方式为:胜出得 3 分,打平得 1,负得 0 分。实际测评时,通常会使用多个数据集并且在打多轮比赛之后,综合对比来评估模型效果。模型比赛的结果保存在表 evaluation 中。示例如下:表 evaluation 第一条记录含义,模型 algo_model1_v1 和模型 algo_model1_v2,使用 data_set_v1数据集,打了一轮比赛,"DIM1"维度上模型 algo_model1_v2 胜出, "DIM2"维度上平局,"DIM3"维度上模型 algo_model1_v1 胜出

data_set_v1

algo_model1_v1

algo_model1_v2

data_set_v2

algo_model1_v1

algo_model1_v2

data_set_v1

algo_model1_v1

algo_model1_v3

data_set_v3

algo_model1_v2

algo_model1_v3

字段含义data_set: 数据集、model1:模型 1、model2:模型 2、DIM1: "DIM1"维度比赛结果、DIM2: "DIM2"维度比赛结果、DIM3: "DIM3"维度比赛结果

问题:请计算每个数据集下、每个维度下,得分最高的三个模型(只保留这三个模型),且要求排序:数据集排序 v2->v3->v1,维度排序 DIM3->DIM1->DIM2,按得分降序

结果示例

data_set_v1

DIM1

algo_model1_v1

36

1.83

21

12

3

data_set_v1

DIM1

algo_model1_v2

6

3

6

0

0

data_set_v1

DIM2

algo_model1_v1

11

1.63

6

5

0

data_set_v1

DIM3

algo_model1_v1

6

2.5

5

1

0

data_set_v2

DIM1

algo_model1_v1

7

1.71

4

3

0

data_set_v2

DIM2

algo_model1_v1

4

3.25

3

0

1

#数据开发##笔试##百川智能#
 类似资料: