作为一名java语言的学习者,我们能感觉到java语言的优点,平台无关性、面向对象性、多线程性等,此外,还有许多已实现的类库供我们直接使用。这些类库都是为了jar包的形式也可以成为java API,所以今天整理总结了一下10道java基础类库面试题及答案,包含为编程者实现各种常用的操作方法,这些库类为程序员编写java程序代码带来了很多便利。
1.java有多少类型的流?JDK为每种类型的流量提供了一些抽象的类别来继承,请告诉我们它们是什么类别?
答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承Reader Writer。在java.io包还有很多其他的流,低层流和调层流,主要是为了提高性能和使用方便。
2、用run()或start()启动一个线程
答:启动一个线程就是调用start()方法,启动线程并调用run方法。
3、线程的基本概念、线程的基本状态和状态之间的关系是什么?
答:线程在过程中并发,没有自己的内存空间,共享过程,线程间的通信成本较低。Java中的线程有四种状态:运行、就绪、悬挂和结束。
4、java多线程实现方法有几种,都是什么?同步有几种实现方法,都是什么? stop()为什么不推荐suspend()方法?
答:实现多线程有两种方法,即继承实现Runnable接口的Thread类。
实现同步有两个方面,即synchronized,wait与notify。
反对使用stop(),因为它不安全。如果对象处于不连贯状态,则可以在这种状态下检查和修改其他线程。真正的问题很难在结果中找到。suspend()死锁容易发生在方法上。当调用suspend()时,目标线程会停止,但在此之前仍然持有锁定。此时,除非被锁定的资源被访问,否则任何其他线程都无法访问"挂起"线程恢复运行。对于任何线程,如果他们想要恢复目标线程并试图使用任何锁定资源,就会导致死锁。因此,不应使用suspend(),而应在自己的thread类别中放置一个标志,指出线程应该移动或悬挂。如果标志指出线程应悬挂,则使用wait()命令其进入等待状态。如果标志指出线程应恢复,则使用notify()重新启动线程。
5、同步和异步有异同,在什么情况下分别使用?举个例子。
答:同步:上一段代码没有完成,下一段必须等到上一段代码完成后才能执行。比如买票排队
异步:上一段代码没有完成,下一段不需要等到上一段代码完成。比如手机发短信。
6、线程同步的方法是什么?
答:Hashtable中的put,get,remove,Vector的相关方法。
7、目录下的所有文件如何列出?
答:代码如下:Import java.io.File; File f=new File("C:\\"); File[] f1=f.listFiles(); for(int i=0;i
8、sleep() 和 wait() 有什么区别?
答:Sleep是指休眠给定的时间,当时间到达时,线程会再次醒来。
Wait处于等待状态,不清楚需要多长时间,另一个线程会唤醒它。
9、当一个线程进入对象的synchronized方法时,其他线程可以进入对象的其他方法吗?
答:如果只有其他方法是同步法,则不能进入。如果没有,可以进入。
10、Java集合框架是什么?说一些集合框架的优点?
答:每种编程语言都有集合,最初的Java版本包括几种集合类:Vector、Stack、Hashtable和Array。Java11随着集合的广泛应用.提出了包含所有集合接口、实现和算法的集合框架。Java长期以来一直使用泛型和并发集合类,以确保线程安全。它还包括Java并发包、堵塞接口及其实现。集合框架的部分优点如下:
(1)使用核心集合类来降低开发成本,而不是实现自己的集合类。
(2)代码质量会随着使用经过严格测试的集合框架而提高。
(3)代码维护成本可以通过使用JDK附带的集合类来降低。
(4)复用性和可操作性。
以上的10个问题是今天为大家整理总结的Java基础类库的面试题,比较基础,刚接触java的java零基础小白也适合学习10道面试题。所以无论是java程序员还是java初学者,熟练掌握和应用java基础类库非常必要。希望大家都能把以上都做好。学习java基础类库的面试题,以后顺利通过面试。