Java面试题 & 面试感悟(2021年最新)

本文整理了2021年最新的Java面试题,涵盖线程、Java Web、Servlet、JSP等多个核心知识点,帮助Java开发者准备面试,提升面试成功率。内容包括线程的基本概念、并发编程、Java Web相关问题,以及JSP的使用和面试技巧。通过深入理解和掌握这些面试题,可以有效提升面试者的Java技术水平。
摘要由CSDN通过智能技术生成

面试感悟:

  不管你是刚入门还是搬砖老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。

  在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread 类 还是调用 runnable 接口),然后逐渐问到并发问题像在Java并发编程的过程中遇到了什么挑战,Java内存模型,JDK1.5引入了哪些更高阶的并发工具,并发编程常用的设计模式,经典多线程问题如生产者消费者,哲学家就餐,读写器或者简单的有界缓冲区问题。仅仅知道线程的基本概念是远远不够的, 你必须知道如何处理死锁,竞态条件,内存冲突和线程安全等并发问题。掌握了这些技巧,你就可以轻松应对多线程和并发面试了。

  许多Java程序员在面试前才会去看面试题,这很正常。因为收集面试题和练习很花时间,所以我从许多面试者那里收集了Java多线程和并发相关的50个热门问题。我只收集了比较新的面试题并提供全部答案(这只是一部分哦) 更多的面试题可以☞☞点击此 领取全部面试题 ,想必聪明的你对这些问题早就心中有数了, 如果遇到不懂的问题,你可以用Github 找到答案。若你实在找不到答案,可以在文章的评论中向我求助。你也可以在这找到一些答案。

 

Java web面试题:

1、Tomcat的优化经验

答:去掉对web.xml的监视,把JSP提前编辑成Servlet;有富余物理内存的情况下,加大Tomcat使用的JVM内存。

 

2、什么是Servlet?

答:可以从两个方面去看Servlet:

a、API:有一个接口servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。

b、组件:服务器端用来处理客户端请求的组件,需要在web.xml文件中进行配置。

 

3、Servlet的生命周期,并说出Servlet和CGI的区别?

答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。

      这个生存期由javax.servlet.servlet接口中的init、service、destroy方法表达。

     web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现

     根据请求的不同调用不同的do**()方法。结束服务,web容器调用servlet的destroy()方法。

     

区别:

Servlet处于服务器进程中,它通过多线程运行service()方法,一个实例可以服务于多个请求,并且实例一般不会被销毁;而

CGI对每个请求都产生一个新的进程,服务完成后就销毁,所有效率低于Servlet。

 

4、Servlet的基本架构

答:

 

public class ServletName extends HttpServlet
{
     //初始化方法
     public void init()
     {
       ……
     }
     //GET请求处理的方法
     public void doGet(HttpServletRequest request,HttpServletResponse response)
     {
        ……
     }
      //POST请求处理的方法
     public void doPost(HttpServletRequest request,HttpServletResponse response)
     {
         ……
     }
       //结束服务的方法
     public void destroy()
     {
         ……
     }
}

 

 

5、Servlet API中forware()和redirect()的区别?

答:

a、浏览器显示

     重定向会改变URL地址,请求转发不会改变URL地址。

b、资源共享

     重定向不可以资源共享,请求转发可以。

c、功能

    重定向可以用URL绝对路径访问其他Web服务器的资源,而请求转发只能在一个Web应用程序内进行资源转发,即服务器内部的一种操作。

d、效率

    重定向效率低,相当于再一次请求;请求转发效率相对较高,跳转仅发生在服务器端。

 

6、什么情况下调用doGet()和doPost()?

答:默认情况是调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法;为get的时候,调用deGet()方法。

 

7、request.getParameter()和request.getAttribute()的区别?

答:

a、request.getParameter()获取的类型是String;

    request.getAttribute()获取的类型是Object

b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;

     request.getAttribute()获取的是对象容器中的数据值/对象

c、request.setAttribute()和request.getAttribute()可以发送、接收对象;

    request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)

    setAttribute()和getAttribute()的传参原理:

    setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时,

    应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。

 

8、JSP有哪些内置对象?作用分别是什么?

答:JSP一共有9个内置对象:

request:负责得到客户端请求的信息,对应类型:javax.servlet.http.HttpServletRequest

response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse

session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession

out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter

application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext

config:表示ServletConfig,对应类型:javax.servlet.servletconfig

exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception

pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext

page:表示当前JSP页面本身。

 

9、JSP有哪些动作?作用分别是什么?

答:JSP一共有以下6中基本动作

  JSP:include       (当页面被请求的时候引入一个文件)

  JSP:forward      (将请求转到另一个页面)

  JSP:useBean     (获得JavaBean的一个实例)

  JSP:setProperty (设置JavaBean的属性)

  JSP:getProperty (获得JavaBean的属性)

  JSP:plugin         (根据浏览器类型为Java插件生成object或者embed两种标记)

 

10、JSP常用指令有哪些?

答:page、include、taglib

a、page指令:定义页面的一些属性,常用属性:

contentType="text/html;charset=utf-8";    向浏览器端输出数据的编码

pageEncoding="utf-8";                            JSP编译成java文件时所用的编码

session="true"                                        是否自动创建session

b、include指令:引入一个静态的JSP页面

c、taglib指令:引入一个标签库

 

11、JSP中动态include和静态include的区别?

答 : a、静态include:语法:<%@ include file="文件名" %>,相当于复制,编辑时将对应的文件包含进来,当内容变化时,不会再一次对其编译,不易维护。

        b、动态include:语法:<jsp:include page="文件名">,能够自动检查被包含文件,当客户端对JSP文件进行请求时,会重新将对应的文件包含进来,进行实时的更新。

 

12、页面间对象传递的方法?

答:request、session、application、cookie等。

 

13、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

答:JSP是Servlet的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类Servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在java文件中,

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值