237,487
社区成员
发帖
与我相关
我的任务
分享春风有约,花期不误,随着春招的火热进行,相信不少小伙伴也已经开始了不少面试之旅。
一直以来面试都是招聘过程中最重要的一环,面试官提出的问题也是多种多样。现在让我们一起讨论一下在你在面试或是笔试过程中遇到过的最奇葩的数据库面试题是什么吧!
我们将会在讨论时间结束后根据大家的点赞数来选出10位同学送出精美礼品哦!
活动时间:3月11日13:00到3月22日24:00
礼品放送规则:
我们将会根据点赞数的排名抽出3位同学送出旅行睡眠套装,同时随机在评论区抽取7名同学送出阿里云定制保温杯,请大家抓紧参与讨论吧!
活动须知:
各位同学在评论中发表的面试题需要与数据库相关。
也请各位同学关闭防陌生人打扰的私信开关,以免出现无法沟通收货地址的情况。
之前面试的时候碰到一个很有意思的SQL题,不难但是很有新意,在这里贴出来。
表a的数据如下:

查询后的表:

请用一条SQL语句查出结果集,字段id和info不能接在where后面作为查询条件。
这道题目堪称SQL试金石。不仅是校招生,就算是写了好多年SQL的人,也不一定真的能快速想出来答案,但是实际上也不是特别难,是我工作时候遇到觉得很有趣记录下来的case;
有一张用户签到表【t_user_attendence】,标记每天用户是否签到(说明:该表包含所有用户所有工作日的出勤记录) ,包含三个字段:
问题1:请计算截至当前每个用户已经连续签到的天数(输出表仅包含当天签到的所有用户,计算其连续签到天数)
输出表【t_user_consecutive_days】:
用户id【fuser_id】
用户连续签到天数【fconsecutive_days】
问题2:请计算每个用户历史以来最大的连续签到天数(输出表为用户签到表中所有出现过的用户,计算其历史最大连续签到天数)
输出表【t_user_max_days】:
用户id【fuser_id】
用户最大连续签到天数【fmax_days】
我来说一个之前遇到的
面试官:10W条数据,我要从其中查出100条不连续的数据,给你id,来查name和password进行展示,如何才能高性能的去使用?
我:在id上建立聚簇索引,然后用 in id 来缩小表搜索范围,最后 使用条件查询 小于最大id,大于最小id,这样可以让sql速度能够比较快的展示,虽然In的性能比较低
只见面试官紧锁眉头,与我心里期待的表情有点不一样啊,难道是哪个环节出了问题?面试官:这样的性能不能达到最优化的程度,而且如果我给你的最小id是1,最大id是100000呢?
你这就有点杠精了啊,那行吧,你是面试官你说了算 我:既然id已经给出来了,而且只查询两个字段,用聚簇索引那么查询数据是很快的,用in id应该是可以的。
面试官:好的,回去等通知吧
我。。。。。

描述
用户行为日志表tb_user_log

场景逻辑说明:
artical_id-文章ID代表用户浏览的文章的ID,特殊情况artical_id-文章ID为0表示用户在非文章内容页(比如App内的列表页、活动页等)。注意:只有artical_id为0时sign_in值才有效。
从2021年7月7日0点开始,用户每天签到可以领1金币,并可以开始累积签到天数,连续签到的第3、7天分别可额外领2、6金币。
每连续签到7天后重新累积签到天数(即重置签到天数:连续第8天签到时记为新的一轮签到的第一天,领1金币)
问题:计算每个用户2021年7月以来每月获得的金币数(该活动到10月底结束,11月1日开始的签到不再获得金币)。结果按月份、ID升序排序。
注:如果签到记录的in_time-进入时间和out_time-离开时间跨天了,也只记作in_time对应的日期签到了。