面试也是一场考试,面试也像考试一样,目的是检验能力水平和资格。既然也是考试,一定是因人而异的,在java面试中,会根据面试的职位和等级的不同,出现不同难度的面试题和考核标准。这篇文章汇总30道初级java工程师面试题,没有很严格安排好照分是java数据库还是框架的知识整理面试题,而是按照java面试题初级java工程师的难度标准做了汇总整理,希望对初级java工程师有所帮助。
1、什么是 Servlet?
答:Servlet 是一种服务器端的 Java 应用程序,具有独立于平台和协议的特性,可以生成动态的 Web 页面。它担当客户请求(Web浏览器或其他HTTP 客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。Servlet是位于Web服务器内部的服务器端的java应用程序,与传统的从命令行启动的 Java 应用程序不同,Servlet 由Web服务器进行加载,该 Web 服务器必须包含支持 Servlet 的java虚拟机。
2、Servlet 的生命周期分几个阶段?
答:Servlet 生命周期可以分成四个阶段:加载和实例化、初始化、服务、销毁。当客户第一次请求时,首先判断是否存在 Servlet 对象,若不存在,则由 Web 容器创建对象,而后调用 init()方法对其初始化,此初始化方法在整个 Servlet 生命周期中只调用一次。完成 Servlet 对象的创建和实例化之后,Web 容器会调用 Servlet 对象的service()方法来处理请求。当 Web 容器关闭或者 Servlet 对象要从容器中被删除时,会自动调用 destory()方法。
3、过滤器有哪些作用和用法?
答:对于一个web应用程序来说,过滤器是处于web容器内的一个组件,它会过滤特定请求资源请求信息和响应信息。一个请求来到时,web 容器会判断是否有过滤器与该信息资源相关联,如果有则交给过滤器处理,然后再交给目标资源,响应的时候则以相反的顺序交给过滤器处理,最后再返回给用户浏览器。
常见的过滤器用途主要包括:对用户请求进行统一认证、对用户的访问请求进行记录和审核、对用户发送的数据进行过滤或替换、转换图象格式、对响应内容进行压缩以减少传输量、对请求或响应进行加解密处理、触发资源访问事件等。
4、写出一个冒泡排序
答:
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] + " ");
}
}
5、写出一个单例的实现(懒加载方式)
答:
class LazySingleton {
private LazySingleton() {
}
private static class SingletonHolder {
private static LazySingleton instance = new LazySingleton();
}
public static LazySingleton getInstance() {
return SingletonHolder.instance;
}
}
6、设有一个二维数组 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
7、下列代码执行结果是(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.都有可能
8、下面程序能正常运行吗?
class NULL {
public static void haha() {
System.out.println("haha");
}
public static void main(String[] args) {
((NULL) null).haha();
}
}
答:可以正常运行
9、如果去掉了main方法的 static 修饰符会怎样(B)
A.程序无法翻译。
B.程序能正常编译,运行时或抛出 NoSuchMethodError 异常。
C.程序能正常编译,正常运行。
D.程序能正常编译,正常运行一会会立刻退出。
10、下面程序输出的结果是(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
11、下面哪些是Thread 类的方法(A,B,D)
A.start() B.run() C.exit() D.getPriority()
12、下列关于Thread 类提供的线程控制的方法中,错误的一项是(A)
A.在线程A中执行线程B的 join()方法,则线程A等待直到B执行完成。
B.线程A通过调用 interrupt()方法来中断其阻塞状态。
C.currentThread()方法返回当前线程的引用。
D.若线程A调用方法isAlive()返回为true,则说明A正在执行中。
13、设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);
14、String a = new String(“1”+”2”)最终创建了几个对象(D)
A.1 B.2 C.3 D.4
15、int 类型占用(B)个字节?
A.2 B.4 C.8 D.16
16、下列那一条语句可以实现快速的复制一张数据库表(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;
17、属于单例模式的特点的是(ACD)
A.提供了对唯一实现的受控访问
B.允许可变数目的实例
C.单例模式的抽象层会导致单例类扩展有和那的困难
D.单例模式很容易导致数据库的连接池溢出
18、选择Oracle的分页语句的关键字(A)
A.rownum B.limit C.TOP D.pagenum
19、选出可以查询出所有的表和视图的方法:(B)
A.preparedStatement.getMetaData().getTables(***);
B.connection.getMetaData().getTables(***);
C.result.getMetaData().getTables(***);
D..DiverManager.getMeta().getTables(***);
20、可以监控到数据库变化的机制有哪些(ABC)
A.存储过程 B.数据库日志 C.触发器 D.物化视图
21、清空表所有数据的性能最优的语句是哪一个(B)
A.delete from tsuer;
B.truncate table tuser;
C.drop table tuser;
D.delete tuser;
22、文件对外共享的协议有哪几个(AB)
A.FTP B.Windows 共享 C.TCP D.SSH
23、关于Java中特殊符号的用法正确的是(AD)
A.判断一个字符串 str 中是否含有“.”,可以根据 str.indexOf(“.”)是否等于-1 判断。
B.判断一个字符串 str 是否含有“.”,可以根据 str.indexOf(“\\.”)是否等于-1 判断。
C.根据“.”分隔字符串 str 的写法可以是 str.split(“\\.”)
D.根据“.”分隔字符串 str 的写法可以是 str.split(“.”)
24、根据以下代码回答问题,放置什么方法在第 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;}
25、根据以下代码回答问题:输出结果是什么?(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.以上都不对
26、根据以下代码回答问题,请问输出 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
27、请问以下是java关键字的有?(CD)
A.run B.low C.import D.implements
28、由甲地到乙地有一天线路的巴士,全程行驶时间 42 分钟,到达总站后,司机至少休息 10 分钟,巴士就掉头行驶,如果这条线路甲,乙两边总站每隔 8 分钟都发一辆(不必是同一时间),则这条线路至少需要是多少俩巴士(C)
A.15 B.14 C.13 D.12
29、编号为 1 至 10 的 10 个果盘中,每盘都盛有水果,共盛放 100 个。其中第一盘里有 16 个,并且编号相邻的三个果盘中水果是的和都相等,求第 8 盘中水果最多可能有几个(A)
A.11 B.12 C.13 D.14
30、假设一个池塘,里面有无穷多的水,现在有 2 个空水壶,容积分别是 5 升和 6 升,问如何用这两只水壶取得 3 升水。
答:5L桶打满水,全部倒入6L桶;
5L桶再次打满,往6L桶倒水至其满。此时5桶留下4L水;
6L桶清空,将5L桶中的4L水倒入6L桶;
5L桶打满水,往6L桶倒水至其满,则5L桶中得3L水。
以上就是今天为各位java学习者整理的初级java工程师面试题,共有30道,涉及到不少java的相关知识,不仅有java专业上的知识,还有考察程序员逻辑思维能力的题目,还希望大家可以根据这些题目对自己的知识框架有更清晰的认识,起到查漏补缺的作用,顺利通过初级java工程师的面试。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19