本文编写于 117 天前,最后修改于 117 天前,其中某些信息可能已经过时。

附:2019年Java最新面试指南80题*(点击链接进入)

Java 最新面试题大全 11-20 题 http://blog.zh66.club/index.php/archives/109/
Java 最新面试题大全 21-30 题 http://blog.zh66.club/index.php/archives/110/
Java 最新面试题大全 31-40 题 http://blog.zh66.club/index.php/archives/111/
Java 最新面试题大全 41-50 题 http://blog.zh66.club/index.php/archives/112/
Java 最新面试题大全 51-60 题 http://blog.zh66.club/index.php/archives/113/
Java 最新面试题大全 61-70 题 http://blog.zh66.club/index.php/archives/114/
Java 最新面试题大全 71-80 题 http://blog.zh66.club/index.php/archives/115/

问题 #61

什么是匿名类,什么是匿名对象?

共 380 次阅读

答案

1 匿名类

匿名类,全称匿名内部类,Annoymous Inner Class,在《入门与进阶》的22.4 讲。

匿名类用于快速派生一个子类,

比如,

ActionListener listener = new ActionListener() {

​ @Override

​ public void actionPerformed(ActionEvent e)

​ {

​ }

} ;

其中,蓝色部分的大括号里的代码,就是一个类的类体。这个类继承于ActionListener,但没有名字,称之为匿名内部类。

2 匿名对象

直接创建一个对象,但没有定义引用指向它。

普通写法:

​ MyThread th = new MyThread();

​ th.start();

匿名对象的写法:

new MyThread().start();

其中,new MyThread() 创建一个对象,但没有定义引用来指向它。

那么,匿名对象生来就失去引用了吗?

其实也不一定了。也许它的构造方法内部,已经把对象交给了别处引用。也许它本身在创建时,就交给了别人引用。

比如, listView.setCellRenderer ( new MyCellRenderer() );

new MyCellRenderer() 创建的对象,直接传给了 listView使用,在 listView 里保存了它的引用,所以这个对象并没有失去引用。

问题 #62

对于 ArrayList ,何时使用for循环,何时应该使用迭代器Iterator ? 各自有什么好处?

共 270 次阅读

答案

参考《快速入门与进阶》第23章,泛型 。

用 for 循环可以遍历 ArrayList ,优点是简单易懂,就跟遍历数组差不多。

用 Iterator 也可以遍历 ArrayList ,这是链表的传统遍历方式,一般来说 Iterator 的运行效率会高一些。

需要注意的是,当执行多项删除时,应该使用Iterator,不应使用 for循环方式。

另:Java的链表类是 LinkedList 。如果确定以需要一个链表,应该用 LinkedList。

问题 #63

Java语言里什么叫 Reference Type ?

共 265 次阅读

答案

除了基本数据类型 int, long, short, byte, boolean, double, float 之外的类型,都称为 Reference Type。

如,class类型,interface类型等。

Integer value ; // Integer 是一个class

ActionListener listener; // ActionListener 是一个 interface

问题 #64

什么是对象,什么是引用?

共 232 次阅读

答案

比如,

Student xiaoli= new Student() ;

右侧:new 创建了一个对象 ( 相当于生了一个小孩 )

左侧: xiaoli 引用了这个对象 ( 相当于起了一个名字 )

这就好比:生了一个小孩 ,应该立即给他/她起一个名字。那个可爱的小宝宝就是 对象,而 小丽 就是引用。当我们提到小丽时,所指的就是那个小宝宝。

When we talk about XiaoLi, it refers to that baby. So XiaoLi is its name, and is a reference.

(在英文里,引用 refer to ,就是汉语的”指的是“)

(new即是创建,生小孩的意思 )

问题 #65

什么叫非检查异常 Unchecked Exceptions ?

共 249 次阅读

答案

比如,以下方法 getLongSide() 可能有异常抛出,但是后面却没有加上 throws BadValueException 声明。

请问:Eclipse会报错吗?

public static double getLongSide(double a, double b)

{

​ if(a<=0 || b <= 0)

​ {

​ throw new BadValueException("边长须为正值");

​ }

​ return Math.sqrt( aa + b b);

}

其实这取决于 BadvalueException 是不是 非检查异常,可能并不是个错误。关于非检查异常,请参考《快速入门与进阶》第24.6讲

问题 #66

在 Java Web中,Servlet是单例的、还是多例的?

共 401 次阅读

答案

Servlet是单例的。Tomcat会根据项目 web.xml中的配置,以及项目中的注解,加来相应的Servlet,创建相应的实例。

当有请求到来时,即使一次有多个并发请求,Tomcat也会交给同一Servlet实例处理。因此,我们必须对此有线程重入的考虑。(有关线程重入,参考 网站入门篇 第11章)

比如,有一个 Servlet :

@WebServlet("/listStudent")

public class StudentListService extends HttpServlet

{

  @Override

​ public void doPost ( ... request, ... response )

​ {

​ }

}

假设同一时间N个用户都在浏览器里,输入 http://your.com/listStudent ,则 Tomcat后台会创建N个线程、并且 调每个线程里都调用一个唯一的StudentListService 实例来处理这个请求。这便是线程的重入了。

问题 #67

面试开始为什么要你来一段自我介绍?

共 519 次阅读

答案

一般来说,当你去参加一个面试,开始时面试官会让你来一段自我介绍。

于是你感到奇怪,你不是发过简历了吗,为什么还要自我介绍?

实际是这样的:

1 通常面试官并没有细看过你的简历,至少他不记得你这个人。在你陈述的几分钟内,他正好看看你的简历。

2 面试官也许刚参加一个会议,打了一个电话,。。。所以他需要一段时间缓冲一下,把思绪调整过来

3 面试官会通过你的自我陈述(或通过你的简历)来开启第一个话题,所以他有可能打断你的陈述,然后你们就 结束单方陈述、进入对话模式。

所以,自我介绍只是一个缓冲阶段,时间可长可短,内容基本随意。你的语速最好慢点,观察面试官是否有话说。一般来说,你把你做过的东西、学过的技术大概介绍一下,以便面试官从中选择一个话题。

问题 #68

通过 web.xml 声明的 Servlet ,和通过注解声明的Servlet ,用法上有什么区别?

共 233 次阅读

答案

web.xml里声明的会优先加载。

问题 #69

AJAX 交互方式下,如何实现页面的重定向?

共 336 次阅读

答案

所谓重定向,就是让浏览器打开一个新的页面

所以,

Af.rest ("YourService.api", req, function(data){

​ location.href = 'new_url.html' ;

}

当AJAX 返回时,令浏览器打开一个新的网址,比如 new_url.html 。这便是重定向了。

注意:不要以为只有服务器返回302才是重定向,关于各种重定向的形式和原理,参考《网站中级篇》

问题 #70

在 Java Web 项目中,什么叫静态文件? gif 是静态文件吗?

共 353 次阅读

答案

静态文件:是指实际存在的、内容不变的文件

条件1:它是真是存在的文件,在 WebRoot 下可以找到这个文件的实体

条件2:内容不变。即今天看是这个内容,明天看还是这个内容。

gif虽然是动图,但它的内容是不变的。今天是这个样子,明天还是这个样子。所以 gif 属于静态文件。

伪静态:

如果有一个url看后缀像是静态文件,但后台并无这个实体,那它就是 伪静态文件 。

比如,http://your.com/UserInfo.js ,这个看起来像是个静态的JS文件。但后台可能根本不存在这个文件,它有可能是用 Servlet 生成的(即伪静态)。