Java面试前需要做足各方面的准备工作,肯定都会浏览大量的面试题,本人也不例外,通过浏览面试题和以往的面试经历,总结了从初级到中级以及高级的面试题,供大家学习讨论。


同步和异步有何异同,在什么情况下分别使用他们?举例说明。

点击下方空白区域查看答案解析!

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。


当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

forward 和 redirect 两者有什么区别?

点击下方空白区域查看答案解析!

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。


redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所session,request参数都可以获取。

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

点击下方空白区域查看答案解析!

GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

启动一个线程是用run()还是start()?

点击下方空白区域查看答案解析!

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线 程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

说一说你在开发过程中最常见到的 runtime exception 异常?

点击下方空白区域查看答案解析!

ArithmeticException, 

ArrayStoreException, 

BufferOverflowException,

 BufferUnderflowException, 

CannotRedoException,  

CannotUndoException, 

ClassCastException, 

CMMException, 

ConcurrentModificationException, 

DOMException,  

EmptyStackException, 

IllegalArgumentException, 

IllegalMonitorStateException, 

IllegalPathStateException,  

IllegalStateException, 

ImagingOpException,

IndexOutOfBoundsException, 

MissingResourceException,  

NegativeArraySizeException, 

NoSuchElementException, 

NullPointerException, 

ProfileDataException, 

ProviderException,  

RasterFormatException, 

SecurityException, 

SystemException, 

UndeclaredThrowableException, 

UnmodifiableSetException,  

UnsupportedOperationException

说出数据连接池的工作机制是什么?

点击下方空白区域查看答案解析!

J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量由配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

点击下方空白区域查看答案解析!

JDk1.7之前 switch(expr1)函数中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。 


注意,对于精度比int大的类型,比如long、float,doulble,不会自动转换为int,如果想使用,就必须强转为int,如(int)float。


jdk1.7后,整型,枚举类型,boolean,字符串都可以。jdk1.7并没有新的指令来处理switch string,而是通过调用switch中string.hashCode,将string转换为int从而进行判断。

Java的接口和C++的虚类的相同和不同处?

点击下方空白区域查看答案解析!

由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

​​


Java基础篇——Java开发面试题4期_服务器

Java精选

关注微信公众号“Java精选”,回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。