这是我参与更文挑战的第18天,活动详情查看: 更文挑战
今天我们继续来看一些Java面试题,基本上是面试的时候常问的,有一定的概率会遇到,希望大家可以面试顺利。
1. 如何将一个字符串反转?
答:可以通过循环遍历的方式,期间使用String的charAt()方法进行取值,然后拼接字符串。
还有一种写起来比较简单的方式,那就是使用StringBuffer中的reverse()进行反转。
2. BIO、NIO、AIO分别是什么?三者有什么区别?
答:
BIO,Block IO,同步阻塞型IO,平时用的最多的IO模式,线程从一开始就会阻塞,直到执行完成,特定就是简单、使用方便,缺点是并发处理能力弱,可以通过使用线程池来改善性能。
NIO,Non IO,同步非阻塞型IO;客户端、服务端之间通过Channel通讯,实现了多路复用;JDK1.4引入该框架,给高并发、高负载的应用很大的使用空间。
注:这里的多路复用可以加深了解,查查资料,说的好可以让面试官眼前一亮。
AIO,Asynchronous IO 是 NIO 的升级,也称作NIO2,异步非阻塞型IO,通过回调机制来实现异步。
3. sleep() 和 wait() 有什么区别?
答:sleep()是线程类(Thread)的方法,wait()是Object类的方法。
sleep()是让当前线程休眠指定的时间,期间并不会释放自身所拥有的锁。
wait()在调用之后,会释放自身所拥有的锁,进而进入等待队列。
使用范围:wait只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。
4. 线程的 run()和 start()有什么区别?
答: run()方法是直接在当前线程中直接执行方法,不会新开启一个新的线程。
start()方法是开启一个新的线程,并在新的线程中执行run()方法。
注:其中的解答只是个基本答案,不是什么标准答案,每个人面试的时候都不一样,所以面试题的解答方式还需要自己心有腹稿,只是一个记录,望大家可以稍作借鉴。