别摸鱼了,来几道Java面试题!(五)
这是我参与更文挑战的第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()方法。
注:其中的解答只是个基本答案,不是什么标准答案,每个人面试的时候都不一样,所以面试题的解答方式还需要自己心有腹稿,只是一个记录,望大家可以稍作借鉴。
公众号:Ijiran的编程思维,随缘关注。转载请注明地址,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)