Java经典笔试题—day14

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


🔎结尾

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络通信IO模型上

计算机组成 计算机由软件和硬件组成&#xff0c;软件包括CPU、内存等&#xff0c;硬件包括主板&#xff0c;磁盘&#xff0c;IO设备&#xff08;网卡、鼠标、键盘等&#xff09;、电源按钮。 内核程序加载过程 当接通电源的时候1、BIOS就会把它的一段代码放入了内存当中&#…

压缩感知重构算法之正交匹配追踪算法(OMP)

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

C语言---初识指针

1、指针是什么 指针是什么&#xff1f; 指针理解的2个要点&#xff1a; ​ 1、指针是内存中一个最小单元的编号&#xff0c;也就是地址。 ​ 2、平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的变量 总结&#xff1a;指针就是地址&#xff…

Kali-linux Arpspoof工具

Arpspoof是一个非常好的ARP欺骗的源代码程序。它的运行不会影响整个网络的通信&#xff0c;该工具通过替换传输中的数据从而达到对目标的欺骗。本节将介绍Arpspoof工具的 使用。 9.8.1 URL流量操纵攻击 URL流量操作非常类似于中间人攻击&#xff0c;通过目标主机将路由流量注…

Sentinel的另外三种流控模式(附代码详细介绍)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将详细介绍Sentinel的其他三种流控模式&#xff0c;后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x1f44f;&#…

vue面试题汇总

HTML篇CSS篇JS篇TypeScript篇前端面试题汇总大全&#xff08;含答案超详细&#xff0c;HTML,JS,CSS汇总篇&#xff09;-- 持续更新前端面试题汇总大全二&#xff08;含答案超详细&#xff0c;Vue&#xff0c;TypeScript&#xff0c;React&#xff0c;Webpack 汇总篇&#xff09…

04_Cenos安装Docker

docker安装文档&#xff1a; ubuntu&#xff1a;https://docs.docker.com/engine/install/ubuntu/ centos&#xff1a;https://docs.docker.com/engine/install/centos/ debian&#xff1a;https://docs.docker.com/engine/install/debian/ cenos安装Docker前提&#xff1a; 必…

数据结构(C语言):顺序循环队列的基本操作

一、题目 设队列的元素类型为char&#xff0c;实现顺序循环队列的各种基本操作的程序&#xff1a; ① 初始化队列Q&#xff1b; ② 判断队列Q是否为空&#xff1b; ③ 入队操作。循环调用入队操作&#xff0c;将若干元素&#xff08;不少于10个&#xff09;入队&#xff1b…

优化带排序的分页查询

优化带排序的分页查询 浅分页&#xff1a; select user_no,user_name,socre from student order by score desc limit 5,20 深分页&#xff1a; select user_no,user_name,socre from student order by score desc limit 80000,20 因为偏移量深分页更大&#xff0c;所以深分页执…

【软件】无联网情况下安装Win11 / 华为电脑更换Win11系统后触摸屏、声卡失效物理解决方案

一、提前备份好电脑驱动&#xff08;华为电脑更换Win11系统后触摸屏、声卡失效物理解决方案&#xff09; 1.电脑驱动备份方法&#xff1a; 1&#xff09;通过管理员身份打开命令提示符。 2&#xff09;输入命令&#xff1a;dism /online /export-driver /destination:"D…

聊聊Go语言的控制语句

在高级编程语言中&#xff0c;控制流语句(control-flow statement)是一类用于控制程序执行流程的语句&#xff0c;以下简称为控制语句。它们可以根据条件或循环执行相应的代码块&#xff0c;或者跳转到指定位置执行代码。 常见的控制语句包括&#xff1a; 条件语句&#xff1a;…

10. python字典

文章目录 一、什么是字典二、访问键-值对三、添加、修改键-值对四、删除键-值对4.1 语句del4.2 方法pop() 五、创建空字典六、遍历字典6.1方法items()6.2方法keys()6.3方法values() 七、嵌套7.1 字典列表7.2 在字典中存储列表7.3 在字典中存储字典 一、什么是字典 #创建一个字…

电商服务智能解决方案

互联网时代&#xff0c;智能客服已成为电商企业客户服务、管理和运营的标配。面临大量客户咨询、订单流程等业务&#xff0c;传统人工客服工作时间有限、人员流动性大、人工成本持续上涨等&#xff0c;已经无法满足电商企业“数智化”转型的需求&#xff0c;这也促使AI成为电商…

SpringSecurity入门

简介 官网地址&#xff1a;https://spring.io/projects/spring-security#overview Spring家族当中&#xff0c;一个安全管理框架 Shiro也是一个安全框架&#xff0c;提供了很多安全功能。Shiro比较老&#xff0c;旧的项目当中&#xff0c;可能还在使用。上手还挺简单 在新项…

Zemax Lumerical | 二维光栅出瞳扩展系统优化

简介 本文提出并演示了一种以二维光栅耦出的光瞳扩展&#xff08;EPE&#xff09;系统优化和公差分析的仿真方法。 在这个工作流程中&#xff0c;我们将使用3个软件进行不同的工作 &#xff0c;以实现优化系统的大目标。首先&#xff0c;我们使用 Lumerical 构建光栅模型并使用…

(双指针 ) 18. 四数之和 ——【Leetcode每日一题】

❓18. 四数之和 难度&#xff1a;中等 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重…

不愧是阿里,扣的真细。

铜三铁四已经过去了&#xff0c;今天的行情虽然没有以前好&#xff0c;但是相比去年来说也算是好了一些了。有一些人已经在这个招聘季拿到了不错的Offer了。 今天给大家分享一份面经&#xff0c;今天这位朋友的背景是Java五年本&#xff0c;2023年前被毕业后投入了面试大军怀抱…

融合改进Sine混沌映射的新型粒子群优化算法(NIPSO)-附代码

融合改进Sine混沌映射的新型粒子群优化算法(NIPSO) 文章目录 融合改进Sine混沌映射的新型粒子群优化算法(NIPSO)1.粒子群优化算法2. 改进粒子群优化算法2.1 改进的 Sine 混沌映射2.2 粒子群改进 3.实验结果4.参考文献5.Matlab代码6.Python代码 摘要&#xff1a;为了应对传统粒子…

OpenGl之摄像机

文章目录 摄像机/观察空间摄像机位置摄像机方向右轴上轴 Look At自由移动移动速度鼠标输入缩放摄像机源码 OpenGL本身没有摄像机(Camera)的概念&#xff0c;但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机&#xff0c;产生一种我们在移动的感觉&#xff…

第12届蓝桥杯Scratch省赛真题集锦

编程题 第 1 题 问答题 下雨 题目说明 编程实现: 下雨。 具体要求: 1).点击绿旗,角色与背景如下图所示呈现在对应位置; 2).小猫说:“快下雨了,赶快回家”,小狗说:“我再玩一会”; 3).开始下雨,雨滴持续下落, 4).小猫躲在亭子里,雨滴在小猫和亭子后落下, 5).小狗在雨中…