Java面试题错题总结

Java方面:
1.下面有关struts1和struts2的区别,描述错误的是?(B)

(A).Struts1要求Action类继承一个抽象基类。Struts 2 Action类可以实现一个Action接口
(B) Struts1 Action对象为每一个请求产生一个实例。Struts2 Action是单例模式并且必须是线程安全的
(C).Struts1 Action 依赖于Servlet API,Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试
(D).Struts1 整合了JSTL,Struts2可以使用JSTL,但是也支持OGNL

解释
从action类上分析:
1.Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
2. Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
从Servlet 依赖分析:
3. Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
4. Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
从action线程模式分析:
5. Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
6. Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

2.关于AWT和Swing说法正确的是?(D)

(A).Swing是AWT的子类
(B).AWT在不同操作系统中显示相同的风格
(C).AWT不支持事件类型,Swing支持事件模型
(D).Swing在不同的操作系统中显示相同的风格

解释:
AWT :是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindow风格。 AWT 中的图形函数与 操作系统 所提供的图形函数之间有着一一对应的关系,我们把它称为peers。 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用 操作系统 所提供的图形库。由于不同 操作系统 的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。
Swing :是所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heaveyweight组件。比如JWindow,Dialog,JFrame
Swing是所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heaveyweight组件。比如JWindow,Dialog,JFrame
Swing由纯Java写成,可移植性好,外观在不同平台上相同。所以Swing部件称为轻量级组件( Swing是由纯JAVA CODE所写的,因此SWING解决了JAVA因窗口类而无法跨平台的问题,使窗口功能也具有跨平台与延展性的特性,而且SWING不需占有太多系统资源,因此称为轻量级组件!!!)

3.关于JAVA的垃圾回收机制,下面哪些结论是正确?(B)

A)程序可以任意指定释放内存的时间
B)JAVA程序不能依赖于垃圾回收的时间或者顺序
C)程序可明确地标识某个局部变量的引用不再被使用
D)程序可以显式地立即释放对象占有的内存

解释
java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。
当对象的引用变量被赋值为null,可能被当成垃圾。
4.下面哪个不对 ©

A) RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine.
B) A method is not required to declare in its throws clause any subclasses of RuntimeExeption that might be thrown during the execution of the method but not caught
C) An RuntimeException is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch.
D) NullPointerException is one kind of RuntimeException

解释
问题翻译

A)RuntimeException是在Java虚拟机的正常操作期间可以抛出的异常的超类。
B)方法不需要在其抛出子句中声明任何RuntimeExeption子类,这些子类可能在方法执行期间抛出,但没有被捕获
C)RuntimeException是Throwable的子类,它指出了一个合理的应用程序不应该试图捕捉的严重问题。
D)NullPointerException是一种RuntimeException

在这里插入图片描述
**5.下面有关jsp中静态include和动态include的区别,说法错误的是? **

A)动态INCLUDE:用jsp:include动作实现 
B)静态INCLUDE:用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
C)静态include的结果是把其他jsp引入当前jsp,两者合为一体;动态include的结构是两者独立,直到输出时才合并
D)静态include和动态include都可以允许变量同名的冲突.页面设置也可以借用主文件的

解释
动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page=“included.jsp” flush=“true” /> 它总是会检查所含文件中的变化 , 适合用于包含动态页面 , 并且可以带参数。各个文件分别先编译,然后组合成一个文件。

静态 INCLUDE 用 include 伪码实现 , 定不会检查所含文件的变化 , 适用于包含静态页面 <%@ include file=“included.htm” %> 。先将文件的代码被原封不动地加入到了主页面从而合成一个文件,然后再进行翻译,此时不允许有相同的变量。

以下是对 include 两种用法的区别 , 主要有两个方面的不同 ;

一 : 执行时间上 :

<%@ include file="relativeURI"%> 是在翻译阶段执行

<jsp:include page="relativeURI" flush="true" /> 在请求处理阶段执行 .

二 : 引入内容的不同 :

<%@ include file="relativeURI"%>

引入静态文本 (html,jsp), 在 JSP 页面被转化成 servlet 之前和它融和到一起 .

<jsp:include page="relativeURI" flush="true" /> 引入执行页面或 servlet 所生成的应答文本 .

6.Java关键字:
在这里插入图片描述
7.有关finally语句块说法正确的是(ABC )

A)不管catch是否捕获异常,finally语句块都是要被执行的
B)在try语句块或catch语句块中执行到System.exit(0)直接退出程序
C)finally块中的return语句会覆盖try块中的return返回
D)finally 语句块在 catch语句块中的return语句之前执行

解释
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
官方文档:
1.如果有返回值,就把返回值保存到局部变量中
2.执行jsr指令跳到finally语句里执行
3.执行完finally语句后,返回之前保存在局部变量表里的值

8.在JAVA中,下列哪些是Object类的方法(BCD)

A)synchronized()
B)wait()
C)notify()
D)notifyAll()
E)sleep()

解释:
synchronized Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
notify(): 是唤醒一个正在等待该对象的线程。
notifyAll(): 唤醒所有正在等待该对象的线程。
sleep 是Thread类中的方法
wait 和 sleep的区别:
wait指线程处于进入等待状态,形象地说明为“等待使用CPU”,此时线程不占用任何资源,不增加时间限制。
sleep指线程被调用时,占着CPU不工作,形象地说明为“占着CPU睡觉”,此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制

9.关于JSP生命周期的叙述,下列哪些为真? (AC)

A)JSP会先解释成Servlet源文件,然后编译成Servlet类文件
B)每当用户端运行JSP时,jsp init()方法都会运行一次
C)每当用户端运行JSP时,jsp service()方法都会运行一次
D)每当用户端运行JSP时,jsp destroy()方法都会运行一次

解释
init方法:负责初始化Servlet对象。在Servlet的整个生命周期类,init()方法只被调用一次。
destroy方法:销毁Servlet对象,释放占用的资源,Servlet要被卸载时调用

10.关于struts项目中的类与MVC模式的对应关系,说法错误的是(CD)

A)Jsp文件实现视图View的功能
B)ActionServlet这一个类是整个struts项目的控制器
C)ActionForm、Action都属于Model部分
D)一个struts项目只能有一个Servlet

解释
在这里插入图片描述

*11.非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致.(B)

A)正确
B)错误

解释
两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
所有内容均来自牛客网的错题总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值