【Java笔试题解析】
在2020年兴业银行的Java笔试中,涉及了多个核心的Java编程和技术概念。以下是对部分题目进行的详细解答:
1. 输入一个正整数,计算并输出距离它最近的对称数
对称数是指从左向右读和从右向左读都一样的数字,例如121、1221等。要找到一个数n的最近对称数,可以考虑将n转换为字符串,然后反转字符串,比较两者差异,取较小的差异值即可。
```java
public int nearestSymmetric(int n) {
String strN = String.valueOf(n);
String reversedStr = new StringBuilder(strN).reverse().toString();
int symmetric = Integer.parseInt(reversedStr);
int diff1 = Math.abs(n - symmetric);
int diff2 = Math.abs(n - (symmetric + 1));
return diff1 < diff2 ? symmetric : symmetric + 1;
}
```
2. 计算机存储系统分为几个层次?你是如何理解分层存储的?
计算机存储系统通常分为五层:CPU寄存器、高速缓存(L1, L2, L3)、主内存(RAM)、磁盘存储和网络存储。分层存储是基于速度和容量的平衡,越靠近CPU的层次速度越快但容量越小,远端层次则相反。通过这种层次结构,可以实现快速访问常用数据,同时兼顾大容量存储需求。
3. Java JDK额外提供的辅助工具及其作用
JDK提供了一系列的命令行工具,如:
- `javac`:编译Java源代码为字节码。
- `javadoc`:生成API文档。
- `jar`:打包和管理Java类库。
- `jconsole`:监控Java应用程序的性能和资源使用情况。
- `jmap`:生成堆转储或内存映射,帮助分析内存泄漏。
- `jstack`:显示线程堆栈信息,用于调试死锁等问题。
- `jvisualvm`:集成的多用途Java应用程序性能分析工具。
4. MySQL中的InnoDB引擎的理解
InnoDB是MySQL的一个事务型存储引擎,支持ACID特性,具有行级锁定和外键约束。它是默认的存储引擎,适合处理大量数据并需要事务安全的应用场景。InnoDB使用自适应哈希索引、MVCC(多版本并发控制)来提高并发性能,并实现了redo log和undo log来确保事务的原子性和持久性。
5. Java重载的几种方式
Java中的方法重载是指在一个类中定义多个同名方法,但参数列表不同(参数数量、类型或顺序)。这不包括返回类型,因为返回类型不影响方法调用。
6. DELETE与TRUNCATE的差别
DELETE语句可以删除表中的指定记录或全部记录,支持WHERE子句,可以有回滚操作,执行时会逐行处理,消耗时间较长。而TRUNCATE语句删除表中的所有记录,不支持WHERE子句,无回滚,操作速度快,但会重置表的自动增长计数器。
7. 什么是堆
堆是Java内存模型中的一部分,主要用于对象实例的存储。在Java中,堆内存分为新生代(Young Generation)、老年代(Tenured Generation)和永久代(Permanent Generation,Java 8后被元空间取代)。堆内存的大小可以通过JVM参数调整,它主要用于对象的创建和垃圾收集。新生代主要存放新创建的对象,当经过多次垃圾回收仍存活的对象会晋升到老年代。堆内存的管理是Java垃圾收集器的主要工作。