【Java EE 面试题笔记】

这里写目录标题

  • Java EE考核题
      • 一、选择题(共30分,每题1分)(注意:存在不定项选择)
        • 1、在表单提交的数据中,如果变量的值有多个,这时应调用( )方法
        • 2、在J2EE中,以下不是JSP隐式对象的是( )
        • 3、JDBC中负责建立与数据库连接的是( )
        • 4、下列 ( ) 技术不是ajax的常用技术
        • 5、当在JSP文件中要使用到Vector对象时,应在JSP文件中加入以下哪个语句?
        • 6、Servlet中,HttpServletRequest中的( )方法用于返回应用程序的上下文路径?
        • 7、在一个Filter中,处理filter业务的是( )方法。
        • 8、jsp:forward和sendRedirect都是用来做页面跳转的,描述错误的是?
        • 9、哪些是Servlet接口的方法:( )
        • 10、一个实例运行在本地计算机的端口8088处。Web服务器实例中部署有一名为SimpleDemo的Web应用, 其部署中的web.xml文件配置片段如下:
        • 11、page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:( )。
        • 12、接口Statement中定义的execute方法的返回类型以及代表的含义分别是:( )
        • 13、关于Cookie的说法,错误的是 ( )
        • 14、Servlet中,HttpServletResponse的 ( )方法用来把一个Http请求重定向到另外的URL
        • 15、上述代码定义了默认的会话超时时长,时长为30( ).
        • 16、对于ServletRequest接口的获取请求参数的方法的描述那一项是正确的?
        • 17、关于过滤器的描述正确的是( )
        • 18、以下路径哪些表示绝对路径( )
        • 19、在Java EE中,如果req是HttpServletRequest的实例,要通过req获取已经存在的HttpSession对象,如果不存在就创建一个HttpSession对象,下面选项中()可以实现。
        • 20、在Java EE中,关于创建HttpServletRequest对象的说法正确的是( )。
        • 21.、在Java Web应用开发中,已知在web.xml文件中正确配置了Servlet,若想将所有Web请求都映射到此Servlet,则需要在标签内填写的内容是( )。
        • 23、为了避免服务器的响应信息在浏览器端显示为乱码,通常会使用()语句重新
        • 24、给定如下三个类:
        • 25、给定类定义如下:
        • 26、下列变量定义错误的是()。
        • 27、下列元素中,为行内元素的是( )
        • 28、下面对构造方法的描述不正确是( )
        • 29 在vim中退出不保存的命令是?
        • 30、在linux中如何删除一个非空子目录/tmp?
      • 二、填空题(每空2分,共20分。大小写错误均不给分)
      • 三、简答题(每题5分,共30分)
        • 1、请求转发与重定向的区别

Java EE考核题

一、选择题(共30分,每题1分)(注意:存在不定项选择)

1、在表单提交的数据中,如果变量的值有多个,这时应调用( )方法

A. getParameterValues() B. getParameters()

C. getParameterNames() D. getAttributeValues()

2、在J2EE中,以下不是JSP隐式对象的是( )

A. pageContext B. context C. application D. out

3、JDBC中负责建立与数据库连接的是( )

SQL注入:
sql中的单引号与程序中的双引号
Statement与PrepareStatement区别:
可读性:
PrepareStatement可以将SQL语句中的变量抽象出来,这样可以提高代码的可读性 ;
效率:
Statement 执行每一条SQL语句时,都是编译+执行,相当于静态SQL;
PrepareStatement执行的SQL语句,会进行预编译,SQL中可以包含动态参数"?“,在执行时可以为”?"动态设置参数值,当下次执行相同类型的SQL语句时,可以解析并直接执行编译好的SQL语句,从而减少编译次数提高数据库的性能,相当于动态SQL(我是这么理解的);另一方面,他还有Batch功能可以进行批量请求,从而减少了JDBC驱动和数据库的连接请求次数,eg:

    PreparedStatement pstmt = conn.prepareStatement("INSERT into users values (?, ?, ?)");  
    for (i = 0; i < list.length(); i++) {  
      pstmt.setLong(list[i].id);
      pstmt.setString(list[i].name);  
      pstmt.setString(list[i].phone);
      pstmt.addBatch();  
    }  
    pstmt.executeBatch(); 

~Statement每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形时,效率高于PreparedStatement。
安全性:
Statement: SQL语句每次都是重新编译执行的,这就导致你传进去的参数和SQL语句是有联系,可以改变原先SQL的功能结构

select * from user where username= '"+name+"' and userpwd='"+passwd+"'

如果传进去的passwd参数值是 ’ or ‘1’ = '1 那SQL就变成了永真式:

select * from user where username= '"+name+"' and userpwd='' or '1' = '1'

权限就这样被轻易获取了;

PrepareStatement:SQL的参数会被强制类型转换成表中的列属性值,由于SQL语句已经实现被编译过,参数和原来SQL语句不会有交集,也就避免了这种情况的发送;

A.Statement
B.PreparedStatement
C.ResultSet (游标,保持数据库的连接获取结果集,因此不能先断开数据库连接才获取)
D.DriverManager

4、下列 ( ) 技术不是ajax的常用技术

A.Xml B.JavaScript C. Json D. Junit (

做单元测试的组件 与ajax无关

)

5、当在JSP文件中要使用到Vector对象时,应在JSP文件中加入以下哪个语句?

A.

B. (运行时指令–>)

C.<%@ page import=”java.util.*” %> (编译时指令–>)

D .<%@ page include=”java.util.*” %>

6、Servlet中,HttpServletRequest中的( )方法用于返回应用程序的上下文路径?

==A. getContextPath() == (获取项目根目录)
B.getPath()
C.getRequestURL() (获取请求的URL地址)
D.getRequestURI() (URI)

7、在一个Filter中,处理filter业务的是( )方法。

A. dealFilter (ServletRequest request,ServletResponse response,FilterChain chain)

B. dealFilter (ServletRequest request,ServletResponse response)

C. doFilter (ServletRequest request,ServletResponse response,FilterChain chain)

D. doFilter (ServletRequest request,ServletResponse response)

8、jsp:forward和sendRedirect都是用来做页面跳转的,描述错误的是?

forward:请求转发 只能在应用程序内进行请求转发,不能跨程序

A.forward之后可以使用原来的request对象,而且效率较高

B.sendRedirect之后不可以使用原来的request对象,而且效率较低。

C.forward地址栏不变化,只能在Web应用程序内的页面间跳转。

D.forward地址栏变化,可以跳转到任何页面和机器。

9、哪些是Servlet接口的方法:( )

Servlet接口方法 init() service() destroy()

A、doGet方法 B、doPost方法

C、init方法 D、service方法

10、一个实例运行在本地计算机的端口8088处。Web服务器实例中部署有一名为SimpleDemo的Web应用, 其部署中的web.xml文件配置片段如下:
<servlet>

  <servlet-name>PDFSvlservlet-name>

  <servlet-class>com.etime.servlet.PDFSvlservlet-class>

servlet>
<servlet-mapping>

  <servlet-name>PDFSvl<servlet-name>

  <url-pattern>/pdfurl-pattern>

servlet-mapping>

仅根据这些片段判断,可能下列那些URI可以访问SimpleDemo应用的PDFSvl ( )

访问路径 /pdf
端口8088
计算机端口取值范围:1-65535 2^16-1
一般使用1024 以后的端口号 之前的端口号为预留系统的端口号,占用容易产生冲突

A.http://127.0.0.1:8080/SimpleDemo/servlet/PDFSvl

B.http://127.0.0.1:8088/SimpleDemo/servlet/PDFSvl

C.http://127.0.0.1:8088/SimpleDemo/pdf

D.http://127.0.0.1:8080/pdf

11、page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:( )。

.A、<%@ page %>作用于整个JSP页面

B、可以在一个页面中使用多个<%@ page %>指令

C、为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的

D、<%@ page %>指令中的属性只能出现一次

规范 一般放JSP开头但不是必须的
属性可以出现多次 例如:import

12、接口Statement中定义的execute方法的返回类型以及代表的含义分别是:( )

execute : __返回值 —> statement 中的Execute返回值为Boolean 类型 表示sql有无执行结果

A. 结果集ResultSet B .受影响的记录数量

C. 有无ResultSet返回 D. SQL语句是否存在语法错误

13、关于Cookie的说法,错误的是 ( )

A. 获取Cookie的名字用cookie的getName方法,getValue方法获取cookie的值

B. getMaxAge和 setMaxAge是获取和设置cookie经过多长时间过期的方法

C. Cookie是服务器端状态管理机制 (浏览器端 cookie在浏览器端上的)

D. 浏览器可以关闭Cookie功能

14、Servlet中,HttpServletResponse的 ( )方法用来把一个Http请求重定向到另外的URL

A. sendURL()
B. redirectURL()
C.getRequestDispatcher()
D.sendRedirect()

15.在J2EE中,在web.xml中,有如下代码:C

<session - config>

  <session - timeout>30session - timeout>

session - config>
15、上述代码定义了默认的会话超时时长,时长为30( ).

session过期时间配置方法:
①Java程序中对request进行配置 秒
②Application中的web.xml中session-config 分钟
③Tomcat根目录下的web.xml中配置 分钟

A.毫秒 B.秒

C.分钟 D.小时

16、对于ServletRequest接口的获取请求参数的方法的描述那一项是正确的?

A. getParameter方法只用于接收POST请求参数,接收GET请求参数需要使用getQueryString方法

getParamter可以获取get及post的请求参数
getQueryString 返回所有请求参数

B. 如果一个参数key有多个值,那么getParameter(key)方法会返回空

返回一组数据中的第一个数据

C. 如果一个参数key有多个值,那么getParameterValues(key)方法会返回一个包含所有值的字符串数组

D. getParameter方法返回Object对象,使用前要强制类型转换:如String str=(String) request.getParameter(key)

返回值为String类型

17、关于过滤器的描述正确的是( )

A.必须实现Filter接口

B.无需配置web.xml即可工作

C.可以由多个过滤器组成过滤器链分别工作

D.过滤器也可以配置初始化参数

18、以下路径哪些表示绝对路径( )

A.http://www.edu-learn4fun.com

B./index

C.user/adduser.html

D…/user/adduser.html

19、在Java EE中,如果req是HttpServletRequest的实例,要通过req获取已经存在的HttpSession对象,如果不存在就创建一个HttpSession对象,下面选项中()可以实现。

A. req.getSession()

getSession带参的情况 参数 为Boolean类型
true 如无session对象则创建httpsession对象返回一个session对象
false 如无session对象则返回null
B. req.getSession(false)

C. req.getSession(true)

D. req.createSession()

20、在Java EE中,关于创建HttpServletRequest对象的说法正确的是( )。

A.从request获取传入的参数,可以调用getParameter方法

B.由Java Web应用的Servlet或JSP组件负责创建,当Servlet或JSP组件响应HTTP请求时,先创建HttpServletRequest对象

C.由程序员通过编码形式创建,以传递请求数据

D.以上都不对

21.、在Java Web应用开发中,已知在web.xml文件中正确配置了Servlet,若想将所有Web请求都映射到此Servlet,则需要在标签内填写的内容是( )。

A. *.html

B. *.jsp

C. /*

D. *

22.、在Web 项目的目录结构中,web.xml文件位于( )中。

A.src目录

B.文档根目录

C.META-INF目录

D.WEB-INF目录

23、为了避免服务器的响应信息在浏览器端显示为乱码,通常会使用()语句重新

设置字符编码。

A.response.setContentType()

B.response.setCharacterEncoding()

C.response.setPageCoding()

D.response.setCharset()

24、给定如下三个类:

public class Animal{}

public class Dog extends Animal{}

public class Cat extends Animal{}

试分析以下代码:

	1. Animal a1 = new Dog();
	
	2. Animal a2 = new Cat();
	
	3. Cat c2 = (Cat)a1;

下列说法正确的是():

A.程序正常运行

B.第2行编译错误;

C.第3行编译错误

多态特点 :
向上转型 随意转
向下转型 强转 InstanceOf判断是否同类型 再强转 否则 通过Try catch 抛出异常

D.程序运行时抛异常;

25、给定类定义如下:
public class One{

	public int f1(int x){}

}

public class Two extends One{

1.//insert code here

}

下面哪些选项可以插入第1行:()
【Java EE 面试题笔记】_第1张图片

A.public void f1(int x){};

B.public int f1(long x){}; (重载)

C.public int f1(int x){}; (重写)

D.public void f1(long x){}; (重载)

26、下列变量定义错误的是()。

A.int a

声明默认值则为0

B.double b=4.5

C.boolean b=true

D.float f=9.8

float 9.8默认为double类型 尾部需跟上F

27、下列元素中,为行内元素的是( )

A.div

B.span

C.h3

D.p

28、下面对构造方法的描述不正确是( )

编译器会为我们提供无参构造方法
构造不能有返回值
可重载
可初始化设置参数

A.系统提供默认的构造方法

B.构造方法可以有参数,所以也可以有返回值

C.构造方法可以重载

D.构造方法可以设置参数

29 在vim中退出不保存的命令是?

A. :q

B. :w

C. :wq (保存退出)

D. :q! (强制退出)

30、在linux中如何删除一个非空子目录/tmp?

A. del /tmp/*

B. rm -rf /tmp (删除temp)

C. rm -Ra /tmp/*

D. rm -rf /tmp/* (删除temp/下的子目录)

二、填空题(每空2分,共20分。大小写错误均不给分)

1、在一个应用程序中不同的页面共享数据时,最好的JSP内置对象为___session___。

用户独有的数据session 会话期间都可以用

2、Servlet 类的存放位置是___/x/WEB-INF/classes__(设 Web 服务目录为 x)。

3、Tomcat服务器的默认端口是__8080__,可以通过修改Tomcat服务器安装目录中conf文件下的主配置文件_server.xml_来更改端口号。

4、在JSP文件中使用 对HTML文本进行注释;使用 ___<%-- --%>_____符号对JSP语句进行注释。

HTML注释
<%-- --%> Jsp注释
/* */ // Java注释

5、当前目录____./_;上层目录用什么表示 ../ ;主目录用什么表示 /;切换目录用什么命令 cd

三、简答题(每题5分,共30分)

1、请求转发与重定向的区别
请求转发 重定向
1次请求 2次请求
能带数据 不能带数据
只能在项目内容 任意互联网位置
Url地址栏不变 地址栏为最后访问资源的地址

面试回答?:
1)分别执行过程:
2)分别描述区别:

2、请简单介绍Servlet的生命周期。

  1. 生命周期方法:init() service() destroy()
  2. init() 初始化 service()处理请求 destroy() 销毁

3、get请求和Post请求区别

  1. 从http协议层面来说,get请求用于资源获取,应该是安全和幂等的,而post请求表示该请求可能会修改服务器上的资源,所以我们一般查询数据一般采用get请求,而增加,修改,删除等操作应该使用post请求.
  2. get请求的扁担数据是放在url地址栏中的,而oist请求表单数据是放在请求体里面的.所以:
    2.1 get请求得url地址栏中有数据,而post得数据在请求体中,所以对于信息安全来说,post相对安全一些
    2.2由于url地址栏得长度有限制,限制为2k,所以get的请求的数据长度最大不能超过2k,而post限制;
    2.3get请求可以收藏,可以添加书签,刷新无害,记录历史记录;而post请求不行,原因在于浏览器在记录历史记录,添加书签只记录地址,并不会记录请求体.
    2.4如果上传文件,只能采用post请求;
  3. get请求与post 请求编码方式不一样

4、cookie,session,application的区别?

Cookie Session Application
存放位置 浏览器 服务器,浏览器存放JSESSIONID 服务器
内容 String字符串 Object Object
存放时间 可设置,默认会话结束后删除 默认30分钟,可设置 从服务器启动到服务器关闭整个周期
数据权限 用户独有 用户独有 所有用户共享

5、接口和抽象类的区别?

往往答不全

接口 抽象类
不能有方法实现,所有方法都是抽象方法 可以有方法实现
所有方法的访问修饰都是public的 可以定义protected,public,default (不能定义为private 无法继承抽象类)
所有的成员变量默认是静态常量 可以定义普通变量
接口时多继承的 抽象类只能继承一个父类(类的继承时单继承)
jdk1.8之后,可以定义接口方法的默认实现
接口一般用于定义标准 抽象类一般用于复用

6、请描述vim编辑器的三种模式,以及三种模式之间如何切换。
VIM 编辑器的三种模式 命令模式 —> i -->编辑模式 -->ESC–>命令模式—>:—>末行模式—>ESC---->命令模式

四、数据库(20分,每题4分)

数据库中有如下数据表:

员工表(staff)

员工编号 sid number

员工姓名 sname varchar

部门番号 sdid number

部门表(development)

部门番号 did number

部门名称 dname varchar

项目表 (project)

项目番号 pid number

部门番号 pdid number

项目名称 pname varchar

奖金表(bonus)

员工编号 bsid number 主键

项目番号 bpid number 主键

奖金 bbouns number

1、统计奖金小于2000,2000-3999,4000-5999,6000-7999,8000及以上的人数;

select 
sum(case when bonus<2000 then 1 else 0 end) as '<2000'),
sum(case when bonus between 2000 and 3999  then 1 else 0 end) as '2000--3999'),
...
from 
(select sum(bbonus) as sumbonus,bsid from bonus group by bsid) t

2、查询平均奖金大于10000的人数最多的部门;

select avg(bbonus) as avgbonus,count(b.sid) as countstaff,pid
from bonus a inner join staff b on a.sid = b.sid 
group by spid
having avgbonus > 10000 and  countstaff = max(countstaff)
/*
order by countstaff desc 
limit 1*/

3、删除部门名称为‘第一部门’的所有奖金记录

delete from bonus  where bpid in (select pid from project inner join department on (project.pid = b.did ) where b.dname = '第一部门') 

4、新增一个员工编号为‘20130001’,项目番号为‘D0001’,他的奖金与员工编号为

insert into bonus (bsid,bpid,bbnouns) values('20130001','D0001','')

‘20140001’的项目平均奖金一样

5、修改项目番号为‘D0001’的部门名称为“成都银行”。

update department set dname = '成都银行' where did =(select pdid from project where pid ='d0001')

你可能感兴趣的:(JavaWeb,java-ee,java,面试)