我的Java总结

1 Overload Override 的区别。 Overloaded 的方法是否可以改变返回值的类型
 
答: 方法的重写 Overriding 和重载 Overloading Java 多态性的不同表现。重写 Overriding    是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写  (Overriding) 。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被 " 屏蔽 " 了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载 (Overloading) Overloaded 的方法是可以改变返回值的类型

2 常见的 runTime exception

答: ArithmeticException,( 算法错误 ) IllegalArgumentException( 不合法的参数异常 ),NullpointerException( 空指针异常错误 ),ClassCastException( 类型转换错误 ),ArrayStoreException( 数组存储错误 );

3.String StringBuffer 的区别 :

String 的长度是不变的, StringBuffer 的长度是可变的,它们里面的实现方式不同。如果经常变化就用

StringBuffer ,如果最后要要变成 String StringBuffer 中的 toString() 方法。

4 Hashtable hashMap 的区别:

Hashtable 是线程安全的,同步的, HashMap 不是线程安全的, HashMap 可以将空值作为 Key Value 值。

5 .是否可以继承 String :不可以,因为 Sting 类是 Final 类;

6 . 接口是否可继承接口 ? 抽象类是否可实现 (implements) 接口 ? 抽象类是否可继承实体类 (concrete class)
答: 接口可以继承接口。抽象类可以实现 (implements) 接口,抽象类是可继承实体类,注意:继承时父类要有一个空的构造方法。

7. swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String
答: witch expr1 )中, expr1 是一个整数表达式。因此传递给  switch   case  语句的参数应该是  int  short  char  或者  byte long,string  都不能作用于 swtich

8. float float f=3.4 是否正确 ?
: 不正确。精度不准确 , 应该用强制类型转换,如下所示: float f=(float)3.4 或者 float f=3.4f;

9. String 是最基本的数据类型吗
答: 基本数据类型包括 byte int char long float double boolean short
java.lang.String
类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer

10 int integer 的区别:

答: java 提供了两种不同的数据类型,引用数据类型和,基本数据类型。 Int 是基本数据类型, integer Java int 提供的封装类, Java 为每个基本数据类型都提供了封装类。引用数据类型缺省值为 null 。而基本数据类型缺省值与它们的类型有关、

11 简述一下面向对向?

答:主要从三个方面 , 继承,多态,封装,

1,   继承:主要是重用代码减少代码量,它提供了一种明确共性的类,对象的新类可以从这个类中派生,这个过程称为类继承。新类继承了原始类的特性,原始类称为父类,派生类称为子类。子类可以除了继承父类,还可以增加和修改父类的方法使之更适合特殊的需要。

2,   多态; 多态性是指允许不同类的对象对同一消息作出响应,即执行不同的实例而执行不同的操作。多态语言具有灵活性。很好的解决了函数同名的问题。

3,   封装:提供公有的方法访问私有有的属性。

12 说出一些常用的类,包,接口,请各举 5
答: 常用的类:LinkList  ArrayList  FileReader  FileWirter  String  Integer 常用的包: java.lang  java.awt  java.io  java.util  java.sql
常用的接口:  List  Map  Document  NodeListrunnable, Serializable

13 List Map Set 三个接口,存取元素时,各有什么特点?
答: List  以特定次序来持有元素,可有重复元素。 Set  无法拥有重复元素 , 内部排序。 Map  保存 key-value 值, value 可多值 (set 要利用转成其他类才可以遍历出值,最方便的是 Iterator)
14
什么是 java 序列化,如何实现 java 序列化?

答: 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现 Serializable 接口,该接口没有需要实现的方法, implements Serializable 只是为了标注该对象是可被序列化的,然后使用一个输出流 ( 如: FileOutputStream) 来构造一个 ObjectOutputStream( 对象流 ) 对象,接着,使用 ObjectOutputStream 对象的 writeObject(Object obj) 方法就可以将参数为 obj 的对象写出 ( 即保存其状态 ) ,要恢复的话则用输入流。
15
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚 拟机进行垃圾回收
答: 对于 GC 来说,当程序员创建对象时, GC 就开始监控这个对象的地址、大小以及使用情况。通常, GC 采用有向图的方式记录和管理堆 (heap) 中的所有对象。通过这种方式确定哪些对象是 " 可达的 " ,哪些对象是 " 不可达的 " 。当 GC 确定一些对象为 " 不可达 " 时, GC 就有责任回收这些内存空间。可以。程序员可以手动执行 System.gc() ,通知 GC 运行,但是 Java 语言规范并不保证 GC 一定会执行。
16
JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别 代表什么意义?在 try 块中可以抛出异常吗?
答: 当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。 Java 的异常处理是通过 5 个关键词来实现的: try catch throw throws finally 。一般情况下是用 try 来执行一段程序,如果出现异常,系统会抛出( throws )一个异常,这时候你可以通过它的类型来捕捉( catch )它,或最后( finally )由缺省处理器来处理。
try 来指定一块预防所有 " 异常 " 的程序。紧跟在 try 程序后面,应包含一个 catch 子句来指定你想要捕捉的 " 异常 " 的类型。
throw
语句用来明确地抛出一个 " 异常 "
throws
用来标明一个成员函数可能抛出的各种 " 异常 "
Finally
为确保一段代码不管发生什么 " 异常 " 都被执行一段代码。
17
排序都有哪几种方法?请列举
答:    排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
18
说出 ArrayList,Vector, LinkedList 的存储性能和特性
答: ArrayList Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢, Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
19
谈谈 final, finally, finalize 的区别
答: final— 修饰符(关键字)如果一个类被声明为 final ,不能作为父类被继承。将变量或方法声明为 final ,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使用,不能重载
finally—
异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)
finalize—
方法名。 Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的
20
abstract class interface 有什么区别
答: 声明方法的存在而不去实现它的类被叫做抽象类( abstract class ),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract  类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。 Abstract  类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法
接口( interface )是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义 static final 成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换, instanceof  运算符可以用来决定某对象的类是否实现了接口
21
Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以 implements( 实现 )interface( 接口 )
答: 匿名的内部类是没有名字的内部类。不能 extends( 继承 ) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现
22
简述一下 Struts 原理:
   1 ,客户端浏览器访问核心控制 ActionServlet ActionServlet 根据 Struts 配置文件查找 path 为“”的 Action Bean 找到相对应的 Action 方法。
   2
,通过配置信息中的 Action name 属性找到 ActionFrom ,将请求中包含的值填充到 FromBean 中。这一步有时没有,(有时没有表单),调用 Action Exectu 方法, Action 调用业务逻辑,得到返回值,控制权重新回到 ActionServlet ,她根据返回的 ActionForward 对象发到相应的 jsp 页面。
23 什么时候用 assert
答: assertion( 断言 ) 在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中, assertion 就是在程序中的一条语句,它对一个 boolean 表达式进行检查,一个正确程序必须保证这个 boolean 表达式的值为 true ;如果该值为 false ,说明程序已经处于不正确的状态下,系统将给出警告或退出。为了提高性能,在软件发布后, assertion 检查通常是关闭的
24 简述下 Ioc 原理:
 
答: 把具体对象的依赖转化为抽象依赖 ,也就是类使用者应该依赖于抽象类或者接口, IOC 的主要目的:降低依赖者和被依赖者的偶合。注入方式:属性注入,构造注入,初始化容器的方法: ClassPathXmlApplicationContext IOC 容器的缺点:使用反射降低效率。

25 简述下AOP 思想:
 
答:把方法内部共性的问题提取出来,专心做自已的业务逻辑。AOP 优点: 提高代码重用,降低偶合,可维护性加强:可以通过改变切面操作来影响诸多对象的方法内部操作,从而弥补OOP 的缺陷。可以在不改变原来类的基础上影响类方法内部的操作。AOP 实现原理:动态代理,修改字节码AspectJ 辅助编译。

26 sqlserver,oracle 中的存储过程, oracle 中的游标?
答: sqlserver

oracle:create sequence shi, 用时 shi.nextval
create or replace procedure
(
参数…… )
is|as
beagin
   
过程体…………
End
写个游标……

for 循环游标,不用打开,不用关闭

27
servlet 的生命周期:
答:web 容器加载servlet ,生命周期开始。通过调用servletinit() 方法进行servlet 的初始化。通过调用service() 方法实现,根据请求的不同调用不同的do***() 方法。结束服务,web 容器调用servletdestroy() 方法
28
页面间对象传递的方法: requestsessionapplicationcookie
29 JSP
Servlet 有哪些相同点和不同点,他们之间的联系是什么?
答:1JSP Servlet 技术的扩展,。JSP 编译后是"servlet"
    2
ServletJSP 最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的HTML 里分离开来。而JSP 的情况是JavaHTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。
30 Request
对象的主要方法:
setAttribute(String name,Object)
:设置名字为namerequest 的参数值
getAttribute(String name)
:返回由name 指定的属性值
getAttributeNames()
:返回request 对象所有属性的名字集合,结果是一个枚举的实例
getCookies()
:返回客户端的所有Cookie 对象,结果是一个Cookie 数组
getCharacterEncoding()
:返回请求中的字符编码方式
31 j2ee
常用的设计模式?说明工厂模式。
Singleton
(单例模式),Visitor (访问者模式),Proxy (代理模式)Iterator (迭代子模式),Command (命令模式),Factory (工厂模式),Builder (建造模式), Factory Method (工厂方法模式),
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例
32 jsp
有哪些动作? 作用分别是什么?
JSP
共有以下6 种基本动作 jsp:include :在页面被请求的时候引入一个文件。jsp:useBean :寻找或者实例化一个JavaBean jsp:setProperty :设置JavaBean 的属性。 jsp:getProperty :输出某个JavaBean 的属性。 jsp:forward :把请求转到一个新的页面。 jsp:plugin :根据浏览器类型为Java 插件生成OBJECTEMBED 标记
33 SOAP
即简单对象访问协议(Simple Object Access Protocol) ,它是用于交换XML 编码信息的轻量级协议。
34
forward redirect 的区别
 forward 是服务器直接访问目标地址的URL ,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
  redirect
就是服务端根据逻辑, 发送一个状态码, 告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求。
35
编程题: 写一个Singleton 出来。
public class Singleton {
  
private static Singleton instance = null;
  
public static synchronized Singleton getInstance() {
    
if (instance==null){
    instance
new Singleton();
         return instance;
    }
 

  }

36
JSP
的内置对象及方法。
  request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, session 数据的有用的方法。
    response
表示HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies, 头信息等)

    out
对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

    pageContext
表示一个javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的API ,并且包装了通用的servlet 相关功能的方法。

    session
表示一个请求的javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息

    applicaton
表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet 引擎和servlet 环境的信息

    config
表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始化参数。

    page
表示从该页面产生的一个servlet 实例。

37
经常遇到输出某种编码的字符,如iso8859-1 等,如何输出一个某种编码的字符串?
  Public String translate (String str) {
    String tempStr = "";
    try {
      tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
      tempStr = tempStr.trim();
    }
    catch (Exception e) {
      System.err.println(e.getMessage());
    }
    return tempStr;
  } 
38 Spring
配置文件
<?xml version="1.0" encoding="UTF-8"?>

    <!-- 初使化Hibernate -->

    <bean id="sessionFactory"

       class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

       <property name="configLocation"

           value="classpath:hibernate.cfg.xml">

       </property>

    </bean>

    <!-- 注入到Dao -->

    <bean id="UserInfoDaoImpl"

       class="com.shi.dao.impl.UserInfoDaoImpl">

       <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

    <bean id="BillOrderDaoImpl"

       class="com.shi.dao.impl.BillOrderDaoImpl">

       <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

    <!-- 注入到Biz -->

    <bean id="UserInfoBizImpl"

       class="com.shi.biz.impl.UserInfoBizImpl">

       <property name="userInfoDao" ref="UserInfoDaoImpl"></property>

    </bean>

    <bean id="BillOrderBizImpl"

       class="com.shi.biz.impl.BillOrderBizImpl">

       <property name="billOrderDao" ref="BillOrderDaoImpl"></property>

    </bean>

    <!-- 注入到Biz -->

    <bean name="/userInfo"

       class="com.shi.web.action.UserInfoAction">

       <property name="userInfoBiz" ref="UserInfoBizImpl"></property>

    </bean>

    <bean name="/billOrder"

       class="com.shi.web.action.BillOrderAction">

       <property name="billOrderBiz" ref="BillOrderBizImpl"></property>

    </bean>

    <!-- 事物 -->

    <bean id="txMger" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

      <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

    <tx:advice id="txAdvice" transaction-manager="txMger">

      <tx:attributes>

        <tx:method name="add*" propagation="REQUIRED"/>

        <tx:method name="del*" propagation="REQUIRED"/>

        <tx:method name="upd*" propagation="REQUIRED"/>

        <tx:method name="do*" propagation="REQUIRED"/>

        <tx:method name="*" propagation="SUPPORTS" read-only="true"/>

      </tx:attributes>

    </tx:advice>

    <aop:config>

      <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.shi.biz.impl.*.*(..))"/>

    </aop:config>
</beans>

以上是Spring 配置,

当集成时,Action 的拦截有两种方式

1.Struts 中:type=" (代理)org.springframework.web.struts.DelegatingActionProxy"

2.Struts 中:<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller> 什么时候加载spring 呢?

有良种方式:

1. <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

    <set-property property="contextConfigLocation" value="classpath:applicationContext.xml"/>

  </plug-in>

2.

   <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:applicationContext.xml</param-value>

  </context-param>

  <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>
Spring 管理字(Spring 中有一个拦截器)

<filter>

     <filter-name>code</filter-name>

     <filter-class>com.shi.entity.SetEncodingFilter( 这里是自己写的拦截器)</filter-class>

     <init-param>

        <param-name>encoding</param-name>

        <param-value>gbk</param-value>

     </init-param>

  </filter>

  <filter-mapping>

     <filter-name>code</filter-name>

     <url-pattern>/*</url-pattern>

  </filter-mapping>
39 Struts
配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config

  <data-sources />

  <form-beans >

    <form-bean name="deptForm" type="com.accp.web.form.DeptForm" />  </form-beans>
  <global-exceptions />

  <global-forwards />

  <action-mappings >

    <action

      attribute="deptForm"

      input="/dept.jsp"

      name="deptForm"

      parameter="op"

      path="/dept"

      scope="request"

      type="org.springframework.web.struts.DelegatingActionProxy">

      <forward name="ok" path="/dept.jsp" />

    </action>
  </action-mappings>
  <message-resources parameter="com.accp.web.ApplicationResources" />

  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

    <set-property property="contextConfigLocation" value="classpath:applicationContext.xml"/>

  </plug-in>

</struts-config>
这里加载拦截Action 也有另一种方式:

type
写真正的Action 地址然后
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
40
工厂模式
首先定义一个基类,通过不同的方式去实现基类中的方法,然后创建一个工厂,通过不同的条件去实现子类的实例,当得到子类的实例后,开发人员调用基类中的方法而不用考虑调用哪个实例。


.IBatis Hibernate 的区别?

答:两个都是持久层框架,

1Hibernate :它的工作原理就是,把值对象和数据库之间建立一个映射关系。

我们操作这些对象和HIbernate 提供的一些积基类就可以啦。

2. Hibernate 功能强大,是全自动框架,与数据库关系不大,易移植。

3. IBatis:SqlMapSqlMapConfig

4. 相对Hibernate 等 “全自动”ORM 机制而言,

ibatis SQL 开发的工作量和数据库移植性上的让步,

为系统设计提供了更大的自由空间和更高的运行效率。

. 抽象类于接口的区别?

  abstract classinterfaceJava 语言中对于抽象类定义进行支持的两种机制;

  抽象类:

     如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类主要用来进行类型隐藏,有任意个可能的具体实现方式。

  接口:

     接口是一系列方法的声明,是一些方法特征的集合

  ① 在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。

  ②在接口中无成员变量,而抽象类中可有成员变量。接口中不能有非抽象方法,但抽象类中可以有。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值