Lazada数据开发工程师岗位二面笔试题汇总

1.数据模型和架构:(2选1)
a)请画出你认为在你工作过的公司中,最合理的数据仓库的技术框架?需要详细告知离线和实时的技术框架;
b)请具体描述下互联网数仓和传统数仓的相同和不同?重置的从各个角度分析。
你的回答:
1. 传统数仓是面向事务设计的,互联网数仓是面向主题设计的
2. 传统数仓是服务于业务系统的,互联网数仓是服务于分析系统的
3. 传统数仓一般存储的在线交易数据,互联网数仓一般存储历史数据
4. 传统数仓尽量避免冗余设计,互联网数仓有意引入冗余数据
5. 传统数仓支持增删改查,互联网数仓一般只支持增和查
6. 传统数仓是为了捕获数据而设计,互联网数仓是为了业务分析而设计

2.数据产品
背景:以微信运动(微信运动是中国社交APP中对自己和朋友的运行信息进行对比的功能,促进大家多运动)为例,假设有两个源头表,
表1:用户和用户运动步数;表名为 user_moving_steps (user_id,user_steps)
表2:用户和朋友的关系;user_friends_relation (user_id,friend_id)
需求上希望生成以下需求:
1.用户的当前运动排名;
2.用户的朋友运动排名;
3.用户的详情页里面,我占领多少个人的封面;
希望答案结果是这样的:
如:离线表结构为:tableA(字段1,字段2,字段3...),tableB(字段1,字段2,字段3...)...
需求1:基于TableA的query sql可以得出,需求2,需求3类似;
你的回答:
1.
select
user_id,
user_steps
from user_moving_steps
order by user_steps desc;

2.
select
b.friend_id,
c.user_steps
from user_moving_steps a
inner join user_friends_relation b -- 朋友之间的关系
on a.user_id = b.user_id
left join user_moving_steps c -- 获取朋友的步数
on b.friend_id = c.user_id
order by 2 desc;

3.
slect
count(1) cnt -- 我占领多少个人的封面
from
(
slect
friend_id,
max(user_steps) max_steps -- 对方朋友步数最多的
from user_friends_relation a
left join user_moving_steps b
on a.user_id = b.user_id -- 获取朋友的步数
group by 1
) a
where a.max_steps =
(select user_steps from user_moving_steps where user_id = '我的id');


3.数据技能:
a。(SQL题)用一条SQL语句查询出每门课都大于80分的学生姓名
名字 课程 分数
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
你的回答:
select
name
from table
group by name
having min(socre) > 80;


b。(SQL题)有一个竖表,记录学生成绩,3个分段,学生学号,学科和成绩,假设每个学生有3们学科,希望你能将其打横,变成学号加几个学科的成绩,有某种方法可以实现?
以张三(张三学号为1001)为例:
原表记录:期望变成如下(每个学号1条记录):
原表                 目标表
学号 学科 成绩    学号  语文成绩  数学成绩  英语成绩
1001 语文 100    1001  100      95        90
1001 数学 95
1001 英语 90
你的回答:
select
number,
sum(case when subject = '语文' then score else 0 end) chinese_subject,
sum(case when subject = '数学' then score else 0 end) math_subject,
sum(case when subject = '英语' then score else 0 end) english_subject
from table
group by 1
;


C。(代码字)滚动线性里的每个单词
Given s = "the sky is blue",
return "eht yks si eulb".
函数名:reverseString
参数:原字符串
返回:新字符串
要求:可以不要求能一次性编译通过,语言任选。
你的回答:
# python语言
def reverse_words(s):
s = s.split(' ') # 按照空格进行分割
new_s = [a.reversed() for a in s] # 对里面的元素进行反转
return ' '.join(new_s) # 拼接空格符输出


#笔经##数据开发工程师#
全部评论

相关推荐

本人去年11月份才开始接触前端,然后3月份开始寻找第一份前端实习,一开始并没有对大厂抱有期待,因为自己和身边的人比确实差距很大,觉得小厂中厂能找到就很好了。Timeline:3月15号投递,18号约了一面,一面一小时后通过,19号收到二面通知,因为时间冲突,20号面试官和我约了3小时后进行二面,比较突然,22号收到hr面试通知,25号hr面试快结束收到了云证并进入录用评估,29号收到offer邮件。一面:1. 写一个深拷贝2. 为什么会有调用堆的限制?3. Symbol4. 深拷贝中运用了闭包,问闭包是什么?5. 闭包和原型链的关系是什么?6. http1,1.1,2都有哪些区别?7. http为什么是文本传输8. 首部压缩是什么?9. 二进制帧的好处是什么?10. 询问项目11. 因为项目有使用openai的api,问如何实现chatgpt那样一个字一个字地输出?12. 了解人工智能,机器学习的算法吗?反问环节二面:1. 浏览器缓存原理2. Etag和last-modified-since是什么?3. 这两个东西的区别?4. 觉得哪个性能更高?5. 前端性能如何优化?6. CDN是什么?7. 前端性能指标有哪些? 8. 包体积优化怎么做?9. Promise的缺点?10. 跨域?9. 算法题:lc 109?反问环节hr面:很温柔的姐姐,介绍了一下部门然后开始提问:1. 为什么选择前端?2. 之后职业规划3. 做过最有成就的事情4. 哪里人?5. 能接受深圳办公吗?6. 大概什么时候可以到岗?反问环节可能有些漏掉的问题,记不太清楚了,如果想起来会随时补充,但是面试官都很亲切,我不知道的也会仔细地教我,非常感谢,收获颇多,也让我知道我还有很多需要学习的地方。也非常感谢牛友大佬们提供的面经和建议。#面经##前端##暑期实习#
点赞 评论 收藏
转发
头像
不愿透露姓名的神秘牛友
04-18 10:20
已编辑
腾讯云智 前端开发 n*12+4.8w绩效 本科211
点赞 评论 收藏
转发
5 21 评论
分享
牛客网
牛客企业服务