那些你曾错过的JAVA题(三)


11


关于spring说法错误的是?
A.spring是一个轻量级JAVA EE的框架集合
B.spring是“依赖注入”模式的实现
C.使用spring可以实现声明事务
D.spring提供了AOP方式的日志系统


解析:


本题考查的就是spring的一些特点,所以翻出一些Spring框架的介绍和特点,大家可以一起看看


Spring Framework是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,Spring中包含的关键特性:


1.强大的基于JavaBeans的采用控制翻转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易。


2.一个可用于从applet到Java EE等不同运行环境的核心Bean工厂。数据库事务的一般化抽象层,允许声明式(Declarative)事务管理器,简化事务的划分使之与底层无关。

3.内建的针对JTA和单个JDBC数据源的一般化策略,使Spring的事务支持不要求Java EE环境,这与一般的JTA或者EJB CMT相反。


4.JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量。再次利用JDBC时,你无需再写出另一个’终止’(finally)模块。并且面向JDBC的异常与Spring通用数据访问对象(Data Access Object)异常等级相一致。


5.以资源容器,DAO实现和事务策略等形式与Hibernate,JDO和iBATIS SQL Maps集成。利用众多的翻转控制方便特性来全面支持,解决了许多典型的Hibernate集成问题。所有这些全部遵从Spring通用事务处理和通用数据访问对象异常等级规范。


6.灵活的基于核心Spring功能的MVC网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现(View)技术,例如JSP、FreeMarker、Velocity、Tiles、iText以及POI。值得注意的是,Spring中间层可以轻易地结合于任何基于MVC框架的网页层,例如Struts、WebWork或Tapestry。


7.提供诸如事务管理等服务的面向方面编程框架。


另外,Spring并没有提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统


答案:D


12


对于JVM内存配置参数:


-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3


其最小内存值和Survivor区总大小分别是()

A.5120m,1024m

B.5120m,2048m

C.10240m,1024m

D.10240m,2048m


解析:


刚看到这个题,我也是一脸懵逼就随便猜了个答案,果不其然错了,看了大佬们的解析后,才搞懂,下面的解析来自某位大佬:


-Xmx:最大堆大小

-Xms:初始堆大小

-Xmn:年轻代大小

-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值


年轻代5120m, 


Eden:Survivor=3,


Survivor区大小=1024m(Survivor区有两个,即将年轻代分为5份,每个Survivor区占一份),总大小为2048m。


-Xms初始堆大小即最小内存值为10240m


 -XXSurvivorRatio=3:代表Eden:Survivor    = 3    根据Generation-Collection算法(目前大部分JVM采用的算法),一般根据对象的生存周期将堆内存分为若干不同的区域,一般情况将新生代分为Eden  ,两块Survivor;     计算Survivor大小,  Eden:Survivor =  

 3,总大小为5120,3x+x+x=5120  x=1024


新生代大部分要回收,采用Copying算法,快!


老年代  大部分不需要回收,采用Mark-Compact算法


答案:D


13



Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是()。

A.加载Servlet类及.class对应的数据

B.创建servletRequest和servletResponse对象

C.创建ServletConfig对象

D.创建Servlet对象


解析:

有图有真相,这就不必多说了,看图↓↓↓


那些你曾错过的JAVA题(三)


答案:C,D


14


JAVA反射机制主要提供了以下哪些功能?


A.在运行时判断一个对象所属的类
B.在运行时构造一个类的对象
C.在运行时判断一个类所具有的成员变量和方法
D.在运行时调用一个对象的方法


解析: 
Java反射机制主要提供了以下功能:


  1. 在运行时判断任意一个对象所属的类;
  2. 在运行时构造任意一个类的对象;
  3. 在运行时判断任意一个类所具有的成员变量和方法;
  4. 在运行时调用任意一个对象的方法;
  5. 生成动态代理。


答案:ABCD



15



以下代码执行的结果显示是多少( )?


public class Demo { class Super{  int flag=1;
        Super(){
            test();
        }  void test(){
           System.out.println("Super.test() flag="+flag);
        }
   } class Sub extends Super{
       Sub(int i){  flag=i;
           System.out.println("Sub.Sub()flag="+flag);
       }  void test(){
           System.out.println("Sub.test()flag="+flag);
       }
   }  public static void main(String[] args) {  new Demo().new Sub(5);
    }
}


A. Sub.test() flag=1        Sub.Sub() flag=5

B. Sub.Sub() flag=5        Sub.test() flag=5

C. Sub.test() flag=0        Sub.Sub() flag=5

D. Super.test() flag=1    Sub.Sub() flag=5


解析:


在继承中代码的执行顺序为:


1.父类静态对象,父类静态代码块


2.子类静态对象,子类静态代码块


3.父类非静态对象,父类非静态代码块


4.父类构造函数


5.子类非静态对象,子类非静态代码块


6.子类构造函数


对于本题来说:在只想new Sub(5)的时候,父类先初始化了 int flag = 1,然后执行父类的构造函数Super(),父类构造函数中执行的test()方法,因子类是重写了test()方法的,因此父类构造函数中的test()方法实际执行的是子类的test()方法,所以输出为Sub.test() flag=1,接着执行子类构造函数Sub(5) 将flag赋值为5,因此输出结果Sub.Sub() flag=5。最终选择了A


答案:A

上一篇:JavaWeb| 深入servlet技术(一)


下一篇:深度学习(三)--session对话和operation操作