Java 开发校招面试考点汇总 三(Java web、JDBC、计算机网络部分)

前言

题目来自牛客网,答案是自己整理的,仅供参考。有些题目没有答案是因为存在类似的题目或者过于基础,所以不再给出答案。共同学习,共同进步,希望大家能拿到心仪的offer!

三、Java web编程

❤1、web编程基础

1、启动项目时如何实现不在链接里输入项目名就能启动?

修改tomcat文件:server.xml
找到自己的项目设置:

<Context docBase="userManager" path="/userManage"
 reloadable="true" source="org.eclipse.jst.jee.server:userManager"/>

修改成:

<Context docBase="userManager" path="/"
 reloadable="true" source="org.eclipse.jst.jee.server:userManager"/>

这样项目启动的时候就用不用输入项目名称了。
如: localhost:8000

2、1分钟之内只能处理1000个请求,你怎么实现,手撕代码?

我知道的有两种方式可以实现:
a). Application 对所有用户访问的次数计数。同时定义一个计时器,单位为一分钟。如果Application 中的用户在单位时间内超出请求次数,就拒绝处理该请求。一分钟再刷新application的值为0.

使用一个Map 维护变量:

// 泛型 String 表示用户标识,List中存放用户不同请求的时间戳。
private Map<String, List<Long>> map = new ConcurrentHashMap<>();

我们只需要在单位计数中判断 List中数量是否超出限制即可。
b). 使用 aop 实现请求的限制,在需要限制的请求方法上加上 aop 逻辑。即可实现,思路如下:
在这里插入图片描述
自定义注解类实现请求限制的拦截逻辑,在需要限制的方法上使用注解,超出限制后拒绝处理请求。

3、什么时候用assert

assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制.在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出.一般来说,assertion用于保证程序最基本、关键的正确性.assertion检查通常在开发和测试时开启.为了提高性能,在软件发布后,assertion检查通常是关闭的.

4、JAVA应用服务器有那些?

Java 的应用服务器很多,从功能上分为两大类,JSP 服务器和 Java EE 服务器,也可分其他小类。相对来说 Java EE 服务器的功能更加强大。我平时就用Tomcat。
JSP 服务器有 Tomcat 、Bejy Tiger 、Geronimo 、 Jetty 、Jonas 、Jrun 、Orion 、Resin。
Java EE 服务器有TongWeb 、BES Application Server 、 Apusic Application Server 、 IBM Websphere 、Sun Application Server 、Oracle 的 Oracle9i/AS 、Sun Java System Application Server 、Bea Weblogic 、JBoss、开源GlassFish。(来源自百度百科)

5、JSP的内置对象及方法。

1.out:
println():向客户端输出各种类型的数据
newLine():输出一个换行符
close():关闭输出流
fiush():输出缓冲区数据
clearBuffer():清除缓冲区数据,并且把数据输出到客户端
clear():清除缓冲区数据,但是不把数据输出到客户端
getBufferSize():返回缓冲区大小
2.request:
getMethod():返回客户端向服务器端传送数据的方法
getParameter(String paramName):返回客户端传向服务器端传递的参数值
getParameterNames():获得客户端传递给服务器端的所有参数的名字
getParameterValues(String name):获得指定参数的所有值
getRequestURL():获得发出请求字符串的客户端地址
getRemoteAddr():获取客户端iPhone地址
getRemoteHost():获取客户端机器名称
getServerName():获取服务器名字
getServletName():客户端所请求的脚本文件路径
getServerPort():获取服务器端端口
对应的类为:javax.servlet.http.HttpServletRequest
3.response:
addCookie(Cookie cookie):添加一个Cookie对象,用于在客户端保存特定的信息
addHeader(String name, String value):添加HTTP头信息,该Header信息将发送到客户端
containsHeader(String name):判断指定名字的HTTP头文件是否存在
sendError(int):向客户端发送错误信息,int指服务器的错误码
sendRedirect(String url):重定向jsp文件,<jsp:forward>是同一个request在服务器内部转发,sendRedirect是通过客户端发起二次申请,是不同的request对象
setContentType(String contentType):设置MIME类型与编码方式
4.session:
void setAttribute(String name, Object value)
Object getAttribute(String name)
boolean isNew()
5.application:
getAttribute(java.lang.String name)
setAttribute(java.lang.String name, java.lang.Object object)
属于javax.servlet.ServletContext类
6.exception:
7.pageContext、config、page这3个用得比较少,了解即可

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

相同点:JSP和Servlet本质上都是Java类。
不同点:JSP侧重于视图,Servlet主要用于控制逻辑
Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象获得。
联 系:JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。

7、说一说四种会话跟踪技术

1.什么是会话
会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程。
2.什么是会话跟踪
对同一个用户对服务器的连续的请求和接受响应的监视。(将用户与同一用户发出的不同请求之间关联,为了数据共享)
3.为什么需要会话跟踪
浏览器与服务器之间的通信是通过HTTP协议进行通信的,而HTTP协议是”无状态”的协议,它不能保存客户的信息,即一次响应完成之后连接就断开了,下一次的请求需要重新连接,这样就需要判断是否是同一个用户,所以才应会话跟踪技术来实现这种要求
4.四种会话跟踪技术
a) URL重写:
URL(统一资源定位符)是Web上特定页面的地址,URL地址重写的原理是将该用户Session的id信息重写 到URL地址中,以便在服务器端进行识别不同的用户。URL重写能够在客户端停用cookies或者不支持cookies的时候仍然能够发挥作用。
b) 隐藏表单域:
将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示,浏览时看不到,源代码中有。
c) Cookie:
Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。 服务器创建保存于浏览器端,不可跨域名性,大小及数量有限。客户端可以采用两种方式来保存这个Cookie对象,一种方式是 保存在 客户端内存中,称为临时Cookie,浏览器关闭后 这个Cookie对象将消失。另外一种方式是保存在 客户机的磁盘上,称为永久Cookie。以后客户端只要访问该网站,就会将这个Cookie再次发送到服务器上,前提是 这个Cookie在有效期内。 这样就实现了对客户的跟踪。
Cookie是可以被禁止的。
d) session:
每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。 保存在服务器端。需要解决多台服务器间共享问题。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。
在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户。
Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效。

8、讲讲Request对象的主要方法

Request对象是当客户端向服务器端发送请求时,服务器为本次请求创建request对象,并在调用Servlet的service方法时,将该对象传递给service方法。Request对象中封装了客户端发送过来的所有的请求数据。

Request对象的类型是HttpServletRequest,该类中定义了很多与http协议相关的方法,比如获取请求头信息,请求方式,客户端ip地址等信息。下面是常用的API.

Request获取请求参数方法
String getParameter(String name )
获取指定名称的请求参数值,适用于单值的请求参数
String[] getParameterValues(String name)
获取所有的请求参数名称
Map<String,String[]> getParameterMap()
获取所有请求参数,其中参数名作为map的key,参数值作为map的value.

9、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然后在浏览器上就可打入主机?

Domain目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。

10、jsp有哪些动作?作用分别是什么?

JSP共有以下6种基本动作 作用如下:
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:forward:把请求转到一个新的页面。
jsp:include:在页面被请求的时候引入一个文件。
includ两种方法的实现 :
有两种实现方法,动态,静态。
动态:用于包含动态页面,并且可以随时检查页面的变化,采用jsp:include动作可以实现,例如:

  <jsp:includepage="***.jsp" flush="true"/>

静态,适合于包含静态页面,不检查页面的变化,采用include伪码实现

  <%@include file="***.html"%>

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

九大内置对象

12、说一下表达式语言(EL)的隐式对象及其作用

EL的隐式对象包括:pageContext、initParam(访问上下文参数)、param(访问请求参数)、paramValues、header(访问请求头)、headerValues、cookie(访问cookie)、applicationScope(访问application作用域)、sessionScope(访问session作用域)、requestScope(访问request作用域)、pageScope(访问page作用域)。

13、JSP中的静态包含和动态包含有什么区别?

在jsp当中经常需要嵌套其他的jsp页面,以提高代码利用率跟工作效率。
常用的jsp嵌套包括静态包含跟动态包含两种方式,那这两种方式有啥区别呢。
下面这张图很好的解释了两者的区别:
在这里插入图片描述

14、过滤器有哪些作用和用法?

过滤器的常见用途:

a).对用户的请求进行统一的认证、对访问的请求进行记录和审核
b).对用户传输的数据过滤和替换,转换图像格式,对响应内容进行压缩,减少网络传输
c).对用户的请求和响应进行加密处理
d).触发资源访问事件

Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。
可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet。Servlet 过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。调用 Servlet 前调用所有附加的 Servlet 过滤器。
Servlet 过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:
在客户端的请求访问后端资源之前,拦截这些请求。
在服务器的响应发送回客户端之前,处理这些响应。

15、请谈谈你对Javaweb开发中的监听器的理解?

监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。
监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。
java中的事件监听机制可用图来表示:
在这里插入图片描述

16、说说web.xml文件中可以配置哪些内容?

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!-- 配置web引用程序中Servlet上下文的初始化参数 -->
    <context-param>
        <param-name>name</param-name>
        <param-value>ytuan996</param-value>
    </context-param>
    <!-- 当程序中发生错误时,跳转到哪一个页面。这里的错误可以是异常,也可以是错误码,但是只能是其中之一 -->
    <error-page>
        <exception-type></exception-type>
        <error-code>500</error-code>
        <location>error.jsp</location>
    </error-page>
    <!-- 配置自己定义的过滤器 -->
    <filter>
        <!-- 还可以在这里定义过滤器的自定义参数 -->
        <init-param>
            <param-name></param-name>
            <param-value></param-value>
        </init-param>
        <filter-name></filter-name>
        <filter-class></filter-class>
    </filter>
    <!-- 过滤器的规则 -->
    <filter-mapping>
        <filter-name></filter-name>
        <url-pattern></url-pattern>
    </filter-mapping>
    <!-- 监听器 -->
    <listener>
        <listener-class></listener-class>
    </listener>
    <!-- 配置Servlet --
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值