面试官常问的20道Java题目(附答案)-来自Java1234

时间:2024-03-21 11:35:56

1. 以下代码的输出结果是(A)

int i =3;

i = i++;

System.out.println(i);

A .3  B.4  C.5

a=b++是先将b值赋值给a后b再自增。

2. Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;向上取整

3. Collection 和 Collections的区别。

Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

4. java中实现多态的机制是什么?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

5. java中向上转型、向下转型是什么?

向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口。

向下转型:父类引用的对象转换为子类类型成为向下转型

6. 多线程创建有几种方式?

三种,分别是:继承Thread类;实现Runnable接口;实现Callable接口。

7. GC是什么?为什么要有GC?

GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

8. thorw与thows的区别?

throw抛出的是异常对象;throws抛出的是类,如果有多个类则使用逗号间隔

throw用于代码块或方法体;throws只能用于方法参数列表后边,不能用于代码块

如果throw抛出的异常是运行时异常,则可以不使用throws;否则必须显示处理:try-catch或者throws

9. ArrayList与 LinkedList 的区别?

最明显的区别是ArrrayList 底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构书链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。LinkedList是双向链表、

10. Class.forName()和ClassLoader的区别?

Class.forName()除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块,还会执行给静态变量赋值的静态方法。

ClassLoader只将.class文件加载到jvm中,不会执行static中的内容。

11. Log4j常用的四个日志级别是哪四个?优先级顺序是怎样的?

优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。

12. 拦截器和过滤器有什么区别?程序中是先执行拦截器还是过滤器?

①拦截器是基于java的反射机制的,而过滤器是基于函数回调。

②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

程序中先执行过滤器。

13. 请描述Mybatis结果集中 ResultMap 和ResultType的区别。

resultType和resultMap功能类似  ,都是返回对象信息  ,但是resultMap要更强大一些 ,可自定义。因为resultMap要配置一下,表和类的一一对应关系,所以说就算你的字段名和你的实体类的属性名不一样也没关系,都会给你映射出来,但是,resultType就比较鸡肋了,必须字段名一样,比如说 cId和c_id 这种的都不能映射 。

14.  Java中 @PostConstruct和@PreDestroy注解有什么作用?

l 被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的init()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

l 被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前

15. 编写Webservice接口服务端(框架)有几种方式?

Apache Axis1、Apache Axis2、Codehaus XFire、Apache CXF等

16. 常用的缓存框架有哪几个?

Ehcache、Memcache、Redis

17. 如何在谷歌浏览器中跟踪调试页面

浏览器中打开开发者工具(F12)跟踪调试。

Elemetts:跟踪页面DOM元素

Console:跟踪控制台输出

Network:跟踪网络请求

18. 简述TCP三次握手的理解

第一次

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

19. Linux下你常用的命令有哪些?

cd命令用来改变所在目录。cd /  转到根目录中cd ~  转到用户目录下

ls命令用来查看目录的内容。

cp命令用来拷贝文件cp <source filename> <target filename>

mv命令 mv t.txt Document    把文件t.txt 移动到目录Document中。

20. Nginx有什么作用?

反向代理

负载均衡

动静分离