Java面试题
42、设有一个二维数组 A[m][n],假设A[0][0]存放的位置在 644(10),A[2][2]存放的文职在676(10)每个元素占一个空间,问 A[3][3](10)存放在什么位置? 脚注(10)表示用 10进制表示(C)
A.688
B.678
C.692
D.699
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong() {
System.out.print("pong");
}
A.pingpong
B.pongping
C.pingpong 和 pongping 都有可能
D.都有可能
class NULL {
public static void haha() {
System.out.println("haha");
}
public static void main(String[] args) {
((NULL) null).haha();
}
}
45、解释一下什么是 Servlet, 说一说 Servlet 的生命周期
Servlet 是一种服务器端的 Java 应用程序,具有独立于平台和协议的特性,可以生成动态的 Web 页面。 它担当客户请求(Web 浏览器或其他 HTTP 客户程序)与服务器响应(HTTP 服务器上的数据库或应用程序)的中间层。Servlet是位于 Web 服务器内部的服务器端的 Java 应用程序,与传统的从命令行启动的 Java 应用程序不同,Servlet 由 Web 服务器进行加载,该 Web 服务器必须包含支持 Servlet 的 Java 虚拟机。
Servlet 生命周期可以分成四个阶段:加载和实例化、初始化、服务、销毁。当客户第一次请求时,首先判断是否存在 Servlet 对象,若不存在,则由 Web 容器创建对象,而后调用 init()方法对其初始化,此初始化方法在整个 Servlet 生命周期中只调用一次。完成 Servlet 对象的创建和实例化之后,Web 容器会调用 Servlet 对象的 service()方法来处理请求。当 Web 容器关闭或者 Servlet 对象要从容器中被删除时,会自动调用 destory()方法。
对于一个 web 应用程序来说,过滤器是处于 web 容器内的一个组件,它会过滤特定请求资源请求信息和响应信息。一个请求来到时,web 容器会判断是否有过滤器与该信息资源相关联,如果有则交给过滤器处理,然后再交给目标资源,响应的时候则以相反的顺序交给过滤器处理,最后再返回给用户浏览器。
常见的过滤器用途主要包括:对用户请求进行统一认证、对用户的访问请求进行记录和审核、对用户发送的数据进行过滤或替换、转换图象格式、对响应内容进行压缩以减少传输量、对请求或响应进行加解密处理、触发资源访问事件等。
public static void bubbleSort() {
int arr[] = {-5, 29, 7, 10, 5, 16};
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] < arr[j + 1]) {
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(" " + arr[i] + " ");
}
}
48、写出一个单例的实现(懒加载方式)
class LazySingleton {
private LazySingleton() {
}
private static class SingletonHolder {
private static LazySingleton instance = new LazySingleton();
}
public static LazySingleton getInstance() {
return SingletonHolder.instance;
}
}
49、2006 年某人连续打工 24 天,共赚了 190 元(日工资 10 元,星期日工资 5 元,星期日休息无工资)。已知他打工是从 1 月下旬的某一天开始的,这个月的 1 日恰好是星期日, 这人打工结束的那一天是 2 月(C)日
A.2 月 6 日
B.2 月 14 日
C.2 月 18 日
D.2 月 21 日
A.15
B.14
C.13
D.12
A.11
B.12
C.13
D.14
5L 桶打满水,全部倒入 6L 桶;
5L 桶再次打满,往 6L 桶倒水至其满。此时 5L 桶留下 4L 水;
6L 桶清空,将 5L 桶中的 4L 水倒入 6L 桶;
5L 桶打满水,往 6L 桶倒水至其满,则 5L 桶中得 3L 水。
先打开第一个开关,开一会再关上,然后打开第二个开关进入房间再摸一下每个灯,发热的那盏是第一个开关的,亮的那盏是第二个开关的,没变化的那盏是第三个开关的。
把每双袜子分成两只。每人各拿一只。这样,每人手中就有四只黑袜,四只白袜。每人也就有两双黑袜,两双白袜了。
电梯每层都会开一下的,所以,在第一层就拿,到第二层,看到更大就换一下,更小就不换,一直这样上去,到最上层后,拿到的就是最大的。
A.0
B.1
C.2
D.3
A.程序无法翻译。
B.程序能正常编译,运行时或抛出 NoSuchMethodError 异常。
C.程序能正常编译,正常运行。
D.程序能正常编译,正常运行一会会立刻退出。
A.-Xms50M
B.-Xmx50M
C.-Xmn50M
D.-Xss50M
static boolean foo(char c) {
System.out.print(c);
return true;
}
public static void main(String[] args) {
int i = 0;
for (foo('A'); foo('B') && (i < 2); foo('C')) {
i++;
foo('D');
}
}
A.ABDCBDCB
B.ABDCDBCB
C.ABDBCDCB
D.ABDBCDCB
A.start()
B.run()
C.exit()
D.getPriority()
System.out.print(Integer.MAX_VALUE*2);
System.out.print(Integer.MIN_VALUE*2);
A.-2 -1
B.-1 -2
C.-2 0
D.-1 -1