JAVA面试最常遇到的3道题及讲解

JAVA试题1:

public class Adtec {
    public static void main(String[] args) {
        String a = "1";
        String b = new String("1");

        System.out.println("表达式1:" + (a == b));
        System.out.println("表达式2:" + a.equals(b));
        System.out.println("表达式3:" + (a = b));
    }
}

1)上面程序中表达式1、表达式2、表达式3的输出结果是什么?
2)变量a和b的内存机制相同吗?如果有相同或不同请说明原因。

1)答案:

表达式1:false
表达式2:true
表达式3:1

2)答案:

String a = “1”; a指向String的常量池中的“1”;
解说理论:创建字符串时 JVM 会查看内部的缓存池是否已有相同的字符串存在:如果有,则不再使用构造函数构造一个新的字符串,直接返回已有的字符串实例;若不存在,则分配新的内存给新创建的字符串。

String b = new String(“1”); 在内存中生成一个String的对象,同时在内存中生成一个指向刚才创建的String对象的一个引用,也就是b。
解说理论:直接调用构造函数来创建字符串,如果所创建的字符串在字符串缓存池中不存在则调用构造函数创建全新的字符串,如果所创建的字符串在字符串缓存池中已有则再拷贝一份到 Java 堆中。

JAVA试题2:

1)请说明数据库连接池的原理。
2)如果让你设计一个数据库连接池,你可能会考虑到哪些方面的问题?

1)答案:

数据库连接池的基本思想就是为数据库连接 建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。

2)答案:

1、并发问题
2、事务处理
3、连接池的分配与释放策略
4、数据库连链接的复用性
5、连接池维护及可配置性
6、异常处理

JAVA试题3:

写一个方法求一个字符串里面的每个字符和它的个数,如 “adtecbagbao”

答案:

答案有多种写法,下面方法仅供参考:

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java