快手一面SQL之相互关注数

来源VIP学员反馈的快手面试题【2024/05/15】

推荐阅读文章列表

我的大数据开发学习之路

2024最新大数据开发面试笔记V6.0

大数据开发面经汇总【持续更新】

SQL题目

  • 有一张用户关注表dwd_online_user_follow_dd, 包含用户id(user_id)和关注者id(follower_id)
  • 求相互关注的用户对

答案解析

模拟数据

insert into dwd_online_user_follow_dd values
('a', 'b'),('a', 'c'),('a', 'd'),('b', 'a'),('c', 'a'),('c', 'd');

alt

解法1

select
  t1.user_id,
  t1.follower_id
from dwd_online_user_follow_dd t1
left join dwd_online_user_follow_dd t2
on t1.user_id = t2.follower_id and t1.follower_id = t2.user_id
where t2.user_id is not null;

alt

解法2

select user_f 
from (
  select concat(follower_id,'-',user_id) as user_f
  from dwd_online_user_follow_dd
  union all 
  select concat(user_id,'-',follower_id) as user_f 
  from dwd_online_user_follow_dd
) t 
group by user_f having count(*)>1;

alt

#数据人的面试交流地##第一次面试##我的实习求职记录##24届软开秋招面试经验大赏##校招过来人的经验分享#
大厂高频面试SQL题 文章被收录于专栏

收录字节、阿里、蚂蚁、美团、京东、百度、小红书、拼多多等大厂面试SQL题

全部评论
不太严谨,求互关的用户对,应该是去重的吧,你这每个用户对都出现了两遍,结果数翻倍了
1 回复 分享
发布于 2024-05-26 10:07 山东

相关推荐

11-08 15:10
门头沟学院 Java
1. 实习项目介绍2. 你实习过程中有遇到感觉困难的事吗?3. 你觉得你实习过程中遇到最有挑战的事是什么?4. 那你讲讲你实习中的redis队列是怎么用的吧5. 为什么要用redis队列,解决了什么问题?6. 队列是怎么建立的?一个离线任务就对应一个队列吗?7. 什么时候同步任务的状态?如何同步的?8. 为什么要用分布式锁,分布式锁的key是什么?9. 那你这样说意思就是redis不是原子性的吗?10. 既然是原子性,那你取任务的时候我理解不会有并发安全,那你为什么还要这样用?11. redis队列中子任务实例的状态是如何同步的?12. 数据什么时候落库?13. 按你的说法,我执行任务的时候,查数据库不就可以看是否过期了,为什么还要单起一个线程去更新状态?14. 发送事件和消费事件的生产者和消费者分别是谁?怎么消费的?15. redis队列底层的数据结构是什么?16. 双向链表和压缩链表是怎么实现的,他们有哪些字段17. 为什么要用双向链表和压缩链表,他们查询的时间复杂度是多少?18. 那么redis队列是怎么把双向链表和压缩链表结合起来实现的?19. 虚拟内存有什么作用?20. 答了给用户感知的内存更大,追问还有呢?21. 那换个方式,进程切换会发生什么?22. 为什么进程切换消耗的资源更少23. 进程切换和线程切换有什么区别?24. 系统是如何创建一个进程的,比如你windos点一个exe文件,发生了什么25. 手撕一个正数乘法计算器,输入两个字符串,输出一个字符串
查看25道真题和解析
点赞 评论 收藏
分享
评论
7
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务