面试 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#
八股传道之路 文章被收录于专栏

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

全部评论

相关推荐

03-01 17:04
已编辑
门头沟学院 Python
本科某中流985专业人工智能,目前大四,保研上岸某C9软工的工程硕专项(学校1年+企业2年),对科研发paper不是很感兴趣,个人偏向工程应用方面,目前还没有找导师(主要是本科学AI的候补到软工我也不知道该怎么找导师那),之前大一大二期间出于兴趣,打了一堆和机器人相关的比赛和项目。但是实际上发现自己比起机械自动化的学生又不会画电路板也不会搞那种嵌入式编程,会在一些开发板上,装个Ubuntu,然后连接硬件搞些杂七杂八的程序(包括cv算法,ai算法,agent部署什么的)。之前实习经历实在一个初创企业,里面给人家做视觉处理的配件产品(这个倒是基本上是个人独立研发的,但是签了协议不能把代码给面试官看),干了6个月。由于本科是AI的,AI方面的本科生能接触到的也接触过,包括训练部署模型设计,之前还有过课题组的经历但是是脑机接口的方向,对此不是很感兴趣(这个方向不好就业)。以后就业想去稳定的企业或者岗位,本质日子人,对薪资要求总包一线20w以上,二线15w,三线10w(不知道要求高不高,这方面没啥概念,其实只要能活的相对比较舒服就行),但是只求稳定而且工作强度不要太大(接受有时赶项目加班但是不接受常态996,类似于公务员,但是考公好难),毕业想回家乡小城市但是看了下没有专业对口的岗位。由于以上的期望,感觉我现在积累的经验远远不够,就是感觉目前学的东西太杂了,未来想还是专精于和AI相关的方向?如数据分析,模型炼丹.agent设计(主要是感觉嵌入式还是有点专业不对口?机器人不太好找稳定企业,而且搞硬件相关没有人带感觉还是特别难)大四下目前没课,虽然说还有研究生可以缓几年,但是感觉还是不能这样像无头苍蝇那样乱窜,目前还是不确定具体搞什么方向好找那样稳定的但是和AI相关的工作,也不知道是去继续实习好还是考点证好。目前有几个规划方案,一个是考证(ccf-csp提分?考个ai方向的hcip?中级软考?还是百度飞桨的认证我该考什么?)&nbsp;还有是实习,但是不希望太累,研发强度不要太高,(别太卷,有团队带,不要一个人搞一个研发项目,之前实习搞那个配件研发强度感觉都可以发专利),最后要是朝九晚五那就最好了(想pichi),因为之后还要毕业设计的所以说实习不希望太卷。或者各位大佬觉得在大四下这个空窗期该怎么安排比较合理呢?求大佬赐教
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

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