查看: 13865| 回复: 17
跳转到指定楼层
上一主题 下一主题
收起左侧

SQL 笔/面试经验分享+资料总结,求加米谢谢!

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
大家好,作为SQL做题家来分享一下笔试面试经验,如果你之前没有面过SQL,只用看本文就能准备充分了!!希望可以帮助到目前正在找工作的小伙伴!求加米!!真的很需要米米!!!!!谢谢!!!
. 1point 3acres
1. 面试问题【回答各种知识点】
以下是99%会问到的SQL面试问题,按照出现频率排序,越top越高频,没写在里面的就过于低频了不用准备:. 1point 3acres
1. What is a JOIN? What are the types of join and explain each?
2. What is a View?
3. 如何优化SQL代码?如果一个 sql query 花很长时间才出结果,可能的原因是什么
4. Difference between WHERE and HAVING ?
5. Difference between JOIN and UNION?
6. Difference between UNION and UNION ALL?
7. Difference between rank & dense_rank & row_number
8. SQL query process/execution steps.执行顺序
9. What is a primary key?What is a foreign key? What is a partition key?. .и
10. When to use GROUP BY?
11. What is a DBMS?
12. What's the characters manipulation functions you have used? 【当时听到题目懵逼了,不懂characters manipulation functions是什么意思,后来回答substring(), upper(), lower()之类处理string的functions,面试官也让过了】

2. 笔试/OA/live coding
准备工作就是刷Leetcodes,premium是一定要开的。刷到easy可以秒做,medium做到读完题的一瞬脑子里有大致解题思路,这种熟练程度就没问题。不用刷hard题。lz本人差不多全部的easy+medium来来回回刷了3遍
有些人会推荐hackerrank。我觉得如果你是SQL小白,刷刷hackerrank是OK的【但如果你真的是小白,推荐刷LintCode而不是hackerrank来练习基础】,准备面试的话则需要以Leetcode为主。因为Leetcodes的题目会给你一个特定的业务场景,跟笔试SQL题比较接近。hackerrank的题奇奇怪怪的。。。什么找三角形这种,感觉挺偏的。。。

接下来上干货:. check 1point3acres for more.

开始live coding时要提前确认的问题:
1) Null的行需不需要显示?如果需要显示的话,是显示Null还是0.google  и
2) What’s the format of a timestamp column?
3) Clarify the format of the result and the columns’ name
4) 比率是保留几位小数?百分比还是小数?
5)某列(尤其是where语句中会用到的列)是否存在null值?见Leetcode 584题
6)当输出为null时,是输出null还是[]
一边做题,一边talk out loudly。这样面试官才能检查你的logic和communication-baidu 1point3acres

写完代码自己检查的时候需要检查的问题:
1)SELECT 多个列时,记得加逗号, 多个CTE WITH语句时,记得加逗号
2)列名关键字有无拼写错误
3)subquery 有没有重命名【千万不能忘记alias】. 1point3acres.com
4)  SQL关键字需要用’’括起来,比如’rank’,见178题
5)group by 有没有忘记. Χ
6)DISTINCT有没有忘记,一切非primary key的column都要注意是否有重名
7)CREATE FUNCTION题型,不要忘记分号
8) 语句末尾加分号. check 1point3acres for more.

SQL刷题时可以看看Youtube上Emma的视频,讲的还不错。她把面试问题分为3大类【其实你们自己刷Leetcodes时可以总结出更多类,每类都有不同的模版可以套】

我附上每一类对应的题号方便大家练习:
1) Computing ratio (分别计算numerator分子和denominator分母). Waral dи,
1173. Immediate Food Delivery I 算百分比,可以使用if或者case when,满足条件的设为1,不满足的设为0,这样就能简单用avg来求了
1174. Immediate Food Delivery II 典型题:用case when来标记0和1,再用SUM()/COUNT()算比率
1322. Ads Performance CTR=total clicks/(total views + total clicks)分别统计每一项有多少个可以用sum(if(列 = ‘XXX’, 1, 0)),sum(if())的优点是,将数个重复的只有where条件不同的query组合成一个query
1211. Queries Quality and Percentage 典型题:用case when来标记0和1,再用SUM()/COUNT()算比率。注意哪个是1哪个是0

2) Data Categorization
1435. Create a Session Bar Chart 不能使用case when的情况:一定要显示某种分类,即使没有一行落入该分类。此时需要手动SELECT “”然后UNION拼接
1393. Capital Gain/Loss case when来定正负(+-1),再sum(). ----
1468. Calculate Salaries case when, round( , 0)
1212. Team Scores in Football Tournament 陷阱多,使用UNION ALL来包含重复项(尤其是需要sum()的时候不要忘了)
1907. Count Salary Categories 使用case when的话,不存在的分类不会显示null而是根本不会出现,所以要手动UNION

3) Cumulative Sum (与time series data结合考) ..
这个题型我总结出了一个模板,应该附件里就有。consecutively题型, 第一种就是套我的模板,第二种就是传统的使用JOIN id+1, JOIN id-1
534. Game Play Analysis III 窗口函数 sum(partition by order by) 来统计累加值(so far)。或者 JOIN ONdate1 ≥ date2
1454. Active Users consecutively题型, 使用DATEDIFF(l1.login_date, l2.login_date) BETWEEN 0 and 4解决consecutively题型
180. Consecutive Numbers  consecutively题型。WHERE语句中不能使用连比,LEFT JOIN ON l1.id = l2.id-1 ON l1.id = l3.id+1-baidu 1point3acres

大致内容就这些,求加米!!!真的很需要米米!!!!!谢谢

【Ps. 其实基本上每个SQL题都是能套模板的,如果大家感兴趣我以后考虑做刷题视频或者GitHub之类的慢慢整理,但是不知道把premium题透露在公开平台算不算违法。。等我慢慢研究。。】. Χ

补充内容 (2023-02-26 05:15 +08:00):
大家不要光收藏啊😭😭给我加米不扣你自己的米的

Screen Shot 2023-02-25 at 1.54.18 PM.png (108.27 KB, 下载次数: 61)

Screen Shot 2023-02-25 at 1.54.18 PM.png

评分

参与人数 72大米 +77 收起 理由
flywei0228LRZG + 1 给你点个赞!
喵叽 + 1 很有用的信息!
offerlang + 1 给你点个赞!
Percy伯翰 + 1 很有用的信息!
Sneezer + 1 很有用的信息!

查看全部评分


上一篇:dats scientist考证指南
下一篇:请教一个关于Cross Validation的问题
推荐
caozheng115 2024-12-13 23:07:03 | 只看该作者
全局:
1454 最好用window function. datediff between 1and 4 这个有四种可能,intermediate table 会很大
网上找到个code, 写的不是很好,有点啰嗦,但基本意思是用window function。
SELECT DISTINCT a.id, a.name
FROM (
    SELECT
        id, LEAD(login_date, 4) OVER (PARTITION BY id ORDER BY login_date) AS five_days,
        DATEDIFF(LEAD(login_date, 4) OVER (PARTITION BY id ORDER BY login_date), login_date) AS gap
    FROM (SELECT DISTINCT id, login_date FROM Logins) c
) d
LEFT JOIN Accounts a ON a.id = d.id
WHERE gap = 4
ORDER BY a.id
回复

使用道具 举报

推荐
guuxxy 2025-10-17 08:09:11 | 只看该作者
全局:
想知道这个是Data岗面试吗?我以为会考你怎么做题,没想到还会考这些理论知识??
回复

使用道具 举报

推荐
zttzhu 2023-4-19 05:11:45 | 只看该作者
全局:
感谢lz整理并且分享!
回复

使用道具 举报

🔗
cppdxmn 2023-2-26 09:29:30 | 只看该作者
全局:
谢谢楼主分享,正好需要
回复

使用道具 举报

🔗
Cora11187 2023-2-26 10:35:28 | 只看该作者
全局:
感谢LZ分享!
回复

使用道具 举报

🔗
wxy666 2023-2-26 21:09:20 来自APP | 只看该作者
全局:
谢谢楼主 加米加米
回复

使用道具 举报

🔗
OwtPnow 2023-2-27 06:17:11 | 只看该作者
全局:
感谢分享
回复

使用道具 举报

全局:
感想楼主,非常有用
回复

使用道具 举报

全局:
sql还是太简单了
回复

使用道具 举报

🔗
Tongli2350 2023-6-1 12:16:32 | 只看该作者
全局:
Thank you!!!!1
回复

使用道具 举报

全局:
感谢分享jiamijiami
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表