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

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

1-前言

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

2-数据库データベース

SQL 記述問題(全4問)

すべて SQL を記述せよ。選択肢はない。

以下の関係を用いる。


学生(Student)

属性名 内容
学生番号 学生を一意に識別する
学生名 学生の氏名
性別 '男' または '女'
GPA 成績(実数)
生年月日 DATE 型
学科番号 所属学科

履修(Enrollment)

属性名 内容
学生番号 学生
科目番号 科目
成績 数値(0〜100)

科目(Subject)

属性名 内容
科目番号 科目を一意に識別
科目名 科目名称
学科番号 開講学科


問題1(ORDER BY × 条件指定の基本罠)

学科番号が 3 に所属する学生について,
GPA が 3.0 以上である学生の
学生番号,学生名,GPA を
GPA の高い順に出力せよ。

(NULL の GPA は存在しないものとする)


問題2(GROUP BY × WHERE の典型落とし穴)

男性学生のみを対象として,
学科ごとに GPA の平均値を求め,
学科番号と平均 GPA を出力せよ。

ただし,平均 GPA が 3.0 以上の学科のみを対象とすること。


問題3(相関サブクエリ or NOT EXISTS 系)

「すべての履修科目の成績が 60 点以上」である学生の
学生番号と学生名を求めよ。

※ 履修していない科目が存在しない学生は含めないものとする。


問題4(ALL / ANY を理解していないと詰む問題)

生年月日が 1990 年 1 月 1 日以降である学生の
GPA の最大値よりも高い GPA を持つ学生の
全属性を出力せよ。


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

問題1 判定

你写的:

sql 复制代码
(1)SELECT * FROM 学生 WHERE 学科番号=3;
(2)SELECT 学生番号,学生名,GPA FROM 学生 ORDER BY GPA >= 3.0;

❌ 问题点(致命)

  1. 题目要求一条 SQL,你拆成两条 → 直接 0 分

  2. ORDER BY GPA >= 3.0

    • ❌ ORDER BY 后面不能写条件
  3. 完全没有 WHERE GPA >= 3.0

  4. 第一句 SELECT * 结果完全不要求

✅ 正确写法(标准答案)

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

問題2 判定

你写的:

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

❌ 问题点

  1. 再次拆成多条 SQL → 0 分
  2. SELECT 学科番号, GPA FROM 学生
    ❌ GPA 不是分组列,不能直接 SELECT
  3. 子查询返回 多行= 直接报错
  4. HAVING 完全没用

✅ 正确写法(本番标准)

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

📌 记住:

  • WHERE:行筛选
  • HAVING:分组后筛选

問題3 判定

你写的(核心问题):

sql 复制代码
SELECT 学生番号,学生名
FROM 学生 r
WHERE 学科番号 = (
  SELECT 学科番号
  FROM 科目 f
  WHERE 科目番号 = (
    SELECT 成績 >= 60
    FROM 履修
    WHERE f.科目番号 = r.学生番号
  )
);

❌ 致命问题

  1. SELECT 成績 >= 60
    ❌ 返回的是 布尔值,不是列
  2. f.科目番号 = r.学生番号
    ❌ 外键关系完全错
  3. 题目要求的是
    「存在不及格科目就排除」
    → 你却在试图"等值匹配"
  4. 这种题必须 NOT EXISTS

✅ 正确写法

sql 复制代码
SELECT s.学生番号, s.学生名
FROM 学生 s
WHERE NOT EXISTS (
  SELECT *
  FROM 履修 e
  WHERE e.学生番号 = s.学生番号
    AND e.成績 < 60
);

問題4 判定

你写的:

sql 复制代码
SELECT * FROM 学生
WHERE GPA > (ANY
  SELECT MAX(GPA)
  FROM 学生
  WHERE 生年月日 >= 1990
);

❌ 问题点

  1. ANY (SELECT MAX(...))
    MAX 已经是单值
  2. 括号结构错误(ANY 用法不合法)
  3. 逻辑上题目是
    "比最大值还大" → 只能用 ALL 或直接 >

✅ 正确写法(推荐)

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

或(展示理解 ALL 的写法):

sql 复制代码
SELECT *
FROM 学生
WHERE GPA > ALL (
  SELECT GPA
  FROM 学生
  WHERE 生年月日 >= '1990-01-01'
);

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

問1(要求定義・概念境界トラップ)

ある業務システムの開発において,

要求仕様書に基づいて実装された機能が,

利用者から「仕様通りだが期待と異なる」と指摘された。

このような状況が発生する要因 について,

ソフトウェア工学の観点から1 つ 挙げ,

その理由を簡潔に説明せよ。


問2(手段と目的の逆転トラップ)

要求分析工程においてプロトタイプを用いることがある。

プロトタイプを作成する目的 は何か。

また,プロトタイプを使用することで
どのような問題を低減できるかについて説明せよ。


問3(用語の混同トラップ)

ソフトウェア開発において「テスト」と「デバッグ」は

しばしば同一視されることがある。

それぞれの目的の違い に着目し,

両者の相違点を明確に説明せよ。


問4(因果倒置トラップ)

既存のソフトウェアに対して,

外部的な振る舞いを変更せずに内部構造のみを改善する作業が行われることがある。

この作業の名称を述べ,

その作業がどのような点でソフトウェアの保守性向上に寄与するかを説明せよ。


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

問題1(要求定義)

🔍 採点视角判定

⚠️ 危险(6~7成得点)

❌ 主要扣分点

  1. 原因表述不够"工程化"

    • 你强调了「曖昧な要求」
    • 没有明确指出"利用者と開発者の知識ギャップ"
  2. 对策写多了,原因写少了


✅ 本番安全修正版(推荐背这个)

要求仕様に問題が生じる要因の一つとして,
利用者と開発者の知識の違いによる認識のずれ が挙げられる。

利用者は業務に関する専門知識を持つ一方で,

システム開発に関する知識は十分でない場合が多い。

そのため,要求が曖昧なまま伝えられ,

開発者が利用者の期待を正しく理解できないことがある。


問題2(プロトタイプ)

🔍 採点视角判定

⚠️ 危险(6成左右)

❌ 扣分原因

  1. "目的"不够明确

    • 「最小作品」「探索」→ 太抽象
  2. 没有点名"要求の曖昧さを減らす"

    • 这是必写关键词

✅ 本番安全修正版

プロトタイプを作成する目的は,
顧客の曖昧な要求を具体化し,要求仕様を明確にすることである。

要求分析の段階でプロトタイプを顧客に試用してもらうことで,

認識のずれや不明確な点を早期に発見でき,

要求の誤解や手戻りを減らすことができる。


問題3(テストとデバッグ)

🔍 採点视角判定

✅ 合格(8~9成)

👍 优点

  • 区分清楚
  • 没混用概念
  • 非常接近官方答案

⚠️ 小修正建议

  • 用词稍微更学术一点即可

✅ 微调满分版

テストの目的は,
ソフトウェアに含まれる誤りや不具合を発見することである。

一方,デバッグの目的は,

テストによって発見された不具合の原因を特定し,

それを修正することである。


問題4(リファクタリング)

🔍 採点视角判定

✅ 高得点(9~10成)

👍 非常好

  • 名称正确
  • 定义完整
  • 因果关系清楚
  • 和官方答案高度一致

⚠️ 仅一个小点

  • 「きょどう」→ 写成 挙動(汉字)

✅ 几乎满分版(微修)

リファクタリングである。

この作業は,外部的な挙動を変更せずに内部構造を改善することで,

既存ソフトウェアの設計の理解性や変更容易性を向上させる。

その結果,将来の保守や機能追加を容易にすることができる。


6-总结

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

相关推荐
HyperAI超神经2 小时前
【vLLM 学习】Reproduciblity
人工智能·深度学习·学习·cpu·gpu·编程语言·vllm
YJlio2 小时前
LDMDump 学习笔记(13.9):动态磁盘元数据“黑盒”拆解工具
windows·笔记·学习
DisonTangor2 小时前
腾讯开源混元翻译——HY-MT1.5
学习·自然语言处理·开源·aigc
找方案2 小时前
我的 hello-agents 学习笔记:框架开发实践,从调用到玩转的进阶之路
人工智能·笔记·学习·hello-agents
青w韵2 小时前
最新SpringAI-1.1.2接入openai兼容模型
java·学习·ai·springai
小徐不会敲代码~2 小时前
Vue3 学习 6
开发语言·前端·vue.js·学习
●VON2 小时前
智造之眼:人工智能如何重塑现代工业制造
人工智能·学习·制造·von
秋深枫叶红2 小时前
嵌入式第四十一篇——网络编程——udp和tcp
网络·网络协议·学习·udp
行业探路者2 小时前
录音转二维码与视频二维码生成器的使用指南
人工智能·学习·音视频·二维码·产品介绍