当前位置: 首页 > news >正文

Java岗笔试示例题

Java核心与并发编程选择题

关于 Java 中的 String 类,以下说法正确的是?​

  • A. String 是可变对象,修改字符串内容不会创建新对象
  • B. String s = “abc” 和 String s = new String(“abc”) 在内存中创建的对象数量相同
  • C. String 类被 final 修饰,不能被继承
  • D. 推荐使用 String 拼接大量字符串,性能最好

答案:C
解析​:
String 是不可变对象(A错);“abc” 会先在字符串常量池创建对象,而 new String(“abc”) 会在堆和常量池各创建一个(或复用常量池),对象数量不同(B错);拼接大量字符串应使用 StringBuilder 或 StringBuffer(D错)。
要掌握字符串的内存分配:主要涉及两个区域:字符串常量池和Java堆内存。使用new关键字JVM会强制在普通内存中创建一个新的String对象,所以new String(“abc”)是创建了两个对象

在多线程环境下,以下哪个关键字可以保证变量的可见性和禁止指令重排序?

  • A static
  • B volatile
  • C transient
  • D synchronized

答案:B​​
​​解析​​:volatile 关键字的核心作用是保证共享变量的可见性,并禁止 JVM 进行指令重排序,但​​不保证原子性​​。synchronized 虽然也能保证可见性,但它是通过锁机制实现的,而 volatile 是轻量级的。

使用synchronized保证线程同步

关于 HashMap 的底层数据结构,以下描述错误的是?​​

  • A. JDK 1.7 中底层是数组 + 链表
  • B. JDK 1.8 中底层是数组 + 链表 + 红黑树
  • C. 当链表长度超过 8 时,链表一定会立即转换为红黑树
  • D. HashMap 是非线程安全的

​​答案:C​​
​​解析​​:在 JDK 1.8 中,链表转红黑树需要同时满足两个条件:**链表长度大于等于 8 ​​且​​ 数组长度大于等于 64。**如果数组长度不足 64,会优先进行数组扩容,而不是转红黑树。

Spring框架与JVM选择题

在 Spring 框架中,@Transactional 注解默认的事务传播行为是?​​

  • A. REQUIRED
  • B. REQUIRES_NEW
  • C. NESTED
  • D. SUPPORTS

​​答案:A​​
​​解析​​:Spring 事务默认传播行为是 REQUIRED,即如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。这是最常用也最符合大多数业务场景的传播机制。

了解Spring 事务,深入理解Spring事务,

了解数据库中事务,是数据库操作的基本单元,其四个特性ACID特性。
Spring 事务的核心是声明式事务管理,它通过 AOP(面向切面编程)实现,开发者无需手动编写事务控制代码(如begin、commit、rollback),只需通过注解或 XML 配置即可完成事务管理。

事务管理的两种方式:

  • 编程式事务
  • 声明式事务:通过@Transactional注解或 XML 配置声明事务规则,由 Spring 自动管理事务,代码简洁,是日常开发的首选方式。

spring事务的核心属性:

  • 传播行为,默认为REQUIRED
  • 隔离级别,基于数据库的隔离级别实现,默认为DEFAULT

以下哪种 GC 算法主要解决内存碎片问题?​​

  • A. 复制算法
  • B. 标记 - 清除算法
  • C. 标记 - 整理算法
  • D. 分代收集算法

​​答案:C​​
​​解析​​:标记 - 清除算法会产生大量不连续的内存碎片;复制算法主要用于新生代;而标记 - 整理算法在标记并清除死亡对象后,会将存活对象向一端移动,从而解决内存碎片问题,常用于老年代。

数据库与SQL专项题

在 SQL 中,若要查询某表中某列值为 NULL 的记录,以下写法正确的是?​​

  • A. WHERE col = NULL
  • B. WHERE col IS NULL
  • C. WHERE col != NULL
  • D. WHERE col NOT NULL

​答案:B​​
​​解析​​:在 SQL 标准中,NULL 代表未知,不能使用等号(=)进行比较,必须使用 IS NULL 或 IS NOT NULL 来判断。

关于数据库事务的隔离级别,以下哪个级别可以解决“不可重复读”问题?​​

  • A. Read Uncommitted(读未提交)
  • B. Read Committed(读已提交)
  • C. Repeatable Read(可重复读)
  • D. Serializable(串行化)
    ​​
    答案:C​​
    ​​解析​​:Read Committed 解决了脏读但存在不可重复读;Repeatable Read 通过锁定读取的行或 MVCC 机制,保证了在同一事务中多次读取同一数据结果一致,解决了不可重复读问题(MySQL 默认隔离级别)。

​​以下 SQL 语句的执行结果是?​​

SELECT COUNT(*) FROM employees WHERE salary > 5000;

  • A. 查询 salary 大于 5000 的记录数,包含 salary 为 NULL 的记录
  • B. 查询 salary 大于 5000 的记录数,不包含 salary 为 NULL 的记录
  • C. 查询所有记录数
  • D. 语法错误
    ​​
    答案:B​​
    ​​解析​​:WHERE 条件 salary > 5000 会过滤掉不满足条件的行,而 NULL 值与任何数值比较(包括大于)结果都为 UNKNOWN(即 false),因此 NULL 值会被排除在结果集之外。

在 SQL 中,LEFT JOIN 和 RIGHT JOIN 的主要区别是?​​

  • A. LEFT JOIN 返回左表所有记录,RIGHT JOIN 返回右表所有记录
  • B. LEFT JOIN 返回右表所有记录,RIGHT JOIN 返回左表所有记录
  • C. 两者返回的结果集总是相同的
  • D. LEFT JOIN 只能用于内连接

​​答案:A​​
​​解析​​:LEFT JOIN(左连接)会返回左表的所有记录,即使右表中没有匹配的记录(右表对应字段为 NULL);RIGHT JOIN(右连接)则相反,返回右表的所有记录。

​​若要查询每个部门中薪资最高的员工信息,以下哪种 SQL 思路最合适?​​

A. 使用简单的 GROUP BY 部门分组
B. 使用子查询或窗口函数(如 ROW_NUMBER())
C. 使用 LEFT JOIN 连接两次员工表
D. 使用 UNION 合并所有员工记录

答案:B​​
​​解析​​:简单的 GROUP BY 只能对分组列或聚合函数(如 MAX(salary))进行查询,无法直接获取该员工的其他详细信息(如姓名)。通常需要使用子查询先找出各部门最高薪资,再关联员工表;或者使用窗口函数 ROW_NUMBER() PARTITION BY 部门 ORDER BY 薪资 DESC 来取排名第一的记录。

sql示例:假设一张员工表employees,查询示例

SELECTdepartment_id,employee_name,salaryFROM(SELECTdepartment_id,employee_name,salary,-- 按部门分组,并按薪资降序进行排名ROW_NUMBER()OVER(PARTITIONBYdepartment_idORDERBYsalaryDESC)ASrnFROMemployees)ASranked_employeesWHERErn=1;

SQL题考察

考察基础查询、多表关联、分组聚合以及窗口函数等核心能力

基础查询与条件筛选

​​题目 1​​:有一张员工表 employees(字段:id, name, salary, dept_id, hire_date)。请查询薪资大于 8000 且入职时间在 2023 年之后的员工姓名和薪资,按薪资从高到低排序。

SELECTname,salaryFROMemployeesWHEREsalary>8000ANDhire_date>'2023-12-31'ORDERBYsalaryDESC;

考查 WHERE 多条件筛选(AND)、日期比较以及 ORDER BY 降序排列。

题目2:查询员工表中名字以“张”开头,且薪资在5000到10000之间的员工信息。

SELECT*FROMemployeesWHEREnameLIKE'张%'ANDsalaryBETWEEN5000AND10000;

考点解析​​:考查模糊查询 LIKE 的通配符用法,以及 BETWEEN…AND 的范围筛选。

多表关联查询

​​题目 3​​:有一张部门表 departments(字段:dept_id, dept_name)。请查询所有员工的姓名、所属部门名称,包含那些暂时没有分配部门的员工(部门名称显示为 NULL)。

SELECTe.name,d.dept_nameFROMemployees eLEFTJOINdepartments dONe.dept_id=d.dept_id;

​​考点解析​​:考查 LEFT JOIN 的使用场景,即保留左表(员工表)所有记录,右表无匹配时显示 NULL。

​​题目 4​​:查询“技术部”所有员工的姓名和薪资

SELECTe.name,e.salaryFROMemployees eINNERJOINdepartments dONe.dept_id=d.dept_idWHEREd.dept_id='技术部';

​​考点解析​​:考查 INNER JOIN 内连接,只返回两表中关联字段匹配成功的记录。

分组与聚合统计

​​题目 5​​:查询每个部门的平均薪资,并筛选出平均薪资大于 7000 的部门。

直接使用聚合函数求平均,按照GROUP BY分组,并使用HAVING子句对聚合结果筛选

SELECTdept_id,AGV(salary)ASavg_salaryFROMemployeesGROUPBYdept_idHAVINGAVG(salary)>7000;

考点解析​​:考查 GROUP BY 分组以及 HAVING 子句对聚合结果进行筛选(注意:不能用 WHERE 筛选聚合函数结果)

​​题目 6​​:统计每个部门的人数,并按人数从多到少排序。

SELECTdept_id,COUNT(*)ASemp_countFROMemployeesGROUPBYdept_idORDERBYemp_countDESC;

​​考点解析​​:考查聚合函数 COUNT(*) 的使用以及分组后的排序。

进阶窗口函数与子查询

​​题目 7​​:查询每个部门薪资排名前三的员工姓名、部门ID和薪资。(假设薪资不重复,若重复可考虑使用 DENSE_RANK())

显然需要使用子查询,然后获取前三排名

SELECTname,dept_id,salaryFROM(SELECTname,dept_id,salary,ROW_NUMBER()OVER(PARTITIONBYdept_idORDERBYsalaryDESC)ASrankFROMemployees)tWHEREt.rank<=3;

考点解析​​:考查窗口函数 ROW_NUMBER() 或 RANK(),配合 PARTITION BY 进行分组排名,这是银行科技岗笔试中区分度较高的考点。

题目 8​​:查询薪资高于公司所有员工平均薪资的员工姓名和薪资。

​​参考 SQL​​:

SELECTname,salaryFROMemployeesWHEREsalary>(SELECTAVG(salary)FROMemployees);

​​考点解析​​:考查子查询的使用,先通过子查询计算出全局平均值,再在外层进行筛选。

http://www.jsqmd.com/news/1110407/

相关文章:

  • 3步实现HTML网页到Figma设计稿的智能转换:打破设计与开发的壁垒
  • BEV感知: nuScenes 3D 检测指标
  • SmallThinker 3B:小模型如何实现可靠本地化思维链推理
  • 百考通AI开题报告专治目标虚方法空进度假等问题
  • 免费额度随心用!okbiye 一站式 AI 科研绘图,覆盖本科毕设到 SCI 期刊全制图需求
  • 2026深度实测:AI编程工具vibe coding能力全对比
  • 模板驱动型文档自动化:非技术人员的智能文档生成方案
  • 都以为东莞注塑模具供应商好找,实则靠谱优质的难寻?
  • OpenAI Assistants API:从聊天接口到自主工作流的范式升级
  • Claude 3.5 Sonnet如何赋能生物信息学分析流程
  • N-Queen遗传算法实战:从100皇后求解看GA工程化落地
  • 微提示工程:用几十字符提示词替代万元级AI API
  • 3D-LLM:大语言模型如何直接生成可制造三维模型
  • Linux 【08-grep命令超详细教程】
  • 企业微信二次开发API 项目中的数据权限:按员工、部门还是业务线控制
  • 大模型稀疏激活真相:MoE参数量、2%激活率与工程实践
  • 遗传算法求解N皇后问题的Python实操指南
  • 2026深度实测:两款主流AI编程工具vibe coding能力全对比
  • 工业4-20mA电流环技术及STM32与DAC161S997实现方案
  • Playnite游戏库管理器:终极一站式游戏管理解决方案
  • Windows系统文件bcryptprimitives.dll丢失找不到问题解决
  • 大电流FOC控制:A89307与TM4C123的BLDC电机精准驱动方案
  • 【AI演进史】从图灵测试到Agent时代:一部人工智能的跌宕七十年
  • Mac电脑查看端口号占用
  • 3步快速上手HunterPie:怪物猎人世界最强辅助工具使用指南
  • 一键解锁九大网盘下载限制:LinkSwift网盘直链下载助手终极指南
  • AI编排实战:MuleSoft+LangChain构建企业级AI集成架构
  • 如何使用ChatIG Python SDK快速集成AI能力
  • 如何选择最适合你的多协议下载器?Gopeed全平台解决方案详解
  • 20+专业钓鱼邮件模板生成器:PhishMailer安全研究工具详解