SQL+Java基础综合笔试试题(含详细答案解析)_第1页
SQL+Java基础综合笔试试题(含详细答案解析)_第2页
SQL+Java基础综合笔试试题(含详细答案解析)_第3页
SQL+Java基础综合笔试试题(含详细答案解析)_第4页
SQL+Java基础综合笔试试题(含详细答案解析)_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL+Java基础综合笔试试题(含详细答案解析)考试说明:满分100分,考试时长90分钟,题型包含选择题、填空题、简答题、编程题,考察Java基础核心语法、面向对象、集合、JDBC及MySQL常用查询、索引、事务等实操知识点。一、单项选择题(共15题,每题2分,共30分)1.以下关于Java基本数据类型的说法,正确的是()A.char类型占用2个字节,存储的是ASCII码值B.float类型数值精度高于double类型C.boolean类型可以赋值为0和1D.byte类型取值范围是0~2552.下列关于Java字符串的描述,错误的是()A.String是不可变字符序列B.StringBuffer线程安全,StringBuilder线程不安全C.newString("abc")只会创建1个对象D.字符串常量池用于复用字符串对象,节省内存3.Java中接口和抽象类的核心区别,说法错误的是()A.抽象类可以有构造方法,接口无构造方法B.抽象类可以包含普通成员变量,接口默认是常量C.一个类只能继承一个抽象类,可以实现多个接口D.抽象类和接口都可以包含静态代码块4.以下集合中,底层采用数组结构、查询效率最高的是()A.ArrayListB.LinkedListC.HashSetD.TreeMap5.关于Java异常机制,说法正确的是()A.Error属于可捕获异常B.Exception分为编译时异常和运行时异常C.finally代码块一定会执行,即便有return语句D.throw和throws作用完全相同6.以下SQL语句中,能够实现去重查询的关键字是()A.ORDERBYB.DISTINCTC.GROUPBYD.LIMIT7.在MySQL中,用于模糊查询匹配任意字符的通配符是()A._B.%C.*D.#8.下列关于MySQL事务特性(ACID)的说法,错误的是()A.原子性:事务要么全部执行,要么全部回滚B.一致性:事务执行前后数据完整性不变C.隔离性:多个事务相互独立,互不干扰D.持久性:事务回滚后数据永久失效9.MySQL中,以下索引查询效率最高、适用唯一字段的是()A.普通索引B.唯一索引C.主键索引D.全文索引10.SQL中HAVING子句的作用是()A.分组前过滤数据B.分组后过滤分组数据C.排序数据D.限制查询条数11.Java中JDBC操作数据库的正确流程是()A.加载驱动→获取连接→创建语句对象→执行SQL→关闭资源B.获取连接→加载驱动→创建语句对象→执行SQL→关闭资源C.加载驱动→创建语句对象→获取连接→执行SQL→关闭资源D.创建语句对象→加载驱动→获取连接→执行SQL→关闭资源12.以下Java关键字中,用于保证线程安全、修饰同步代码块的是()A.staticB.finalC.synchronizedD.volatile13.MySQL中,删除表中所有数据且不记录日志、效率最高的语句是()A.DELETEFROM表名B.DROPTABLE表名C.TRUNCATETABLE表名D.CLEARTABLE表名14.Java中HashMap的默认初始容量和负载因子是()A.16、0.75B.32、0.75C.16、0.8D.32、0.815.SQL中LEFTJOIN左连接的查询规则是()A.只查询左右两表匹配的数据B.查询左表所有数据,右表匹配数据展示,不匹配显示NULLC.查询右表所有数据,左表匹配数据展示,不匹配显示NULLD.查询左右两表所有数据二、填空题(共10空,每空2分,共20分)1.Java中多态的实现前提是:继承、________、________。2.面向对象的三大特征是:封装、________、________。3.MySQL事务默认隔离级别是________。4.SQL中聚合函数sum、count、max、min、________常用于分组统计。5.Java中List集合________、________可重复,Set集合元素________。6.JDBC中________对象用于执行预编译SQL,防止SQL注入问题。三、简答题(共4题,每题5分,共20分)1.简述ArrayList和LinkedList的底层区别及适用场景。2.简述MySQL中WHERE和HAVING的区别。3.简述Java中==和equals()的区别。4.简述JDBC中Statement和PreparedStatement的区别。四、编程实操题(共3题,共30分)数据库表结构(统一使用)学生表student(sid主键、sname姓名、age年龄、gender性别、class_id班级编号)班级表class(class_id主键、class_name班级名称、teacher班主任)1.SQL编程:写出对应查询语句(每题5分,共10分)(1)查询所有年龄大于18岁的男生学生信息,按年龄降序排序。(2)联表查询,查询每个班级的班级名称、班主任及对应学生人数。2.Java编程:使用JDBC实现查询所有学生信息,遍历输出结果(10分)要求:加载驱动、获取连接、执行查询、遍历结果集、关闭所有资源,代码规范完整。3.Java基础编程:手写一个工具方法,判断字符串是否为空(空字符串、null、全空格均判定为空)(10分)参考答案及详细解析一、单项选择题答案及解析1.答案:A解析:B选项double精度高于float;C选项boolean仅支持true/false;D选项byte是有符号类型,取值范围-128~127。2.答案:C解析:newString("abc")会先在常量池创建"abc"常量,再在堆中创建对象,一共2个对象。3.答案:D解析:接口不能包含静态代码块、构造方法,抽象类可以包含静态代码块和构造方法。4.答案:A解析:ArrayList底层是动态数组,随机查询效率极高;LinkedList是双向链表,增删快、查询慢;HashSet、TreeMap非纯查询高效集合。5.答案:B解析:A选项Error是系统级异常,无法捕获;C选项若finally前执行System.exit(0),finally不会执行;D选项throw是抛出异常,throws是声明异常,作用不同。6.答案:B解析:DISTINCT用于查询结果去重;ORDERBY排序、GROUPBY分组、LIMIT限制条数。7.答案:B解析:%匹配任意长度任意字符,_匹配单个任意字符。8.答案:D解析:持久性指事务提交后数据永久保存,不会丢失;事务回滚是撤销未提交的操作。9.答案:C解析:主键索引天然唯一、非空,查询优先级和效率高于普通唯一索引,是数据库查询最优索引。10.答案:B解析:WHERE用于分组前过滤原始数据,HAVING用于GROUPBY分组后过滤分组结果。11.答案:A解析:JDBC标准执行流程:加载数据库驱动→获取数据库连接→创建SQL语句对象→执行SQL操作→关闭结果集、语句、连接资源。12.答案:C解析:synchronized用于实现同步,保证多线程安全;static静态修饰、final不可修改、volatile保证可见性不保证原子性。13.答案:C解析:TRUNCATE清空表数据,不记录事务日志,效率极高;DELETE逐行删除可回滚;DROP直接删除整张表结构和数据。14.答案:A解析:HashMap默认初始容量16,负载因子0.75,达到阈值自动扩容为原来2倍。15.答案:B解析:左连接以左表为基准,展示左表全部数据,右表无匹配数据时字段填充NULL。二、填空题答案1.重写、向上转型2.继承、多态3.可重复读(REPEATABLEREAD)4.avg(平均值)5.有序、可重复;不可重复6.PreparedStatement三、简答题答案解析1.ArrayList和LinkedList区别及适用场景底层结构:ArrayList基于动态数组实现,默认扩容1.5倍;LinkedList基于双向链表实现。性能特点:ArrayList随机访问、查询速度快,头尾增删效率低;LinkedList首尾增删速度快,随机查询效率低。适用场景:大量查询、少量增删场景用ArrayList;频繁增删、少量查询场景用LinkedList。2.WHERE和HAVING的区别1.执行时机:WHERE在分组(GROUPBY)之前过滤数据,HAVING在分组之后过滤分组结果;2.适用范围:WHERE可以单独使用,HAVING必须配合GROUPBY使用;3.聚合函数:WHERE不能使用聚合函数,HAVING支持聚合函数筛选;4.效率:WHERE过滤数据量更少,执行效率高于HAVING。3.Java中==和equals()的区别1.==是运算符:基本数据类型比较数值是否相等;引用数据类型比较对象内存地址是否相同;2.equals()是Object类方法:默认和==效果一致,重写后(如String、Integer)比较对象内容是否相等;3.核心差异:==比较地址/数值,equals重写后比较内容。4.Statement和PreparedStatement的区别1.安全性:Statement存在SQL注入风险,PreparedStatement预编译SQL,参数占位符传参,杜绝SQL注入;2.执行效率:PreparedStatement支持SQL预编译、缓存,批量操作效率远高于Statement;3.可读性:PreparedStatement使用?占位符,代码结构更清晰;4.适用场景:Statement适用于简单静态SQL,PreparedStatement适用于带参数、批量操作SQL。四、编程实操题答案1.SQL编程题(1)答案:sql

SELECT*FROMstudentWHEREage>18ANDgender='男'ORDERBYageDESC;(2)答案:sql

SELECTc.class_name,c.teacher,COUNT(s.sid)ASstudent_num

FROMclassc

LEFTJOINstudentsONc.class_id=s.class_id

GROUPBYc.class_id,c.class_name,c.teacher;2.JDBC查询学生信息Java代码java

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.Statement;

publicclassStudentJdbcDemo{

//数据库连接参数

privatestaticfinalStringDRIVER="com.mysql.cj.jdbc.Driver";

privatestaticfinalStringURL="jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";

privatestaticfinalStringUSER="root";

privatestaticfinalStringPASSWORD="123456";

publicstaticvoidmain(String[]args){

Connectionconn=null;

Statementstmt=null;

ResultSetrs=null;

try{

//1.加载驱动

Class.forName(DRIVER);

//2.获取数据库连接

conn=DriverManager.getConnection(URL,USER,PASSWORD);

//3.创建语句对象

stmt=conn.createStatement();

//4.执行查询SQL

Stringsql="SELECT*FROMstudent";

rs=stmt.executeQuery(sql);

//5.遍历结果集

System.out.println("学生信息列表:");

while(rs.next()){

intsid=rs.getInt("sid");

Stringsname=rs.getString("sname");

intage=rs.getInt("age");

Stringgender=rs.getString("gender");

intclassId=rs.getInt("class_id");

System.out.printf("学号:%d,姓名:%s,年龄:%d,性别:%s,班级编号:%d%n",

sid,sname,age,gender,classId);

}

}catch(Exceptione){

e.printStackTrace();

}finally{

//6.关闭资源,逆序关闭

try{

if(rs!=null)rs.close();

if(stmt!=null)stmt.close();

if(conn!=null)conn.close();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论