杭州公司java开发工程师常见面试问题

 

 

1.离线查询去除重复项怎么加条件?

dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

2. http协议及端口,smtp协议及端口

超文本传输协议    端口 80 

简单邮件传输协议 端口25

3.编写程序,完成文件复制功能 错误?

         InputStream is=new InputStream();

OutputStream os = new FileOutputStream(new File("写入的文件的路径")); byte[] buff=new byte[8192]; int length = 0;

while((length=is.read(buff))!=-1){

os.write(buff,0,length);

}  然后try...catch()..finally{关闭流}

 

4.Servlet创建过程及生命周期Servlet 在容器中运行时,其实例的创建及销毁等是由容器进行控制。

Servlet 的创建有两种方法。  

1、客户端请求对应的 Servlet 时,创建 Servlet 实例;大部分Servlet 都是这种 Servlet 。   2、通过在web.xml 中设置load-on-startup来创建servlet实例,这种实例在Web 应用启动时,立即创建Servlet 实例

 Servlet 的运行都遵循如下生命周期:  

1、创建 Servlet 实例。   

2、Web 容器调用 Servlet 的 init 方法,对Servlet 进行初始化。   

3、Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。。如果客户端有get 请求,容器调用Se凹let 的doGet 方法处理并响应请求。对于不同的请求,有不同的处理方法,或者统一使用service 方法处理来响应用户请求。   

4、Web 容器角色销毁Servlet 时,调用 Servlet 的 destroy 方法,通常在关闭Web容器之时销毁Servlet。   

5.用sql语句分页:list.map.set的存储特点?

List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,value可多值

6.final,finally,finaliz的区别

    final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声   明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改   被声明为final的方法也同样只能使用,不能重载。

finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常   ,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

   finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 ;finalize() 方法以整理系统资源或者执行其他清理工作 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

7.arraylist和vector的区别?

ArrayList 作为一个常规用途的对象容器使用,用于替换原先的Vector。允许我们快速访问元素,但在从列表中部插入和删除元素时,速度却嫌稍慢。

一般只应该用ListIterator对一个ArrayList进行向前和向后遍历,不要用它删除和插入元素;与LinkedList相比,它的效率要低许多

8.Arraylist   linkedlist区别?

ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦  LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始

9.haSHMAP,HASHTABLE区别

1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;

2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。

3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。

10.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理

Cookie是在客户端开辟的一块可长期存储用户信息的地方;Session是在服务器内存中开辟的一块存储用户信息的地方;当客户第一次访问服务器时,服务器在内存创建对应的Session给访问客户,当客户离开或时间过期时;服务器自动销毁Session; Session是由容器管理的

 

11.set,map,set接口的区别

       list以特定次序来持有元素,可有重复元素,查找效率高 ,插入效率低化,

    set 无法拥有重复元素,内部排序,检索元素效率低,删除和插入效率高,因为插入和删除不会引起位置上的变化,

12.String和stringbuffer进行字符串连接时的区别?

String对象内容是不可改变的,StringBuffer是可以改变的,别且高效; 

 

13.什么叫项目?

用有限的资源、有限的时间为特定客户完成特定目标的一次性工作

 

14.J2EE J是什么意思? 2是什么意思  EE是什么意思? Struts的拦截器你是怎么做的,是独立开发的,能够独立开发的到。然后问有哪几种拦截?

Java 2 Platform,Enterprise Edition

继承AbstractInterceptor类,覆盖intercept()方法

有struts自己的拦截器 如timer ,i18n,scop,servletconfig,token

还有自定义拦截器

 

 

15.简单介绍下java?Spring的AOP,IOC的讲述  对struts2的了解,1,2的比较   xml的了解   J2ee的webserviced的协议?

 

Spring AOP:代理机制 Spring提供的自动代理机制
Spring的IoC来实组件之间的依赖关系注入, 使控制层与业务实现分离,即客户通过
调用业务委托接口来调用具体的业务组件的实例,避免控制层与业务层的藕合带来的维护
或升级困难。由Spring为DAO生成代理对象来为DAO添加事务服务,由IoC容器DAO的代理实例注入到业务组件中,业务组件通过DAO的委托接口调用DAO对象,使得上层组件不直接依赖于DAO的实现类,使得持久层更换或修改不影响上层组件。

16.Collections,collection的区别

Collection是个java.util下的接口,它是各种集合结构的父接口。Collections是个java.util下的普通类,它包含有各种有关集合操作的静态方法。Collections是针对集合类的一个帮助类,它提供一系列的静态方法实现对各种集合的搜索,排序,线程安全化等操作

 

17.如何释放过度使用的undo表空间

释放undo表空间 1. 启动SQLPLUS,并用sys登陆到数据库。 2. 查找数据库的UNDO表空间名3. 确认UNDO表空间;SQL> select name from v$tablespace; NAME

4. 检查数据库UNDO表空间占用空间情况以及数据文件存放位置; 5. 查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间 6. 检查UNDO Segment状态

 

18.数据库里面游标,索引是怎么用的?  在oracle数据库中,用get 和load方法 这2个方法来查没有的数据 那么分别会反馈什么样的结果?

declare cur cursor keyset for

get返回null,load classnotfoundException

 

19.在Oracle中数据库中的一个表中,这个表没有主键id也没有特定标示来查数据,怎么查?

rowid

 

20.简述private、proteced、public、internal修饰符的访问权限  2.概述反射和序列化

 请裂举session、cookie、viewstatedn的应用范围  4、简述WebService和Remoting的特点和运用场景

      同一个类        同一个包        不同包的子类        不同包非子类 
private             * 
default             *                     * 
protected         *                     *                         * 
public                *                     *                         *                             *

Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。本文借由实例,大面积示范Reflection APIs。

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
   序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流

 

21.ORACLE中not和and和or优先级由高到低?

not   and   or

22.java 是如何进行异常处理的

调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序

23.struts2 必备包

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

commons-logging-api-1.1.jar

freemarker-2.3.13.jar

ognl-2.6.11.jar

struts2-core-2.1.6.jar

xwork-2.1.2.jar

 

24.dao 是什么及作用

Dao 是数据访问对象 DAO负责管理与数据源的连接来获取和储存其中的数据

ibtis 中的#与$的区别

struts的实现原理

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper

 

简述spring 的事务传播行为和隔离级别

 

 

25.写一段把本地文件formfile拷贝到本地文件tofile的程序

public class ChangeJtdToJava {

       public static void main(String[] args) {

              File dir = new File("f:/jtd");

              // 得到d:/jtd 下的所有文件对象

              File[] files = dir.listFiles();

              for (File file : files) {

                     String fileName = file.getName(); // 得到文件名

                     int index = fileName.indexOf(".");// .的索引位置

                     String fileName2 = fileName.substring(0, index); // 不带后缀名的文件名

                     String houZui = fileName.substrinxg(index);

                     if (houZui.equals(".jtd")) {

                            // "f:/java/" + fileName2 + ".java"

                            // 要移到的地方

                            file.renameTo(new File("f:/java/" + fileName2 + ".java"));

                     }

              }

       }

}

 

 

26.写出删除表中重复记录的语句 oracle

delete from people

where peopleId in (select   peopleId from people group by   peopleId   having count(peopleId) > 1)  and rowid not in (select min(rowid) from   people group by

27.用java 实现一种排序,java 类实现序列化的方法(二种)?如在collection框架中,要实现什么样的接口  

 java.io.Serializable接口  Collection框架中实现比较要实现Comparable 接口和 Comparator 接口

28.Struts2是如何实现拦截器的?

Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现。实现原理:当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的    拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器

 

29.sleep()和wait()区别

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait().会释放锁

30.Servlet的生命周期分为5个阶段:?  和CGI的区别?

实例化:Servlet容器创建Servlet类的实例。

初始化:该容器调用init()方法,通常会申请资源。

服务:由容器调用service()方法,(也就是doGet()和doPost())。

破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源。

31.foward和redirect区别

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。web应用程序会要求客户端浏览器重新发出请求地址,客户端会重新连接至所指定的地址,因此浏览器的地址会出现重新导向的信息,重新导向后的请求由浏览器发出,所以不能访问Web应用程序中的隐

32.多线程、同步实现方法?    

实现线程有两种 继承Thread类或者实现Runnable接口... 实现同步也有两种,一种是用同步方法,一种是用同步块.. 同步方法就是在方法返回类型后面加上synchronized, 比如:

public void synchronized add(){...}

同步块就是直接写:synchronized (这里写需要同步的对象){...}

 

33.集合类有哪些?有哪些方法?

集合类 ArrayList  LinkedList  HashSet  HashMap方法:add(),remove(),put(),addAll(),removeAll()

 

 

34.java中实现多态的机制是什么

重写,重载

 

35. 静态的多态和动态的多态的区别

静态的多态:方法名相同,参数个数或类型不相同。(overloading)

动态的多态:子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法  实现接口的实例传与接口的引用调用的实现类的方法。

 

36.作用域Public,private,protected.以及不写时的区别

public整个java程序中都可以访问     

protected在其他包中不可以访问

friendly只有当前包或当前内可以访问,其他都不行          

private只有当前内可以访问

不写的话默认是protected

 

37.extends和implement的不同

extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了  比如 class A extends B implements C,D,E

 

38.常用的设计模式?定义一个变量, Var v =new Object (),用js编写的简便写法是什么?join与leftjoin的区别

DAO设计模式与DELEGATE模式

适配器模式与桥梁模式的区别

工厂模式

inner join :内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值
left join:内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行

 

39.Hibernate中离线查询与在线查询的区别

Criteria 和 DetachedCriteria 的主要区别在于创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的;而 DetachedCriteria 是离线的,创建时无需 Session,DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name) 进行DetachedCriteria 实例的创建。

 

40.C#数据类型有哪些 ?

 int  整型double 双精度型string 字符串型 char  字符型 bool 布尔型  

 

41.抽象类能否被实例化  

 抽象类通常不是由程序员定义的,而是由项目经理或模块设计人 设计抽象类的原因通常是为了规范方法名 抽象类必须要继承,不然没法用,作为模块设计者,可以把让底层程序员直接用得方法直接调用,而一些需要让程序员覆盖后自己做得方法则定义称抽象方法

 

42.ASP.NET页面传递值的方式有哪些

1 通过URL链接地址传递  2 通过post方式。

send.aspx  3 通过session  4通过Application

5 通过Server.Transfersend.aspx:

 

43.如何定义一个窗口为 MDI窗口?

MDI窗口 就是说一个窗体做为容器,里面还可以添加其他窗体

44.WCF是什么?

 WCF是微软用以应对SOA解决方案的开发需求而专门推出的 是专门用于服务定制、发布与运行以及消息传递和处理的一组专门类的集合,也就是所谓的“类库

 

45.常用的包,类,接口,各举5个。

类 String Integer Long File Date 包 java.lang.*;java.io.*;java.util.*;java.swt.*;

   java.math.*;接口: Comparable ,Connection,Map,List,Runable,

 

46.

  1. 网上购物系统的类图,用例图。
  2. 给你一个整数类型的数组,按从小到大的顺序进行排列!

public static void fun(int [] a,int c)

{

       for(int i=0;i<a.length-1;i++)

                     {

                            for(int j=i;j<a.length-1;j++)

                            {

                                   if(a[i]<a[j])

                                   {

                                          t=a[i];

                                          a[i]=a[j];

                                          a[j]=t;

                                   }

                            }

                            System.out.print(a[i]+" ");

                     }

}

查询出M 页的N行数据 。

Select top N  from  table  where id not in (select top  (M-1)*N  id  from table )

1.linkedlist arraylist内部是如何实现的 new ArrayList(10)含义

 

  

47.面向对象主要内容?  有什么作用?

就分析设计层面来说,面向对象技术提供了更高级的抽象能力以及更多的方法和工具,如设计模式; 就实现维护层面来说,面向对象技术使代码重用更容易,且使代码具有可扩展性,便于软件的维护和升级更新。

 

49.如何移动一个数 是62-63=1成立

62-63=1如何移动   2的6次方等于64    2的6次方-63=1   把2移动到6的左下方

 

50.Java SQL2005导入import data数据源例如有Oracle中的blob字段是否要用ole驱动、递归实现1,1,2,3,5,8,….第30个数是多少?

public static int Foo(int i) 
    { 
        if (i <= 0) 
            return 0; 
        else if(i > 0 && i <= 2) 
            return 1; 
        else return Foo(i -1) + Foo(i - 2); 
    }  
int i=Foo(30);
System.out.println(i); 

 

 51.JAVA实现向数据库添加一列

Connection con = null;

ResultSet rs = null;

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

   String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_name";

   Connection con = DriverManager.getConnection(url,"","");

StateManager  sm =con.createStateMent();

String sql = "inser table into values("aa","bb")";

rs = sm.excute(sql);

 

 

52.写出删除表中重复记录的语句 oracle

delete from people

where peopleId in (select   peopleId from people group by   peopleId   having count(peopleId) > 1)  and rowid not in (select min(rowid) from   people group

 

1: 用什么方法使服务器关闭之后,session所保存的信息不会丢失?

使用cookie

 

2:如果页面没有<html></html>标签,会出现什么错误代码?

没有什么变化

3:抽象类是否可以没有抽象方法?为什么?

可以       在java中用abstract关键字来修饰一个类时,这个类叫做抽象类。

抽象类中不一定要包含abstract方法,但一个类中包含了abstract方法,则这个类必须声明为abstract类。

 

4:servlet中的init方法什么时候被调用?

容器首次创建实例的时候

 

53.用4 个0,用你所知道的数学方法计算出24

0的阶乘等于1  即 0!=1那么4个0就是4了

又4的阶乘为24  4!=24

 

54.linux中进程的查看和调度分别用什么命令?  

  ps -A 查看  renice   top

 

55.sleep()和wait区别

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后

 

 

56.集合类有哪些?有哪些方法?

集合类 ArrayList  LinkedList  HashSet  HashMap方法:add(),remove(),put(),addAll(),removeAll()

 

 

57.OSI七层模型tcp四层模型是什么样的

OSI七层参考模型 :物理层 、数据链路层 、网络层 、传输层、应用层、会话层、表示层

TCP/IP:第一层网络接口层第二层 第二层??网间层 第三层??传输层 第四层??应用层

 

 

58.JAVA测试模式(ZZ):

模式(一) Main 模式 

模式(二) toString 模式

模式(三) Equal 模式

模式(四) Internal Tester Class 模式

模式(五) Extern Tester Class 模式 

 

60.一学生表!有班及id,学号!成绩!一求平均成绩!二求比平均成绩高的学生的所有信息

 

select id,avg(成绩)  from table group by  id

select * from table where 成绩 > (select 成绩 from (select id,avg(成绩) 成绩 from table group by  id)as a )

 

61.jdk的新特性

“JDK1.5”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。

 

62.j2ee的规范?

SUN公司定义的一个开发分布式企业级应用的规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范。多层次分布式应用模型是指根据功能把应用逻辑分成多个层次,每个层次支持相应的服务器和组件,组件在分布式服务器的组件容器中运行(如Servlet组件在Servlet容器上运行,EJB组件在EJB容器上运行),容器间通过相关的协议进行通讯,实现组件间的相互调用 J2EE规范定义了以下四个层次。 1.客户端层(Client Tier) 2.Web层  3.业务层(Business Tier)  4.企业信息系统层

 

63.ajax的工作原理?

Ajax 基本上就是把 JavaScript 技术和 XMLHttpRequest 对象放在 Web 表单和服务器之间。当用户填写表单时,数据发送给一些 JavaScript 代码而不是 直接发送给服务器。相反,JavaScript 代码捕获表单数据并向服务器发送请求。同时用户屏幕上的表单也不会闪烁、消失或延迟。换句话说,JavaScript 代码在幕后发送请求,用户甚至不知道请求的发出。更好的是,请求是异步发送的,就是说 JavaScript 代码(和用户)不用等待服务器的响应。因此用户可以继续输入数据、滚动屏幕和使用应用程序。 

 然后,服务器将数据返回 JavaScript 代码(仍然在 Web 表单中),后者决定如何处理这些数据。它可以迅速更新表单数据,让人感觉应用程序是立即完成的,表单没有提交或刷新而用户得到了新数据。JavaScript 代码甚至可以对收到的数据执行某种计算,再发送另一个请求,完全不需要用户干预!这就是 XMLHttpRequest 的强大之处。它可以根据需要自行与服务器进行交互,用户甚至可以完全不知道幕后发生的一切。结果就是类似于桌面应用程序的动态、快速响应、高交互性的体验,但是背后又拥有互联网的全部强大力量。

 

64.Xml特点?

 

65.oracle中除了数据库备份,还有什么方法备份?

 

66.j2ee的常用设计模式

Factory(工厂模式),Builder(建造模式)fFactory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式)

 

67.由aaa字符串得到1000个a写个程序

 

StringBuilder sBuilder = new StringBuilder();

for(int i=0;i<333;i++){

sBuilder.Append("aaa");

}

sBuilder.Append("aaa".subString(0,1));

 

 

68.servlet与cgi的区别

 

CGI应用开发比较困难,因为它要求程序员有处理参数传递的知识,这不是一种通用的技能。CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。这种模式将引起很高的内存、CPU开销,而且在同一进程中不能服务多个客户。

Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容

Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载

 

69.SOCKET中有几中连接方式,区别?

Sockets有两种主要的操作方式:面向连接的和无连接的。无连接的操作使用数据报协议,无连接的操作是快速的和高效的,但是数据安全性不佳. 面向连接的操作使用TCP协议.面向连接的操作比无连接的操作效率更低,但是数据的安全性更高

 

70.Socket如何获取本地ip地址?

 public InetAddress getLocalAddress()

 

71.truncate与delete的区别?

truncate是DDL語言.delete是DML語言 DDL語言是自動提交的.命令完成就不可回滾.truncate的速度也比delete要快得多.

 

72.xml有哪些解析技术,及区别?

有DOM,SAX,STAX等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件 ,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问

 

73.文件和目录(i/o)操作,怎么列出某目录下所有文件?某目录下所有子目录,怎么判断文件或目录是否存在?如何读写文件?

列出某目录下所有文件:调用listFile(),然后判断每个File对象是 isFile还是 isAbstracte(),判断文件或目录是否存在:调用 exist 方法,读写文件使用FileReader和FileWriter两个类即可

 

 

74.delete from tablea和truncate table tablea的区别!

这里说的delete是指不带where子句的delete语句

相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据 

不同点: 

1. truncate和 delete只删除数据不删除表的结构(定义) 

     drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. 

2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. 

    truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 

3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动 

   显然drop语句将表所占用的空间全部释放 

   truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;   truncate会将高水线复位(回到最开始). 

4.速度,一般来说: drop> truncate > delete 

5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及 

使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大. 

想删除表,当然用drop 

想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.  

 

75.怎么用java反射得到一个类的私有方法?

PrivateTest t= Class.forName("com.test.PrivateTest").newInstance();

Method method2 = Class.forName("com.test.PrivateTest").getDeclaredMethod("method", new Class[]{});

method2.setAccessible(true);  

method2.invoke(t, new Object[] {});

 

76.写一个单例模式?描述工厂模式和单例优缺点 举例在什么情况下用

  • 简单工厂模式能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。通过它,外界可以从直接创建具体产品对 象的尴尬局面中摆脱出来。
  • 外界与具体类隔离开来,偶合性低。
  • 明确区分了各自的职责和权力,有利于整个软件体系结构的优化。

缺点:工厂类集中了所有实例的创建逻辑,容易违反GRASPR的高内聚的责任分配原则  虽然简单工厂模式能够适应一定的变化,但是它所能解决的问题是远远有限的。它所能创建的类只能是事先教考虑到的,如果需要添加新的类,则就需要改变工厂类了。(这个问题在工厂方法模式将得到很好的解决)

应用情景  工厂类负责创建的对象比较少  客户只知道传入了工厂类的参数,对于始何创建对象(逻辑)不关心

 

77.JVM加载class文件原理?

JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类   ClassLoader 其实就是读取文件,按照CLASSPATH配置的顺序。  然后解析后转化为类

 

78.Tomcat的class加载的优先顺序一览

1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。2.环境变量CLASSPATH中的jar和class文3.$CATALINA_HOME/common/classes下的class文件。4.$CATALINA_HOME/commons/endorsed下的jar文件。

5.$CATALINA_HOME/commons/i18n下的jar文件。6.$CATALINA_HOME/common/lib 下的jar文件。

(JDBC驱动之类的jar文件可以放在这里,这样就可以避免在server.xml配置好数据源却出现找不到JDBC Driver的情况。)

7.$CATALINA_HOME/server/classes下的class文件。

8.$CATALINA_HOME/server/lib/下的jar文件。

9.$CATALINA_BASE/shared/classes 下的class文件。

10.$CATALINA_BASE/shared/lib下的jar文件。

11.各自具体的webapp /WEB-INF/classes下的class文件。

12.各自具体的webapp /WEB-INF/lib下的jar文件。

 

 

79.CS与BS联系区别

java适合开发bs结构,cs不是它的强项  C/S 服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。B/S 客户机上只要安装一个浏览器(Browser),如Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互   1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.  B/S 建立在广域网之上的

2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.  B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户

3.对程序架构不同  C/S 程序可以更加注重流程, 可以对权限多层次校验  B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上

 

80.Error和 exception的区别与联系

error 表示恢复不是不可能,但很困难的情况下的一种严重问题。比如说内存溢,网络故障等。不可能指望程序能处理的情况。 
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,就不会发生的情况。程序可以捕获到这些异常,并进行处理。

 

81.在编写页面的会用到哪些技术??

手写个程序   在本页面中心弹出一个窗体,里面有学生的成绩,可以修改学生的成绩,并且可以关闭窗口,把每个要用的jsp页面显示出来。(用 JavaScript)

 

82.用main涵数输出一到一百的和。

#include <stdio.h>

int main() {

    printf("sum:%d\n", sum());

    return 0;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值