Java面试集锦

来源:互联网 发布:关口知宏 对中国评价 编辑:程序博客网 时间:2024/06/05 15:33

Java面试集锦

  • Java面试题集
另外一个参考地址:http://blog.csdn.net/TaoTaoFu/article/details/63259439?locationNum=16&fps=1

1、Java面试题集(第一部分)(1-50):http://blog.csdn.net/u012401711/article/details/73656104

  • 面试题:华为的面试题中曾经问过这样一个问题 – “为什么不能根据返回类型来区分重载”,快说出你的答案吧!

因为调用时不能指定类型信息,编译器不知道你要调用哪个函数,例如:
float max(int a, int b);

int max(int a, int b);

当调用max(1, 2);时无法确定调用的是哪个,单从这一点上来说,仅返回值类型不同的重载是不应该允许的

再比如对下面这两个方法来说,虽然它们有同样的名字和自变量,但其实是很容易区分的: 
void f() {}

int f() {}

若编译器可根据上下文(语境)明确判断出含义,比如在 int x=f()中,那么这样做完全没有问题。然而,我们也可能调用一个方法,同时忽略返回值;我们通常把这称为“为它的副作用去调用一个方法”,因为我们关心的不是返回值,而是方法调用的其他效果。所以假如我们象下面这样调用方法:

f();

Java怎样判断f()的具体调用方式呢?而且别人如何识别并理解代码呢?由于存在这一类的问题,所以不能根据返回值类型来区分过载的方法。

函数的返回值只是作为函数运行之后的一个“状态”

他是保持方法的调用者与被调用者进行通信的关键。
并不能作为某个方法的“标识”

2、Java面试题集(第二部分)(51-70):http://blog.csdn.net/u012401711/article/details/73656247

摘要:这一部分主要讲解了异常、多线程、容器和I/O的相关面试题。首先,异常机制提供了一种在不打乱原有业务逻辑的前提下,把程序在运行时可能出现的状况处理掉的优雅的解决方案,同时也是面向对象的解决方案。而Java的线程模型是建立在共享的、默认的可见的可变状态以及抢占式线程调度两个概念之上的。Java内置了对多线程编程的支持在20世纪90年代可以说是一个巨大的进步,但是最初的设计在当下看来已经给程序带来很多困扰了。感谢Doug Lea在Java 5中提供了他里程碑式的杰作java.util.concurrent包,它的出现让Java的多线程编程能够更好的工作。Java 1.4中引入NIO实现了对非阻塞I/O的支持,NIO为I/O操作抽象出缓冲区和通道层,解决了字符集的编码和解码问题,提供了将文件映射为内存数据的接口。NIO无疑使Java向前迈出了一大步,但为了方便Java对文件系统的处理,NIO.2进一步对Java的I/O操作进行了增强,提供了能批量获取文件属性的文件系统接口,还提供了套接字和文件都能进行异步IO操作的API,完成了JSR-51中定义的套接字。对于Java中的容器(集合框架)而言,java 5中引入泛型无疑是程序员的福音,然而那仅仅是糖衣语法,底层实现没有本质的差别,因此与C#相比,Java的泛型显得不那么让人痛快

3、Java面试题集(第三部分)(71-85):http://blog.csdn.net/u012401711/article/details/73656261

摘要:这一部分主要包括了UML(统一建模语言)、面向对象的设计原则(六原则一法则)、GoF设计模式、企业级设计模式、JDBC(Java数据库连接)、XML(可扩展标记语言)等知识。

原创粉丝点击