面试 Java 基础八股文十问十答第七期

2023-12-27 16:01:49

面试 Java 基础八股文十问十答第七期

作者:程序员小白条

相信看了本文后,对你的面试是有一定帮助的!

?点赞?收藏?不迷路!?

1)Tomcat 是什么?

Tomcat 是一个开源的、轻量级的应用服务器,是Apache软件基金会的一个项目。它实现了Java Servlet、JavaServer Pages (JSP)、WebSocket等JavaEE相关规范,可以作为一个Web服务器运行Java Web应用程序。

2)Tomcat 的缺省端口是多少,怎么修改

Tomcat的缺省端口是8080。可以通过修改Tomcat的配置文件server.xml来修改默认端口。在server.xml中找到 <Connector> 元素,修改其port属性的值即可。

3)tomcat 有哪几种 Connector 运行模式(优化)?

Tomcat有两种Connector运行模式:BIO模式和NIO模式。BIO模式使用传统的阻塞I/O方式处理请求,而NIO模式使用Java NIO库实现非阻塞I/O方式处理请求,可以提供更高的并发性能。

4)Tomcat 有几种部署方式?

Tomcat有两种部署方式:独立部署和嵌入式部署。独立部署是将Tomcat作为一个独立的应用服务器运行,通过配置和部署WAR文件来发布Web应用。嵌入式部署是将Tomcat嵌入到其他Java应用程序中,通过编程方式进行配置和部署Web应用。

5)tomcat 容器是如何创建 servlet 类实例?用到了什么原理?

Tomcat容器在创建servlet类实例时,使用了Java的反射机制。当Tomcat接收到一个请求时,会解析请求并找到对应的servlet类,然后使用反射机制创建该servlet类的实例。反射机制允许在运行时动态地加载类、调用类的方法和访问类的属性。这样就可以根据请求动态创建servlet类的实例,实现了灵活的Web应用开发。

6)序列化是什么?

序列化是指将对象转换为字节流的过程,以便在网络传输或者持久化存储时使用。序列化可以将对象的状态保存下来,以便在需要时重新创建对象。

7)Java 序列化与反序列化的实现?

Java序列化与反序列化通过实现Serializable接口来实现。当一个类实现了Serializable接口后,它的对象可以被序列化和反序列化。序列化可以通过将对象写入到输出流中,而反序列化则可以通过从输入流中读取字节流来重新创建对象。

8)Java 的 List

Java的List是一个接口,它是集合框架中的一种有序、可重复的集合。List允许元素按照插入的顺序进行访问,并且可以包含重复的元素。常用的List实现类有ArrayList、LinkedList和Vector。

9)Java 中线程安全的基础数据结构有哪些?

  • Vector:Vector是一个线程安全的动态数组,它的方法都是同步的,可以被多个线程安全地访问。
  • Hashtable:Hashtable是一个线程安全的哈希表,它的方法都是同步的,可以被多个线程安全地访问。
  • ConcurrentHashMap:ConcurrentHashMap是一个线程安全的哈希表,它使用了分段锁的机制,可以支持多个线程的并发访问。
  • CopyOnWriteArrayList:CopyOnWriteArrayList是一个线程安全的动态数组,它使用了写时复制的机制,在修改时会创建一个新的数组,保证了读写的线程安全性。

10)线程不安全会发生什么?

  • 竞态条件:当多个线程同时访问和修改共享数据时,可能会出现不可预测的结果。例如,多个线程同时对一个变量进行自增操作,可能会导致结果不正确。
  • 数据一致性问题:当多个线程同时修改共享数据时,可能会导致数据的不一致。例如,一个线程正在读取一个数据,而另一个线程正在修改该数据,可能会导致读取到的数据不正确。
  • 死锁:当多个线程同时竞争多个资源,并且每个线程都在等待其他线程释放资源时,可能会导致死锁的发生,使得所有线程都无法继续执行。
  • 性能下降:线程不安全的代码可能需要使用同步机制来保证线程安全,这会带来额外的开销,降低程序的性能。

文章来源:https://blog.csdn.net/qq_67358181/article/details/135245979
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。