buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

千人千面:来看看这道简单的SQL面试题——设计一个学生成绩表

今早上班后清理工位时,发现这张废纸,记录一下。

 

下面是这个简单的数据库应用面试题

1、设计一个学生成绩表 (DDL 或者是逻辑结构)

2、用一条 SQ语句 查询总成绩大于270分的学生

3、用一条SQL语句 查询出每门课都大于80分的学生

 

坦白说,这个再常见不过的题并不难,甚至经常作为大学练习题。

表设计有2个方案:1. 横向存储的方式:学生+课程+分数;2.纵向按列存储的方式:学生+课程A+课程B+...+课程N

 

细节来说
首先,如何来标记学生呢,看这道题,并没什么要求,所以,我们用学生姓名来标记。当然, 用学号也行。
其次,分数字段的类型,如果没有小数,用int即可,如果有小数,可以用decimal(5,2)。
再次,选择方案1)与方案2)的两个设计方案的依据。如果基于课程会有变化这一点来考虑,则采用方案1);如果基于课程比较固定是那几科,则采用方案2)倒也不错。

 

下面这位候选人小伙做的不错。

 

 

在面试中,的确发现了千人千面。

针对本文开头的截图,我记得问那位候选人为什么要这么设计表,他的回答竟然是————为了能写出来后面的2个sql。

在问到分数字段的类型时,有同学上来就表示:用bigint,这样不会出现越界的bug。

有同学设计的表结构是:学生id+分数。声称这个表存学生的总分就行了。我暗自反思:是这道题描述得有歧义吗?

 

我曾面试过一个对接过京东支付的小伙, 他们的程序在接收到支付结果回调时,除了校验签名外,还会验证金额是否一致。直觉告诉我,我遇到了靠谱的程序员。连忙追问为什么验证金额,小伙没底气了,表示这是前人这么写的,自己也觉得画蛇添足,组内几个人沟通后准备去掉。害!最后,送他走的时候,我叮嘱他,不要去掉金额的验证,并阐述了理由。支付结果回调通知的安全控制(嘘,一般人我不告诉他~~) 

 

posted on   buguge  阅读(82)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
历史上的今天:
2022-08-24 项目主干分支的server.sh被“覆盖”了?一个配置,解除烦恼
2022-08-24 java死锁(Java-level deadlock)
2021-08-24 java+sql实现mysql数据表的数据结转
点击右上角即可分享
微信分享提示