Java经典笔试题—day14

news2024/11/25 8:15:30

Java经典笔试题—day14

  • 🔎选择题
  • 🔎编程题
    • 🍭计算日期到天数转换
    • 🍭幸运的袋子
  • 🔎结尾

🔎选择题

(1)定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C ( C#,Cn,P# )(其属性分别为课程号、课程名、先修课); SC ( S#,C#,G) (其属性分别为学号、课程号和成绩),则该关系为( )

A. 第二范式
B. 第一范式
C. 第三范式
D. BCNF范式

A

范式是符合某一种级别的关系模式的集合
关系数据库中的关系必须满足一定的要求, 满足不同程度要求的为不同范式

  • 目前关系数据库有六种范式
    • 第一范式(1NF)
    • 第二范式(2NF)
    • 第三范式(3NF)
    • Boyce-Codd范式(BCNF)
    • 第四范式(4NF)
    • 第五范式(5NF)
  • 满足最低要求的范式是第一范式(1NF)
  • 在第一范式基础上进一步满足更多要求的称为第二范式(2NF), 其余范式依次类推
    一般来说, 数据库只需满足第三范式(3NF)即可
  • 第一范式(1NF): 主属性(主键)不为空且不重复, 字段不可再分(存在非主属性对主属性的部份依赖)
  • 第二范式(2NF): 关系模式是第一范式, 且非主键完全依赖于主键
  • 第三范式(3NF): 关系模式是第二范式, 且非主键与非主键之间不存在依赖关系
  • BCNF: 所有属性都不传递依赖于关系的任何候选键


    对于 S 表, 主键为学号, 非主键为姓名, 所在系, 所在系系主任, 年龄
    满足第一范式(主键非空且不重复, 字段不可再分)
    满足第二范式(关系模式是第一范式, 且非主键完全依赖于主键)
    不满足第三范式(所在系所在系系主任 存在依赖关系, 通过 所在系 能确定 所在系系主任 )
    在这里插入图片描述
    对于 C 表, 主键为课程号, 非主键为课程名, 先修课
    满足第一范式(主键非空且不重复, 字段不可再分)
    满足第二范式(关系模式是第一范式, 且非主键完全依赖于主键)
    满足第三范式(关系模式是第二范式, 且非主键与非主键之间不存在依赖关系)
    在这里插入图片描述
    对于 SC 表, 主键为学号, 课程号(联合主键), 非主键为成绩
    满足第一范式(主键非空且不重复, 字段不可再分)
    满足第二范式(关系模式是第一范式, 且非主键完全依赖于主键)
    满足第三范式(关系模式是第二范式, 且非主键与非主键之间不存在依赖关系)
    在这里插入图片描述
    综上所述, 答案为第二范式

(2)下面不属于数据库系统特点的是( )

A. 数据冗余度高
B. 数据具有完整性
C. 数据共享性好
D. 数据独立性高

A

  • 数据库系统的特点
    • 数据共享性高, 冗余度低
    • 具有高度的物理独立性和逻辑独立性
    • 整体结构化, 用数据模型描述
    • 由数据库系统提供数据安全性, 完整性, 并发控制和恢复能力

(3)将实体-联系模型转换为关系模型时,实体之间多对多联系在关系模型中的实现方式是( )

A. 建立新的关系
B. 建立新的属性
C. 增加新的关键字
D. 建立新的实体

A

  • 实体-联系模型, 也成为实体-联系图(ER图)
  • ER图包含4个基本部分
    • 矩形框: 表示实体的类型
    • 菱形框: 表示联系的类型
    • 椭圆形框: 表示实体类型和联系类型的属性
    • 直线: 联系类型与其涉及的实体类型之间用直线连接

例如每个专业设置多门课程, 某些课程可被多个专业设置
专业(实体)与课程(实体)之间的联系在ER图中表示为多对多, 但在关系模型中, 需要通过中间表(建立新的关系)来表达多对多的关系

(4)关于求和函数,以下说法正确的是()

A. sum返回表达式中所有数的总和,因此只能用于数字类型的列
B. Avg返回表达式中所有数的平均值,可以用于数字型和日期型的列
C. Max和Min可以用于字符型的列
D. Count可以用于字符型的列

A

B. Avg 可以应用于数字型字段(列), 不能应用于日期型字段(列)
C. Max 和 Min 应用于数字型字段(列), 不能应用于字符型字段(列)
D. Count 可以应用于任意类型的字段(列), 但不属于求和函数

(5)有三个关系 R 、 S 和 T 如下:
则由关系 R 和 S 得到关系 T 的操作是( )

在这里插入图片描述

A. 自然连接
B. 交
C. 除
D. 并

C

  • 自然连接
    • 如果关系R与S具有相同的属性B, 且该属性组的值相等时的连接称为自然连接, 结果关系的属性集合为R的属性并上S减去属性B的属性集合.(自然连接也可以看作是在广义笛卡尔积R x S中选出同名属性上符合相等条件元组, 再进行投影, 去掉重复的同名属性, 组成新的关系)
    • 取出两个结果集中字段相同的部分
      在这里插入图片描述

  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    • 合并两个结果集中字段相同的部分
      在这里插入图片描述

(6)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )

A. 课号,成绩
B. 学号,成绩
C. 学号,课号
D. 学号,姓名,成绩

C

SC 表的学号作为外键关联 S 表的主键学号
SC 表的课号作为外键关联 C 表的主键课号
因此, SC 表的主键为学号, 课号(联合主键)

(7)关系数据库所采用的数据存放形式是()

A. 二维表
B. 链表
C. 网状
D. 二叉树

A

关系数据库存放数据形式类似于 Excel, 属于二维表的形式
在这里插入图片描述

(8)某关系表有:员工(部门编号,部门名称,员工编号,姓名,性别,年龄),则其主码为()

A. 部门编号、员工编号
B. 员工编号
C. 姓名
D. 部门编号

A

  1. 判断员工编号是否可以重复
    • 员工编号可以重复(需利用其他字段区分是否为同一员工)
      类似于 id = 1001, 部门编号分别为 dept = 1 和 dept = 2
    • 员工编号不可以重复(利用员工编号即可区分是否为同一员工)
      类似于 id = 1001, id = 1002
  2. 根据题目, 已经给出部门编号等其他信息, 表明员工编号可以重复
  3. 综上, 主键为部门编号, 员工编号

(9)在使用 limit 子句时,如果没有足够的行,则:

A. MySQL会报错
B. MySQL将只返回它能返回的那么多行
C. MySQL将不会返回任何行

B

(10)不属于SQL语句的是()

A. SELECT
B. CANCEL
C. UPDATE
D. ALTER

B

A. 查询的关键字
C. 修改的关键字
D. 管理表结构的关键字

🔎编程题

🍭计算日期到天数转换


题目描述

根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。

进阶:时间复杂度:O(1) ,空间复杂度:O(1)

输入描述

输入一行,每行空格分割,分别是年,月,日

输出描述

输出是这一年的第几天

在这里插入图片描述

解题思路

  • 判断 year 是否为闰年
  • 注意给出的 month 表示计算到当月的天数, 因此加上给出的 day 即可
//计算日期到天数转换
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int year = scan.nextInt();
        int month = scan.nextInt();
        int day = scan.nextInt();

        calcDay(year, month, day);
    }

    private static void calcDay(int year,int month,int day) {
        // flag --> 判断是否为闰年
        boolean flag = false;
        if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) flag = true;
        //   month    1   2  3   4   5   6   7   8   9   10  11
        int[] days = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30};
        days[1] = flag ? 29 : 28;

        int ret = 0;
        for(int i = 0; i < month - 1; i++) {
            ret += days[i];
        }
        System.out.println(ret + day);
    }

}

📢题目链接
链接:link


🍭幸运的袋子


题目描述

一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。
例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3
你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。

输入描述

第一行输入一个正整数n(n ≤ 1000) 第二行为n个数正整数xi(xi ≤ 1000)

输出描述

输出可以产生的幸运的袋子数

在这里插入图片描述

解题思路

以 n = 5, xi 分别为 1, 5, 7, 3, 1为例

  • 先进行排序(下面解释)
    • 排序后的结果为 1, 1, 3, 5, 7
  • 定义 sum = 0(和), mul = 1(乘积), cnt = 0(产生的幸运袋子数)

在这里插入图片描述
在这里插入图片描述

  • 从1, 1 开始
    • 判断1, 1, 3 能否构成幸运袋子(√)
      • 判断1, 1, 3, 5 能否构成幸运袋子(x)
    • 判断1, 1, 5 能否构成幸运袋子(√)
      • 判断1, 1, 5, 7 能否构成幸运袋子(x)
    • 判断1, 1, 7 能否构成幸运袋子(√)
  • 从1, 3 开始
    • 判断1, 3, 5 能否构成幸运袋子(x)
    • 判断1, 3, 7 判断1, 1, 3 能否构成幸运袋子(x)
  • 从1, 5 开始


排序是为了当判断当前元素不能构成幸运袋子时, 不必再判断后面的数字
因为后面的数字 ≥ 前面的数字

//幸运的袋子
import java.util.Scanner;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) nums[i] = sc.nextInt();
        Arrays.sort(nums);

        System.out.println(count(nums, n, 0, 0, 1));
    }

    private static int count(int[] nums, int n, int pos, int sum, int multi) {
        int cnt= 0;
        for (int i = pos; i < n; i++) {
            sum += nums[i];
            multi *= nums[i];
            if (sum > multi) {
                cnt= cnt+ 1 + count(nums, n, i + 1, sum, multi);
            } else if (nums[i] == 1) {
                cnt= cnt+ count(nums, n, i + 1, sum, multi);
            } else {
                break;
            }
            sum = sum - nums[i];
            multi = multi / nums[i];
            // 拥有相同号码的球是无区别的
            while (i < n - 1 && nums[i] == nums[i + 1]) {
                i++;
            }
        }
        return cnt;
    }
}

📢题目链接
链接:link


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/578951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据湖仓架构】数据湖和仓库:范式简介

是时候将数据分析迁移到云端了——您选择数据仓库还是数据湖解决方案&#xff1f;了解这两种方法的优缺点。 数据分析平台正在转向云环境&#xff0c;例如亚马逊网络服务、微软 Azure 和谷歌云。云环境提供了多种好处&#xff0c;例如可扩展性、可用性和可靠性。此外&#xff0…

SpringMVC bean加载控制 -- SpringMVC入门保姆级教程(二)

文章目录 前言二、SpringMVC bean 加载控制1.bean加载控制2.添加Spring开发环境3.SpringMVC bean加载控制4.SpringMVC bean控制相关知识点 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能…

丝印设计~丝印内容、大小、距离、排列,位置

丝印设计 丝印的内容包括&#xff1a; a) PCB的名称/PCB的版本号 b) 元器件外形框 c) 元器件的序号 d) 元器件的极性和方向标志 e) 条码框 f) 插入PCB的名称&#xff08;母板&#xff09; g) 插针的位置序号 h) 安装孔位置代号 i) 元器件第1脚的位置代号 j) 过板方向 k) 光纤盘…

分治入门+例题

目录 &#x1f947;2.3.2 合并排序 &#x1f947;2.3.3 快速排序 &#x1f33c;P1010 [NOIP1998 普及组] 幂次方 &#x1f333;总结 形象点&#xff0c;分治正如“凡治众如治寡&#xff0c;分数是也”&#xff0c;管理少数几个人&#xff0c;即可统领全军 本质&#xff…

js数据类型和六种运算结果为false的情况

数据类型 number&#xff1a;数字&#xff08;整数、小数、NaN(Not a Number)&#xff09; string&#xff1a;字符串、单双引皆可 boolean&#xff1a;布尔。true、false null&#xff1a;对象为空 undefined&#xff1a;当声明的变量初始化时&#xff0c;该变量的默认值…

vuex五大核心、辅助函数

一、vuex五大核心 分别为&#xff1a;state、getters、mutations、actions、modules state&#xff1a;用来存放我们的状态&#xff0c;也可以理解数据&#xff0c;类似与data中定义的数据&#xff1b;mutations:可以获取state里面的状态&#xff0c;进行修改&#xff0c;他只…

Hadoop---10、生产调优手册

1、HDFS—核心参数 1.1 NameNode 内存生产配置 1、NameNode内存计算 每个文件块大概占用150byte&#xff0c;一台服务器128G内存为例&#xff0c;能储存多少文件块呢&#xff1f; 12810241024*1024/150Byte ≈ 9.1 亿 G M KB Byte 2、Hadoop2.x系列&#xff0c;配置 NameNode…

leetcode506.相对名次

题目描述跳转leetcode详情 给你一个长度为 n 的整数数组 score &#xff0c;其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 &#xff0c;其中名次第 1 的运动员得分最高&#xff0c;名次第 2 的运动员得分第 2 高&#xff0…

day1 -- 资料库管理系统DBMS

学习目标&#xff1a; 了解什么是Mysql 如何安装Mysql 学习内容&#xff1a; 资料库概念资料库管理系统概念资料库管理系统分类SQL是什么安装Mysql启动Mysql并建立一张测试表格 正文部分 资料库 比如你喜欢摘抄优美的词句&#xff0c;那些优美的词句就是一种文字资料&#xf…

香橙派4和树莓派4B构建K8S集群实践之六:App服务部署

目录 1. 说明 1.1 关于PHPNginx体系的WebApp&#xff0c;这里将实践两种部署模式&#xff1a; 1.2 配置清单 2. PHPNginx体系的WebApp部署 2.1 单节点多容器模式A 2.1.1 准备工作 2.2.2 部署 2.2.3 访问效果 ​编辑 2.2 多节点单容器模式B 2.2.1 准备工作 2.2 配置…

笔记 | FastAPI创建新项目

当使用FastAPI创建项目时&#xff0c;首先需要安装FastAPI和其依赖项。可以使用pip来安装它们。请确保已经安装了Python和pip。 创建项目文件夹并进入该文件夹&#xff1a; mkdir myproject cd myproject创建并激活一个新的Python虚拟环境&#xff08;可选&#xff0c;但强烈…

虚拟机扩容

文章目录 虚拟机扩容扩容背景软件版本操作步骤1、VM上修改磁盘信息2、在系统中挂载磁盘(1) 使用命令查看磁盘状态(2) 通过命令查看到新磁盘的分区(3) 然后对新加的磁盘进行分区操作(4)重启虚拟机(5) 再次用以下命令查看到磁盘当前情况(6) 查看卷组名(7) 初始化刚刚的分区(8) 将…

MongoDB入门

mongodb与sql术语对应关系 SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引 对应关系图例

Microsoft Edge有哪些你不知道却超级好用的插件?(Microsoft Edge功能测评)

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:对Edge浏览器的简单测评,分享一些自己在使用好用的插件. 目录…

阿里系文生图(PAI+通义)

PAI-Diffusion模型来了&#xff01;阿里云机器学习团队带您徜徉中文艺术海洋 - 知乎作者&#xff1a;汪诚愚、段忠杰、朱祥茹、黄俊导读近年来&#xff0c;随着海量多模态数据在互联网的爆炸性增长和训练深度学习大模型的算力大幅提升&#xff0c;AI生成内容&#xff08;AI Gen…

Ae 效果详解:3D 摄像机跟踪器

Ae菜单&#xff1a;效果/透视/3D 摄像机跟踪器 Effects/Perspective/3D Camera Tracker 使用 3D 摄像机跟踪器 3D Camera Tracker效果可自动分析视频&#xff0c;以便提取摄像机运动和 3D 场景数据。然后&#xff0c;可以在 2D 素材的基础上正确合成 3D 元素。 提示&#xff1a…

基于DataX的海量时序数据迁移实战:从MySQL到TDengine3.x

背景 MySQL 数据库中&#xff0c;设备历史数据单表过亿&#xff0c;如何快速、低成本地迁移到 TDengine3.x 中&#xff1f; 从标题可以看出&#xff0c;我们使用的数据迁移/同步工具是 DataX &#xff0c;数据源&#xff08; Source &#xff09;为传统的关系型数据库 MySQL …

Yarn学习笔记

Apache Hadoop YARN &#xff08;Yet AnotherResource Negotiator&#xff0c;另一种资源协调者&#xff09;是一种新的 Hadoop 资源管理器&#xff0c;它是一个通用资源管理系统&#xff0c;可为上层应用提供统一的资源管理和调度&#xff0c;它的引入为集群在利用率、资源统一…

全面SOA化的电子电气架构是什么样?

交流群 | 进“传感器群/滑板底盘群/汽车基础软件群/域控制器群”请扫描文末二维码&#xff0c;添加九章小助手&#xff0c;务必备注交流群名称 真实姓名 公司 职位&#xff08;不备注无法通过好友验证&#xff09; 作者 | 张萌宇 在汽车产业向智能化转型的过程中&#xff0c…

《C++程序设计原理与实践》笔记 第18章 向量和数组

本章将介绍如何拷贝以及通过下标访问向量。为此&#xff0c;我们讨论一般的拷贝技术&#xff0c;并考虑向量与底层数组表示之间的关系。我们将展示数组与指针的关系及其使用引发的问题。我们还将讨论对于每种类型必须考虑的五种基本操作&#xff1a;构造、默认构造、拷贝构造、…