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

面试 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)线程不安全会发生什么?

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

学习路线规划、简历辅导、求职指南请私信,感谢对八股文传道之路的持续支持!

#八股文##春招##Java#
八股传道之路 文章被收录于专栏

八股传道之路,定期发发文章,免费!

全部评论

相关推荐

昨天 09:49
已编辑
门头沟学院 Java
ttl:&nbsp;3.19一面晚上过3.20二面晚上过3.23oc3.25offerbase:末9有一段中小厂实习一面面经:(总体时长一个小时二十分钟左右没什么八股,主要都是问项目和场景题1.实习(问了有四十分钟,感觉面试官很看重实习这一块,一直在拷打,问到后面我都要疯了,好在准备得比较充分1️⃣用的是什么中间件,有参与技术选型吗,实习的项目里为什么选这个RabbitMQ而不是kafka,为什么不用RocketMQ,为什么放弃异步,自己的项目里面使用的是kafka,那你觉得项目和实习的中间件选型有差异的原因是什么,他们之间的区别在哪里,底层的原因知道吗(高柱到这里已经快疯了,但是硬着头皮答完了,主要是从一致性吞吐量和框架的契合度答,面试官说答得挺好的,应该是没什么问题,这一块就问了快半个小时,到这里我已经快疯了2️⃣项目怎么对接上下游3️⃣介绍项目的难点重点4️⃣微服务(高柱实习是单体项目没涉及这一块5️⃣Redis的使用2.项目:1️⃣智能客服是怎么应用在项目里的(langchain4j➕rag➕functioncalling)2️⃣RAG了解多少3️⃣文本向量化的难点是什么,了解哪些大模型的知识(我一点不懂,纯瞎扯,但貌似扯对了4️⃣对ai的态度是什么,aicoding相关5️⃣怎么保证多节点下Caffeine缓存里面数据都是一致的(答的是短ttl,面试官不是很满意,但是我确实不太懂这个怎么保证,后来查了还是不懂怎么保证6️⃣Redis的使用,和你的实习项目的使用有区别吗,还有一些引申问题3.八股(含量不高,就是走个过场1️⃣进程的内存布局2️⃣Redis三剑客3️⃣微服务相关知识(高柱已经忘得差不多了…勉强答上来4️⃣JVM5️⃣线程状态6️⃣线程安全,在你的实习项目里怎么保证线程安全的(又绕回来了4.智商题找异常球5.手撕:1️⃣五道sql,不难2️⃣力扣不重叠的滑动窗口数组,贪心➕双指针秒了强度拉满了这个一面,高柱到后面人都是傻的二面面经:(就半个小时实习拷打,简历上写了几点就问了几点,问完就结束了,无手撕
查看19道真题和解析
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务