第一部分 Java基础
第二部分 Java进阶

初级Java工程师面试题(42~81企业真题)

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

43、下列代码执行结果是(B)

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.都有可能

44、下面程序能正常运行吗(可以)

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()方法。

46、过滤器有哪些作用和用法?

对于一个 web 应用程序来说,过滤器是处于 web 容器内的一个组件,它会过滤特定请求资源请求信息和响应信息。一个请求来到时,web 容器会判断是否有过滤器与该信息资源相关联,如果有则交给过滤器处理,然后再交给目标资源,响应的时候则以相反的顺序交给过滤器处理,最后再返回给用户浏览器。

常见的过滤器用途主要包括:对用户请求进行统一认证、对用户的访问请求进行记录和审核、对用户发送的数据进行过滤或替换、转换图象格式、对响应内容进行压缩以减少传输量、对请求或响应进行加解密处理、触发资源访问事件等。

47、写出一个冒泡排序

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 日

50、由甲地到乙地有一天线路的巴士,全程行驶时间 42 分钟,到达总站后,司机至少休息 10 分钟,巴士就掉头行驶,如果这条线路甲,乙两边总站每隔 8 分钟都发一辆(不必是同一时间),则这条线路至少需要是多少俩巴士(C)

A.15

B.14

C.13

D.12

51、编号为 1 至 10 的 10 个果盘中,每盘都盛有水果,共盛放 100 个。其中第一盘里有 16 个,并且编号相邻的三个果盘中水果是的和都相等,求第 8 盘中水果最多可能有几个(A)

A.11

B.12

C.13

D.14

52、假设一个池塘,里面有无穷多的水,现在有 2 个空水壶,容积分别是 5 升和 6 升,问如何用这两只水壶取得 3 升水。

5L 桶打满水,全部倒入 6L 桶;

5L 桶再次打满,往 6L 桶倒水至其满。此时 5L 桶留下 4L 水;

6L 桶清空,将 5L 桶中的 4L 水倒入 6L 桶;

5L 桶打满水,往 6L 桶倒水至其满,则 5L 桶中得 3L 水。

53、在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制哪一盏灯。

先打开第一个开关,开一会再关上,然后打开第二个开关进入房间再摸一下每个灯,发热的那盏是第一个开关的,亮的那盏是第二个开关的,没变化的那盏是第三个开关的。

54、两个盲人,他们各自买个两双黑袜和白袜,8 双袜子的布质,大小完全相同,每双袜子都有 1 张商标纸连着,两位盲人不小心把 8 双袜子混在的一起,问他们怎样才能取回黑袜和白袜各两双。

把每双袜子分成两只。每人各拿一只。这样,每人手中就有四只黑袜,四只白袜。每人也就有两双黑袜,两双白袜了。

55、一楼到十楼的每层电梯门口都方和一颗钻石,钻石大小不一,你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,手里只能拿一颗钻石,问怎样才能拿到最大的钻石。

电梯每层都会开一下的,所以,在第一层就拿,到第二层,看到更大就换一下,更小就不换,一直这样上去,到最上层后,拿到的就是最大的。

56、ArrayList list = new ArrayList(20);语句中的 list 集合大小扩充了几次(A)

A.0

B.1

C.2

D.3

57、如果去掉了 main 方法的 static 修饰符会怎样(B)

A.程序无法翻译。

B.程序能正常编译,运行时或抛出 NoSuchMethodError 异常。

C.程序能正常编译,正常运行。

D.程序能正常编译,正常运行一会会立刻退出。

58、启动 java 程序进程时,输入一下哪个参数可以实现年轻代的堆大小为 50M(C )

A.-Xms50M

B.-Xmx50M

C.-Xmn50M

D.-Xss50M

59、下面程序输出的结果是(A)

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

60、下面哪些是 Thread 类的方法(A,B,D)

A.start()

B.run()

C.exit()

D.getPriority()

61、以下语句输出的结果是什么(C)

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

62、​​log4j的优先级从高到低的排序为(A)

A.error>warn>info>debug

B.warn>info>debug>error

C.warn >debug>error>info

D.error>warn>debug>info

63、下列哪些方法可以使线程从运行状态进入到阻塞状态(BCD)

A.notify

B.wait

C.sleep

D.yield

64、下列关于 Thread 类提供的线程控制的方法中,错误的一项是(A)

A.在线程A中执行线程 B 的 join()方法,则线程 A 等待直到 B 执行完成。

B.线程A通过调用 interrupt()方法来中断其阻塞状态。

C.currentThread()方法返回当前线程的引用。

D.若线程A调用方法 isAlive()返回为 true,则说明A正在执行中。

65、设String s1 =”Topwalk”;String s2 =”Company”; 以 下 方 法 可 以 得 到 字 符 串“TopwalkCompany” 有:(ABD)

A.s2+s1;

B.s1.concat(s2)

C.s1.append(s2);

D.StringBuffer buf = new StringBuffer(s1); buf.append(s2);

66、String a = new String(“1”+”2”)最终创建了几个对象(D)

A.1

B.2

C.3

D.4

67、int 类型占用(B)个字节?

A.2

B.4

C.8

D.16

​​​​​​​68、下列那一条语句可以实现快速的复制一张数据库表(C)

A.select * into b from a where 1<>1;

B.creat table b as select * from a where 0=1;

C.insert into b as select * from a where 1<>1;

D.insert into b select * from a where 1<>1;

​​​​​​​69、属于单例模式的特点的是(ACD)

A.提供了对唯一实现的受控访问

B.允许可变数目的实例

C.单例模式的抽象层会导致单例类扩展有和那的困难

D.单例模式很容易导致数据库的连接池溢出

70、选择 Oracle 的分页语句的关键字(A)

A.rownum

B.limit

C.TOP

D.pagenum

​​​​​​​71、选出可以查询出所有的表和视图的方法:(B)

A.preparedStatement.getMetaData().getTables(***);

B.connection.getMetaData().getTables(***);

C.result.getMetaData().getTables(***);

D..DiverManager.getMeta().getTables(***);

​​​​​​​72、可以监控到数据库变化的机制有哪些(ABC)

A.存储过程

B.数据库日志

C.触发器

D.物化视图

​​​​​​​73、清空表所有数据的性能最优的语句是哪一个(B)

A.delete from tsuer;

B.truncate table tuser;

C.drop table tuser;

D.delete tuser;

​​​​​​​74、文件对外共享的协议有哪几个(AB)​​​​​​​

A.FTP

B.Windows 共享

C.TCP

D.SSH

​​​​​​​75、关于Java中特殊符号的用法正确的是(AD)

A.判断一个字符串 str 中是否含有“.”,可以根据 str.indexOf(“.”)是否等于-1 判断。

B.判断一个字符串 str 是否含有“.”,可以根据 str.indexOf(“\\.”)是否等于-1 判断。

C.根据“.”分隔字符串 str 的写法可以是 str.split(“\\.”)

D.根据“.”分隔字符串 str 的写法可以是 str.split(“.”)

76、根据以下代码回答问题,放置什么方法在第 6 行,会引起编译错误的是(B)

1.class Super {
2.    public float getNum() {
3.    }
4.}
5.public class Sub extends Super {
6.
7.}

A.public float getNum{return 4.0f;}

B.public void getNum(){}

C.public void getNum(double d()){}

D.public double getNum(float d){return 4.0d;}

​​​​​​​77、根据以下代码回答问题:输出结果是什么?(B)

class Foo {
    public static void main(String args[]) {
        try {
            return;
        } finally {
            System.out.println("Finally");
        }
    }
}

A.print out nothing;

B.print out “Finally”

C.编译错误

D.以上都不对

​​​​​​​78、根据以下代码回答问题,请问输出 i 和 j 的值是多少(D)

int i = 1, j = 10;
do {
    if (i++ > --j) continue;
} while (i < 5);

A.i=6 j=5

B.i=5 j=5

C.i=6 j=4

D.i=5 j=6

79、​​​​​​​请问以下是java关键字的有?(CD)

A.run

B.low

C.import

D.implements

​​​​​​​79、以下哪些不属于约束(CD)

A.主键

B.外键

C.索引

D.唯一索引

E.not null

​​​​​​​80、下列关于数据库连接池的说法中哪个是错误的(D)

A.服务器启动时会初始建立一定数量的池连接,并一直维持不少于此数目的池连接。

B.客户端程序需要连接时,池驱动程序会返回一个使用的池连接并将其使用计数加 1。

C.如果当前没有空闲连接,驱动程序就会再新建一定数量的连接,新建连接的数量可以由配置参数决定。

D.当使用池连接调用完成后,池驱动程序将此连接标记为空间,其他调用就可以使用这个连接。​​​​​​​

全部教程