【大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(5)】

大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(5)

1-前言

为了考上大学院,做了日语版本练习,边学边看边记录

2-数据库データベース

SQL 書写問題(予想)

以下では,関係データベースにおいて次の表が定義されているとする。


【表定義】

学生(Student)

列名 備考
学生番号 INTEGER 主キー
学生名 VARCHAR
性別 CHAR
GPA REAL
生年月日 DATE
学科番号 INTEGER

学科(Department)

列名 備考
学科番号 INTEGER 主キー
学科名 VARCHAR

※ GPA には NULL が含まれる可能性がある


問題1(ORDER BY × NULL 罠)

学科番号が 3 に所属する学生について,
GPA が NULL でない学生のみを対象とし,
GPA の高い順に学生番号・学生名・GPA を出力せよ。

sql 复制代码
-- ここにSQLを書く
  • GPA != NULL は誤り
  • ORDER BY を WHERE より前に書くミス

問題2(GROUP BY × 非集約列罠)

男性学生のみを対象として,
学科ごとに「学科番号」と「GPA の最小値」を出力せよ。

sql 复制代码
-- ここにSQLを書く
  • SELECT に書いた列を GROUP BY に含めない
  • MIN(GPA) なのに WHERE に GPA 条件を書く

問題3(相関サブクエリ)

各学科において,
その学科の平均 GPA よりも高い GPA を持つ学生の
学生番号・学生名・学科番号・GPA を出力せよ。

sql 复制代码
-- ここにSQLを書く
  • 相関条件を書き忘れる
  • 平均を全体で計算してしまう
  • サブクエリに GROUP BY が必要か判断できない

問題4(ALL / ANY 判定罠)

生年月日が 1982 年 1 月 1 日以降の学生が持つ
GPA の最大値よりも「厳密に大きい」GPA を持つ学生の
全ての属性を出力せよ。

sql 复制代码
-- ここにSQLを書く
  • MAX(GPA) をそのまま比較(→意図ズレ)
  • ANYALL の意味混同
  • サブクエリが複数行を返すことへの理解不足

🔍 出题者视角补充(很重要)

  • ** SQL 不考花活,考的是:**

    • 正确性(NULL / GROUP BY / 相関)
    • 条件的「日文原意」是否准确反映
  • 70% 的失分来自:

    • NULL 判断写错
    • GROUP BY 不完整
    • 子查询逻辑不对应日文

3-数据库データベース-答案解析

bash 复制代码
SELECT  学生番号,学生名,GPA FROM 学生 WHERE 学科番号 =3 AND GPA = NULL ORDER BY DESE;

SELECT 学科番号,MIN(GPA) FROM  学生 GROUP BY 学科番号 HAVING 性別='男';

SELECT 学生番号,学生名,学科番号,GPA FROM 学生 WHERE GPA>(SELECT AVG(GPA) FROM 学生 GROUP BY 学科番号 )

SELECT * FROM 学生 WHERE GPA>(
SELECT MAX(GPA) FROM 学生 WHERE 生年月日='1982-1-1'
);

4-软件工程(ソフトウェア)

❌ 第1题

你的答案:

sql 复制代码
SELECT 学生番号,学生名,GPA
FROM 学生
WHERE 学科番号=3
AND GPA=NULL
ORDER BY DESE;

❌ 错误点

  1. NULL 判断错误

    • = NULL
    • 必须用:IS NOT NULL
  2. 排序关键字拼写错误

    • DESE ❌ → DESC

✅ 正确(本番标准写法)

sql 复制代码
SELECT 学生番号, 学生名, GPA
FROM 学生
WHERE 学科番号 = 3
AND GPA IS NOT NULL
ORDER BY GPA DESC;

📌 这一题你会被判 0 分(不是部分分)


❌ 第2题

你的答案:

sql 复制代码
SELECT 学科番号, MIN(GPA)
FROM 学生
GROUP BY 学科番号
HAVING 性別='男';

❌ 错误点

  • HAVING 用错对象

    • 性別 不是聚合结果
    • 行条件 → WHERE
    • 组条件 → HAVING

✅ 正确(本番写法)

sql 复制代码
SELECT 学科番号, MIN(GPA)
FROM 学生
WHERE 性別 = '男'
GROUP BY 学科番号;

📌 这一题:部分分可能有,但大概率被扣 50%


❌ 第3题(相関子查询)

你的答案:

sql 复制代码
SELECT 学生番号, 学生名, 学科番号, GPA
FROM 学生
WHERE GPA > (
  SELECT AVG(GPA)
  FROM 学生
  GROUP BY 学科番号
);

❌ 错误点(致命)

  1. 子查询返回多行

    • GROUP BY 学科番号 → 多行
    • 外层 > 不能接多行
  2. 没有相関条件

    • 没有把「外层学科番号」传进去

✅ 正确

sql 复制代码
SELECT 学生番号, 学生名, 学科番号, GPA
FROM 学生 s
WHERE GPA >
(
  SELECT AVG(GPA)
  FROM 学生
  WHERE 学科番号 = s.学科番号
);

📌 这一题你会被判 0 分


❌ 第4题(ALL / 最大值逻辑)

你的答案:

sql 复制代码
SELECT *
FROM 学生
WHERE GPA > (
  SELECT MAX(GPA)
  FROM 学生
  WHERE 生年月日='1982-1-1'
);

❌ 错误点

  1. 日期条件理解错误

    • 题目是:1982-1-1 以降
    • 你写成了:=
  2. 语义错误

    • 正确意思是:

      比「那一组学生中最大 GPA」还要大


✅ 正确(本番最稳写法)

sql 复制代码
SELECT *
FROM 学生
WHERE GPA >
(
  SELECT MAX(GPA)
  FROM 学生
  WHERE 生年月日 >= '1982-1-1'
);

📌 这一题:可能给少量部分分


📊 本番评分模拟(参考)

题号 预估得分
第1题 0
第2题 △(半分)
第3题 0
第4题

👉 总体:不合格(但你踩中的点非常"像考生")


🎯SQL「保命四原则」(请背)

  1. NULL → 只用 IS NULL / IS NOT NULL
  2. WHERE 是行条件,HAVING 是组条件
  3. GROUP BY 一出现,就警惕"多行子查询"
  4. 相関子查询:外层表必须起别名

5-软件工程(ソフトウェア)答案解析


問題1|需求不一致的原因

✅ 你的答案评价

方向:正确(合格边缘 → 稳合格)

你已经说到了最想看到的点:

  • 利用者 vs 开发者
  • 知识结构不同
  • 理解偏差导致结果不一致

⚠️ 减分风险

  • 日语语法不稳定(「あるですが」「十分なありません」)
  • 原因 → 结果 的因果关系不够清晰
  • 「期待の事件」用词不自然(应为「期待と異なる結果」)

✅ 修正版

利用者は自分の業務についての知識を持っているが、ソフトウェア開発に関する専門知識は十分ではない。一方、開発者は技術的な専門知識を持っているが、利用者の業務内容を十分に理解できない場合がある。

このような知識や立場の違いにより、要求の解釈にずれが生じ、完成したシステムが利用者の期待と一致しない結果が発生する。

🔎 本题核心词你已全部命中

✔ 知識の違い

✔ 解釈のずれ

✔ 期待と一致しない


問題2|プロトタイプの有効性

✅ 你的答案评价

方向:正确,但结构混乱(本番会被扣分)

你说对了:

  • 为了让用户理解
  • 处理模糊需求
  • 确认是否符合期望

⚠️ 减分风险

  • 「目的」和「手段」混在一句话里
  • 「ポロとタイプ」拼写错误(Prototype)
  • 句子过长,逻辑不清晰

✅ 修正版

プロトタイプを作成する目的は、利用者に要求内容を具体的に理解してもらうことである。

要求書だけでは曖昧になりやすい要求についても、実際に動作する形で確認することができるため、利用者の期待と開発者の理解のずれを早期に発見・修正することが可能となる。

📌 这里隐藏加分点

👉「早期に」

👉「ずれを発見・修正」


問題3|テストとデバッグ

✅ 你的答案评价

内容:完全正确(送分题)

你明确写出了:

  • テスト:发现问题
  • デバッグ:消除问题

这是100%命中标准答案方向

⚠️ 唯一小问题

  • 「消しす」→「消す」
  • 结尾「両者も重要です」略显口语

✅ 修正版(满分表达)

テストは、ソフトウェアに存在する問題点や欠陥を発見することを目的とした工程である。

一方、デバッグは、テストによって発見された問題点の原因を特定し、修正する作業である。


問題4|重构的意义

✅ 你的答案评价

方向正确,但抽象(容易被认为"没说清楚")

你提到了:

  • 长期
  • 保守性
  • 维持与改善

但问题是:

👉 你说的是"好",没说"为什么好"


✅ 修正版(本番稳妥)

この作業の意義は、ソフトウェアの外部仕様を変更せずに内部構造を改善することで、保守性や可読性を向上させる点にある。

その結果、長期的な開発や機能追加、修正が容易となり、ソフトウェアの継続的な運用が可能となる。


🔥 总评(按本番标准)

项目 评价
出题理解 ✅ 完全正确
工程视角 ✅ 合格
语言表达 ⚠️ 需修正
本番合格性 A− → A(修正后)

👉 结论一句话

你已经"会答了",现在只是把它答得像日本研究生


6-总结

用日语的方式来直接训练,我认为是提示能力的好办法吧,希望从今天开始,每天坚持到考试那天,一直训练。

相关推荐
山土成旧客2 小时前
【Python学习打卡-Day34】GPU为何“变慢”?从性能悖论到`__call__`的魔力
开发语言·python·学习
SWAGGY..2 小时前
数据结构学习篇(8)---二叉树
数据结构·学习·算法
强子感冒了3 小时前
Java List学习笔记:ArrayList与LinkedList的实现源码分析
java·笔记·学习
极客范儿3 小时前
2025年度学习总结
学习
YJlio3 小时前
PsPing 学习笔记(14.2):TCP Ping——端口连通性与服务在线性秒级体检
笔记·学习·tcp/ip
BullSmall3 小时前
后台任务与定时任务:软件开发中的异步处理利器
学习
航Hang*3 小时前
第1章:初识Linux系统——第12节:总复习①
linux·笔记·学习·考试复习
走在路上的菜鸟3 小时前
Android学Flutter学习笔记 第二节 Android视角认知Flutter(resource,生命周期,layout)
android·学习·flutter
KaiGer6663 小时前
AUTOSAR 学习效率翻倍:我如何把 CP/AP 规范重构成认知地图
学习