Java面试题—2023年8月22日—HRCT

news2024/11/24 0:16:43
  • 2023-08-22 14:13:52
  • 北京
  • huá ruǎn chāo tōng


 答案仅供参考,博主仅记录发表,没有实际查询,不保证正确性。


一、选择题(单选)

1、Java 语盲中,方法的重写(Overriding)和(Overloading)是多态性的不同表现下边哪些说法是对的?( )

A、重写是父类与子类之间多态性的一种表现
B、重写是一个类中多态性的一种表现
C、重载是一个类中多态性的一种表现
D、重载是父类与子类之间多态性的一种表现

2、Java 中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)( 西城区),截取结果为:北京市。正则表达式为( )

A、*.*?(?=W)*
B、*.*?(?=U0)*
c、*.*(?=W0)*
D、*.*(?=V)*

3、下列关于 Java 并发的说法中正确的是( )

A、CopyOnWriteArrayList 适用于写多读少的并发场景
B、ReadWriteLock 适用于读多写少的并发场景
C、ConcurrentHashMap 的写操作不需要加锁,读操作需要加锁
D、只要在定义 int 类型的成员变量i的时候加上 volatile 关键字,那么多线程并发执行 i++这样的操作的时候就是线程安全的了

4、什么是 Hibernate一级缓存? ( )

A、Hibernate 一级缓存是 Session 的缓存
B、Hibernate 一级缓存是 SessionFactory 的缓存
C、第一级缓存为必需,不允许且事实上也无法被卸除
D、第一级缓存可以设置

答案:

        1、A、重写是父类与子类之间多态性的一种表现

        2、B、.?(?=U0)*

        3、B、ReadWriteLock 适用于读多写少的并发场景

        4、A、Hibernate 一级缓存是 Session 的缓存

解析:

  1. 方法的重写(Overriding)是父类与子类之间多态性的一种表现,因为它涉及到子类重写父类的方法,从而实现运行时多态性。
  2. 正确的正则表达式应该是能匹配左括号前的内容,而不是匹配出现U0等字母的位置。所以答案应该是 B,.?(?=U0)* 是错误的。
  3. ReadWriteLock 是适用于读多写少的并发场景,它允许多个线程同时读取数据,但只允许一个线程写入数据,这有助于提高并发性能。
  4. Hibernate 一级缓存是 Session 的缓存,它存储从数据库中检索出的对象,以减少频繁的数据库访问,提高性能。第一级缓存在 Session 范围内有效,不同的 Session 之间不共享缓存。

  

二、问答题

1. 代码里有时可以看到 `extern "C"`,这语句是做什么用的?

   `extern "C"` 是用于在 C++ 代码中指定使用 C 链接约定的关键字。C++ 支持函数重载,即可以有不同参数的同名函数,而函数重载在编译后会产生不同的符号名,这会导致 C++ 代码和其他语言(如 C 语言)在链接时出现问题。通过在 C++ 代码中使用 `extern "C"`,可以使特定的函数按照 C 语言的链接约定进行编译和链接,从而与其他语言的代码能够正确链接。

2. 同步方法和同步块,哪个是更好的选择?

   同步方法和同步块都是用于处理多线程并发访问共享资源时的同步问题,但选择哪个取决于具体的情况。
   
   - 同步方法:使用 `synchronized` 关键字修饰方法,可以确保整个方法在同一时间只能被一个线程执行,从而保证了方法内部的代码块的原子性。但是,同步方法的粒度较大,可能会导致性能问题,特别是在方法内部包含多个不需要同步的代码块时。
   
   - 同步块:使用 `synchronized` 关键字修饰代码块,可以选择性地同步代码的部分区域,从而提高代码的并发性。同步块可以更细粒度地控制同步范围,但需要注意避免死锁等问题。
   
   更好的选择取决于需求。如果整个方法都需要同步,那么同步方法可能更方便。如果只需要同步方法中的某一部分代码,那么同步块可能更合适。

3. 什么是“依赖注入”和“控制反转”?

   - 依赖注入(Dependency Injection,DI):依赖注入是一种设计模式,它通过将依赖关系从一个对象传递给另一个对象,来降低耦合度并提高可测试性。在依赖注入中,组件不负责创建它所依赖的对象,而是由外部容器负责创建和注入这些依赖。这有助于松耦合,使得组件更加可复用和可测试。

   - 控制反转(Inversion of Control,IoC):控制反转是依赖注入的概念,它强调了控制的转移。传统上,程序中的控制流程由程序员直接控制,而在控制反转中,控制流程由外部容器或框架来控制。这样,程序员不再需要显式地创建和管理对象的依赖关系,而是将这些控制权交给外部容器。

   总结:依赖注入是实现控制反转的一种方式,它通过将对象的依赖关系从程序代码中剥离出来,从而实现松耦合和可维护的代码。


 

 一、Sql 语句编写

1、学生表:

1)创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
2)向学生表添加如下信息:
学号 姓名 年龄 性别 联系电话 学历
1 A 22 男 123456 小学
2 B 21 男 119 中学
3 C 23 男 110 高中
4 D 18 女 114 大学
3) 修改学生表的数据,将电话号码以 11 开头的学员的学历改为“大专”
4) 删除学生表的数据,姓名以C开头,性别为“男’的记录删除
5) 查询学生表的数据,将所有年龄小于 22 岁的,学历为“大专”的,学生的姓名和学号示出来
6) 查询学生表的数据,查询所有信息,列出前 25%的记录
7) 查询出学生表所有学生的姓名,性别,年龄降序排列
8) 按照性别分组查询学生表所有学生的平均年龄 

答案:

1) 创建学生表:

CREATE TABLE Student (
    学号 INT PRIMARY KEY,
    姓名 VARCHAR(50),
    年龄 INT,
    性别 VARCHAR(10),
    家庭住址 VARCHAR(100),
    联系电话 VARCHAR(20)
);

2) 向学生表添加信息:

INSERT INTO Student (学号, 姓名, 年龄, 性别, 联系电话, 学历)
VALUES
    (1, 'A', 22, '男', '123456', '小学'),
    (2, 'B', 21, '男', '119', '中学'),
    (3, 'C', 23, '男', '110', '高中'),
    (4, 'D', 18, '女', '114', '大学');

3) 修改学生表数据:

UPDATE Student
SET 学历 = '大专'
WHERE 联系电话 LIKE '11%';

4) 删除学生表数据:

DELETE FROM Student
WHERE 姓名 LIKE 'C%' AND 性别 = '男';

5) 查询学生表数据:

SELECT 学号, 姓名
FROM Student
WHERE 年龄 < 22 AND 学历 = '大专';

6) 查询学生表数据:

SELECT *
FROM Student
ORDER BY 学号
LIMIT (SELECT COUNT(*) FROM Student) / 4;

7) 查询学生表数据:

SELECT 姓名, 性别, 年龄
FROM Student
ORDER BY 年龄 DESC;

8) 按照性别分组查询学生表数据:
 

SELECT 性别, AVG(年龄) AS 平均年龄
FROM Student
GROUP BY 性别;

请注意,以上 SQL 语句只是示例,博主仅记录发表,不保证正确性。


2、购物车表

1.购物车表:cartdetail

序号SpdmysJe
商品编码金额
14103100
24103200
34105200
44071125
54103100
64105100


2.返券规则表:view_info_fq_new

OzdmDqdmSpdmFqbzFqjeKsrqJsrqQssdZzsd
券种编码 档期代码商品代码满足金额返券金额开始日期结束日期开始时间结束时间
AA00000003202305010141032002002023-5-12023-5-30 00:0023:58
AA00000004202305010141052001002023-5-12023-5-30 00:0023:58

要求:

1.请根据返券规则写出上面购物车中每个商品的返券金额,同时写出通过返券规则计算购物车中商返券的关联 sql 语句 

答案:

  • 写法一
SELECT
    cd.Spdm,
    cd.ysJe,
    COALESCE(vifn.Fqje, 0) AS 返券金额
FROM
    cartdetail cd
LEFT JOIN
    view_info_fq_new vifn ON cd.Spdm = vifn.Spdm
    AND cd.ysJe >= vifn.Fqbz
    AND CURDATE() BETWEEN vifn.Ksrq AND vifn.Jsrq
    AND CURTIME() BETWEEN vifn.Qssd AND vifn.Zzsd;

        解:使用了左连接来将购物车商品与返券规则进行匹配。条件包括购物车商品的商品编码与返券规则的商品代码匹配,购物车商品金额大于等于返券规则的满足金额,以及当前日期和时间在返券规则的生效日期范围内。使用 `COALESCE` 函数可以保证如果没有匹配到返券规则,则返券金额为 0。 

  • 写法二
SELECT cd.序号, cd.Spdm, vifn.Fqje AS 返券金额
FROM cartdetail cd
LEFT JOIN view_info_fq_new vifn ON cd.Spdm = vifn.Spdm AND cd.ysJe >= vifn.Fqbz

        解:使用左连接(LEFT JOIN),将购物车表(cartdetail)与返券规则表(view_info_fq_new)进行关联。通过商品编码(Spdm)和满足金额(ysJe)进行匹配,并筛选出购物车中每个商品对应的返券金额(Fqje)。如果购物车中某个商品无法匹配到返券规则,则返券金额为 NULL。

执行结果:

序号Spdm返券金额
1004103200
2004103200
3004105100
4004071NULL
5004103200
6004105100

以上是购物车中每个商品对应的返券金额。购物车中的商品编码(Spdm)与返券规则表中的商品代码(Spdm)进行匹配。购物车中的满足金额(ysJe)与返券规则表中的满足金额(Fqbz)进行比较,只有当购物车中商品的金额大于等于返券规则中的满足金额时,才会获得对应的返券金额。

  • 写法三

 根据购物车表cartdetail和返券规则表view_info_fq_new,可以写出如下SQL语句计算每个商品的返券金额:

SELECT 
    c.Spdm,
    SUM(c.ysJe) total,
    MAX(CASE WHEN c.Spdm = r.Spdm AND SUM(c.ysJe) >= r.Fqbz THEN r.Fqje ELSE 0 END) fqje
FROM cartdetail c
LEFT JOIN view_info_fq_new r
    ON c.Spdm = r.Spdm
GROUP BY c.Spdm;

SQL操作:
1. 从购物车表cartdetail中分组查询每个商品的总金额SUM(ysJe)。
2. 左连接返券规则表view_info_fq_new,匹配商品代码和满足返券条件。
3. 使用CASE WHEN判断:
   - 商品代码匹配并且总金额大于等于满足返券金额Fqbz时,返回返券金额Fqje
   - 其他情况返回0
4. GROUP BY分组,最终可以得到每个商品的总金额和对应的返券金额。
5.一次性根据购物车数据和返券规则计算出每个商品的返券情况。

二、问答题

1、说出以下聚合数的含义:avg ,sum,max,min,count,count(*)

  • avg:计算一组数的平均值。
  • sum:计算一组数的总和。
  • max:找出一组数中的最大值。
  • min:找出一组数中的最小值。
  • count:计算一组数据的数量,不包括 NULL 值。
  • count(*):计算一组数据的数量,包括 NULL 值。

2、左向外联接,右向外联接,全联接的关健字如何写?

  • 左外联接(Left Outer Join):关键字是 `LEFT JOIN` 或 `LEFT OUTER JOIN`。
  • 右外联接(Right Outer Join):关键字是 `RIGHT JOIN` 或 `RIGHT OUTER JOIN`。
  • 全外联接(Full Outer Join):不同的数据库系统可能有不同的关键字,例如在 PostgreSQL 中使用 `FULL JOIN` 或 `FULL OUTER JOIN`,在 SQL Server 中使用 `FULL OUTER JOIN`。


 请注意,以上答案仅供参考,博主仅记录发表,不保证正确性。


 原题:

 

 

 


下课。

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

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

相关文章

AI夏令营笔记——任务2

文章目录 任务说明实现思路优化方向 任务说明 任务要求与任务1一样&#xff1a; 从论文标题、摘要作者等信息&#xff0c;判断该论文是否属于医学领域的文献。 可以将任务看作是一个文本二分类任务。机器需要根据对论文摘要等信息的理解&#xff0c;将论文划分为医学领域的文…

Python中的时间序列分析模型ARIMA

大家好&#xff0c;时间序列分析广泛用于预测和预报时间序列中的未来数据点&#xff0c;ARIMA模型被广泛用于时间序列预测&#xff0c;并被认为是最流行的方法之一。本文将介绍如何在Python中搭建和评估用于时间序列预测的ARIMA模型。 什么是ARIMA模型 ARIMA模型是一种用于分…

Rocky部署Cobbler

1、安装软件 cobbler版本3.3.3 rockyliux9.2 [rootwenzi ~]#dnf -y install cobbler dhcp-server [rootwenzi ~]#systemctl enable --now cobblerd tftp.service httpd dhcpd 2、配置cobbler cobbler配置检查 [rootwenzi ~]#cobbler check The following are potential c…

html动态爱心代码【四】(附源码)

目录 前言 特效 完整代码 总结 前言 情人节马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c;可直接使用。…

logistic自相关检测

logistic自相关检测 clc clearvars;T10000 xzeros(1,T); x(1)0.98; for n1:(T-1)x(n1)4*x(n)*(1-x(n)); end p(x>0.5); n-(x<0.5); H1pn; % sum(pn,all) % sum(x,all)t-T1:T-1; N2*T-1; Rh1zeros(1,N); %自相关函数 Rh2zeros(1,N); fo…

React+Typescript 父子组件事件传值

好 之前我们将 state 状态管理简单过了一下 那么 本文 我们来研究一下事假处理 点击事件上文中我们已经用过了 这里 我们就不去讲了 主要来说说 父子之间的事件 我们直接来编写一个小dom 我们父组件 编写代码如下 import Hello from "./components/hello";functio…

Zabbix监控系统最新版安装

setenforce 0 设置SELinux 成为permissive模式 临时关闭selinux的 [rootwww yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo % Total % Received % Xferd Average Speed Time Time Time Current …

远程控制:用了向日葵控控A2后,我买了BliKVM v4

远程控制电脑的场景很多&#xff0c;比如把办公室电脑的文件发到家里电脑上&#xff0c;但是办公室电脑旁边没人。比如当生产力用的电脑一般都比较重&#xff0c;不可能随时带在身边&#xff0c;偶尔远程操作一下也是很有必要的。比如你的设备在工况恶劣的环境中&#xff0c;你…

线性代数强化第三章

目录 一&#xff0c;关于A伴随&#xff0c;A逆与初等矩阵 二&#xff0c;分块矩阵 三&#xff0c;矩阵方程 ​ 一&#xff0c;关于A伴随&#xff0c;A逆与初等矩阵 如何证明行列式的值不能是0&#xff1b; 此秩为1. 法一&#xff1a; 法二&#xff1a; 不用看是列变换还是行变…

CSPJ2020A真题大全 优秀的拆分,直播获奖,表达式,方格取数

CSPJ2020A. 优秀的拆分 (Excellent Split) 题目描述 一般来说&#xff0c;一个正整数可以拆分成若干个正整数的和。 例如&#xff0c;111111&#xff0c;101234101234101234 等。对于正整数 nnn 的一种特定拆分&#xff0c;我们称它为“优秀的”&#xff0c;当且仅当在这种拆分…

linux中互斥锁,自旋锁,条件变量,信号量,与freeRTOS中的消息队列,信号量,互斥量,事件的区别

RTOS 对于目前主流的RTOS的任务&#xff0c;大部分都属于并发的线程。 因为MCU上的资源每个任务都是共享的&#xff0c;可以认为是单进程多线程模型。 【freertos】003-任务基础知识 在没有操作系统的时候两个应用程序进行消息传递一般使用全局变量的方式&#xff0c;但是如…

高等数学之微分中值定理,柯西中值定理,拉格朗日中值定理,罗尔定理

高等数学之微分中值定理 极值点处的导数为0 但不能反推 驻点&#xff1a;导数为0的点 翻译&#xff1a;一笔画&#xff0c;光滑&#xff0c;两端相等 看图即可 这个推导由于不一点是同一点&#xff0c;不能证明

函数式编程-Stream流学习第一节

1 为什么学习 1.现在很多公司在编程中大量使用函数式编程-Stream流格式代码&#xff0c;所以为了能够看懂公司的代码 2.大量数据下处理集合效率高--因为有并行流 3.代码可读性高 4.消灭嵌套地狱 2 函数式编程思想 2.1 概念 面向对象编程是关注于用对象完成什么事情。而函数式…

Linux 进程间通信(IPC)

文章目录 进程间通信介绍进程间通信的概念进程间通信的目的进程间通信的本质理解进程间通信分类 管道匿名管道匿名管道的原理 pipe函数管道的特点 命名管道命名管道的原理使用相关命令创建命名管道使用命名管道实现server端和client端通信 system V共享内存共享内存通信的基本原…

Linux: scp 使用 Permission denied 错误解决

scp: /system.img Permission denied权限被拒绝&#xff0c;换一个目录执行&#xff0c;或者给这个目录添加权限 chmod 777 从本地复制到远程 scp local_file remote_usernameremote_ip:remote_file scp local_file remote_ip:remote_file 从远程复制到本地 scp rootwww.run.…

3D WEB轻量化引擎HOOPS产品助力NAPA打造船舶设计软件平台

NAPA&#xff08;Naval Architectural PAckage&#xff0c;船舶建筑包&#xff09;&#xff0c;来自芬兰的船舶设计软件供应商&#xff0c;致力于提供世界领先的船舶设计、安全及运营的解决方案和数据分析服务。NAPA拥有超过30年的船舶设计经验&#xff0c;年营业额超过2560万欧…

罗勇军 →《算法竞赛·快冲300题》每日一题:“小球配对” ← 并查集

【题目来源】http://oj.ecustacm.cn/problem.php?id1850http://oj.ecustacm.cn/viewnews.php?id1023【题目描述】 给定 n 个小球&#xff0c;编号为 1-n&#xff0c;给定 m 个篮子&#xff0c;编号为 1-m。 每个球只允许放入样例给定的编号为 Ai 或者 Bi 的两个篮子中的 1 个…

从不均匀性角度浅析AB实验

本篇的目的是从三个不均匀性的角度,对AB实验进行一个认知的普及,最终着重讲述AB实验的一个普遍的问题&#xff0c;即实验准确度问题。 一、AB实验场景 在首页中&#xff0c;我们是用红色基调还是绿色基调&#xff0c;是采用门店小列表外商品feed&#xff08;左图&#xff09;…

【jstat命令】查看jvm内存占用和GC情况

以下两个常用命令 第一个命令&#xff1a;用作查看内存占用和GC情况&#xff08;当前老年代内存空间、老年代使用空间…&#xff09;&#xff1b; 第二个命令&#xff1a;用作查看内存分配情况&#xff08;老年代最小内存空间、老年代最大内存空间…&#xff09;。 1、当前内存…

excel文本函数篇3

replace的替换&#xff0c;是通过指定位置做替换&#xff0c;只能替换一个&#xff0c;跟python中的不一样&#xff0c;python中是通过字串替换。那么怎么实现全部替换呢&#xff1f; ----> substitute函数 &#xff08;1&#xff09;后缀没有B&#xff1a;一个字节代表一个…