j2se+j2ee综合面试题.docx
- 文档编号:5851560
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:38
- 大小:304.24KB
j2se+j2ee综合面试题.docx
《j2se+j2ee综合面试题.docx》由会员分享,可在线阅读,更多相关《j2se+j2ee综合面试题.docx(38页珍藏版)》请在冰豆网上搜索。
j2se+j2ee综合面试题
1、你们会在LUNIX上会安装数据库吗?
不会,我们是在XP上开发的。
2、GC是什么?
(garbagecollector)
GC是JAVA中的垃圾收集机制,把不再使用的内存空间回收。
3、重载和重写的区别?
(简单回答:
重载是在一个类中进行,重写是在父类和子类中进行)
(1)重载是在一个类中可以定义有相同的名字,但参数不同(个数不同,类型不同)的方法。
(2)在子类中可以根据需要对从基类中继承来的方法进行了重写,重写的方法必须和被重写的方法具有相同方法名称、参数及返回类型。
(3)重写方法不能使用比被重写方法更严格的访问权限。
4、抽象类和接口的区别?
(1)抽象类只是单继承(一个类只能用extends继承一个父类),接口实现了多继承(一个类可以用implements实现多个接口)
(2)在abstractclass中可以有自己的数据成员,也可以有非abstarct的成员方法,而接口是一种特殊的抽象类,它只包含常量和方法的定义,而不能有变量和方法的实现,即所有的成员方法都是无方法体的。
AbstractclassPerson{
publicabstractvoidp();
publicvoidf(){
System.out.println(1234888);
}
}
publicinterfaceRunner{
publicstaticfinalintid=1;
publicinti=2;
publicvoidstart();
publicvoidrun();
publicvoidstop();
}
(3)抽象类中可以有非抽象方法,接口中则不能有实现方法,接口中的方法默认都是public类型的。
抽象类是通过类来继承,接口是通过类来实现接口
5、多态:
重载是多态的一种体现,通过不同的参数调用不同的方法。
(还有重写、父类的引用指向子类)
6、String和StringBuffer的区别?
String是不可变的字符串,StringBuffer是可变的字符串
StringBuffer只能用new来初始化StringBuffer变量,不能直接用StringBuffers=”abc”;
7、Collection和Collections的区别?
Collection是List和Set接口的父接口;Collections是针对List的帮助类。
8、List接口和Set接口的区别?
a)Set中的数据对象没有顺序且不可以重复。
b)List中的数据对象有顺序且可以重复。
9、HashMap和HashTable的区别?
(请注意,Map没有继承Collection接口)
HashTable线程安全(HashTable的方法是同步的),HashMap线程不安全(HashMap是不同步的)
什么是同步?
当两个或多个线程需要访问同一共享资源时,它们需要以某种顺序来确保该资源某一时刻只能被一个线程使用的方式称为同步。
具体区别如下:
(1)继承和实现区别
Hashtable是基于陈旧的Dictionary类,完成了Map接口;HashMap是Java1.2引进的Map接口的一个实现(HashMap继承于AbstractMap,AbstractMap完成了Map接口)。
(2)线程安全不同
HashTable的方法是同步(Synchronize)的,HashMap是未同步,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
(3)对null的处理不同
HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
即HashTable不允许null值其实在编译期不会有任何的不一样,会照样执行,只是在运行期的时候Hashtable中设置的话回出现空指针异常。
HashMap允许null值是指可以有一个或多个键所对应的值为null。
当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。
因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。
(4)方法不同
HashTable有一个contains(Objectvalue),功能和containsValue(Objectvalue)功能一样。
(5)HashTable使用Enumeration,HashMap使用Iterator。
10、JAVA中有23种设计模式:
常见模式:
单例模式、工厂模式(自身去实例化本身这个类)、策略模式、多例模式
//单例模式的两种形式:
privatestaticCarcar=newCar();//饿汉模式
publicstaticCargetInstance(){
returncar;
}
privatestaticCarcar=null;//懒汉模式
publicstaticCargetInstance(){
if(car==null){
car=newCar();
}
returncar;
}
11、在单例模式中怎样控制线程安全问题?
用synchronized关键字来修改类或方法。
12、常见异常:
NullPointerException:
空指针异常
ClassNotFoundException:
找不到类的异常
SQLException
IOException
RuntimeException:
超时异常
ArrayIndexOutOfBoundsException:
下标越界
13、JSP的九个内置对象及作用域:
(1)request:
一次服务器请求的范围内
(2)response:
默认情况下表示一个页面的保存范围
(3)session:
在一次会话的范围内(例如:
访问整个网站期间,都是一个用户名)
(4)application:
一个应用程序的范围内(作用于整个运行期,从服务器开始到关闭)
(5)page:
在一个页面的范围内
(6)pageContext:
默认情况下表示一个页面的保存范围
(7)out:
默认情况下表示一个页面的保存范围
(8)exception:
默认情况下表示一个页面的保存范围
(9)config:
默认情况下表示一个页面的保存范围
14、JSP中两种跳转的区别:
(1).forward跳转:
forward page="跳转页面地址" /> (2).response跳转: response.sendRedirect("跳转页面地址");//即重定向 两种跳转的区别如下: 1.forward跳转: a.服务器端跳转,地址栏不改变; b.执行到跳转语句后马上无条件跳转,之后的代码不再执行(跳转之前一定要释放全部资源); c.request设置的属性在跳转后的页面仍可以使用; d.使用 param name="参数名" value="参数值" />传递参数。 2.response跳转: a.客户端跳转,地址栏改变; b.所有代码执行完毕后跳转; c.跳转后的页面不能使用上一个页面的request属性; d.使用地址重写传递参数(response.sendRedirect("URL? 参数名=参数值"))。 15、JSP中的动态包含和静态包含的区别: (1)静态包含: <%@includefile=”url” %>先包含后处理 (2)动态包含: includepage=”url”> include>先处理后包含,只把结果包含进来 注意: 被包含文件不能有 16、会用Cookie? 了解,Cookie是保存在客户端的,但在项目中一般不用。 17、为什么要用MVC思想? 因为mvc分层明确,便于后期维护。 我们一般在实际开发中还有数据层(vo包)用来存放数据库的表的实例化类。 {mvc其实就是一种设计理念,即: model(模型)----view(视图)----controller(控制器)。 M中一般是用来处理“业务逻辑”;V将视图与代码分开;C控制执行页面的跳转。 } MVC缺点: 对于程序员来说文件太多,不好管理。 18、面向对象的特点: 封装、继承和多态。 19、数据库连接池的机制? 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。 当启动Tomca服务器后,预先在缓冲池中创建一定数量的连接,保存起来(池),当池收到连接申请时,就随机分配一个出去,连接用完了,则返回池,循环使用。 当申请数量超出了池大小,将创建连接,使用完后,额外创建的连接将直接关闭,不再回池。 如果超出了最大连接限制,则等待可用连接。 我们通过设定连接池最大连接数来防止系统无尽的与数据库连接。 20、Servlet的生命周期: 加载、初始化、执行、清除。 21、Error和异常的区别? 异常是在程序执行过程中出现的; Error是在程序编译的过程中出现的。 23、final和finally以及finalize()的区别? final可以声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 final不能用于修饰构造方法。 finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。 finally是异常处理语句结构的一部分,无论是否有异常,finally中的代码总是执行。 24、B/S架构和C/S架构的区别? B/S平常用IE可以访问的网站; C/S必须在机器上安装客户端,即在本机上有安装程序,eg: QQ。 a)B/S(Browser/Server)结构即浏览器和服务器结构。 B/S就是浏览器/服务器模式,通过浏览器直接与服务器交互,客户端不用安装软件直接有浏览器就可以使用应用系统,升级时只需升级服务器端,易于升级;不用每台机子都去安装客户端,易于部置;缺点是功能比较有限,大部分工作都在服务器上做。 b)C/S(Client/Server)结构即客户端和服务器结构。 C/S就是客户端/服务端模式,通过客户端程序与服务器交互,需要在每台机器上安装客户端软件,但是可以实现的功能比较多,而且客户端分担了服务器的相关工作,服务器会比较轻松。 25、在I/O流中,以“程序”作为参照物 文件——程序: 输入流 程序——文件: 输出流 26、将一个文件的内容拷贝到另一个文件中? (I/O流) publicclassTestFileInputStream{ publicstaticvoidmain(Stringargs[]){ inta=0; FileInputStreamin=null; FileOutputStreamout=null; try{ //路径中用“//”是为了放在unix系统上也可以运行,第一个为转义字符,其实“//”用“/”代替在windows系统中也可以运行。 in=newFileInputStream("d: //test//HW.java");//此文件必须存在 out=newFileOutputStream("d: //Hw.txt"); //若D盘无此文件,会自动新建一个 while((a=in.read())! =-1){ out.write(a); } in.close(); out.close(); } catch(FileNotFoundExceptione){ e.printStackTrace(); } catch(IOExceptione){ e.printStackTrace(); } System.out.println("复制成功! ! ! "); System.exit(-1);//退出文件 } } 27、从标准设备中输入若干行英文句子,直到输入"bye"结束,将这些字符串写入文件(使用I/O流)。 (1)在JAVA文件中写入如下代码: (2)在控制台输入如下代码: (3)刷新工程则会出现一个test.txt文件,如下所示: (4)JAVA中的具体代码如下: packagecom.cstp.io; importjava.io.BufferedReader; importjava.io.BufferedWriter; importjava.io.FileWriter; importjava.io.IOException; importjava.io.InputStreamReader; importjava.io.PrintWriter; publicclassTestBye{ /** *从标准设备中输入若干行英文句子, *直到输入"bye"结束,将这些字符串写入文件。 */ publicstaticvoidmain(Stringargs[]){ try{ InputStreamReaderrs=newInputStreamReader(System.in); //键盘输入事件 BufferedReaderps=newBufferedReader(rs); FileWriterfile=newFileWriter("test.txt");//刷新则出现 BufferedWriterpst=newBufferedWriter(file); PrintWriterpsw=newPrintWriter(pst); Strings=null; while((s=ps.readLine())! =null){ if(s.equals("bye")){ break;//结束while循环 } psw.write(s); psw.write('\n'); } ps.close();//关闭最后一个输入流 psw.close();//关闭最后一个输出流 } catch(IOExceptione){ e.printStackTrace(); } } } 28、在刚才输入的文件中查找指定的单词,打印出包含了欲找单词的所有文本行。 29、为什么在项目中用JXL比POI多? JXL可以操作简单的、对公式要求不严格的Excel,只支持png的图片; POI支持带公式的操作,要求严格时用POI。 在项目中对公式要求不严格,用JXL即可。 30、线程中的start()和run()的区别? start(): 是用来启动一个线程,使线程处于就绪状态;使用了start()方法后,系统会自动调用它的run()方法。 run(): 是用来执行一个线程,使线程处于运行状态。 31、wait()和notify()的区别? (1)在线程中有wait()则必须有notify()。 (2)obj.wait(): 将使本线程挂起; (3)obj.notify(): 唤醒被挂起的某一进程,只有其他线程调用obj对象的notify()或notifyAll()时,才可以被唤醒。 32、在线程中遇到资源共享时,怎样使此线程安全? (1)调用sleep()让另一个线程休眠 (2)wait()等待,让线程处于挂起状态 (3)用synchronized关键字来修饰(即给共享资源加锁) 33、JAVA解析XML的方法: DOM、SAX、JDOM、DOM4J。 (1)其中DOM、SAX是最为主要的两个; (2)DOM、SAX是JAVA本身自带的一种解析XML的文档,不需要第三方插件(jar包); (3)JDOM、DOM4J需要第三方插件才能解析XML。 34、常用的套接字Socket有两种: (属于网络编程范围) (1)服务器端的叫ServerSocket,客户端的叫Socket (2)运行时需先启动服务器端再启动客户端,关闭时先关客户端再关服务器端 35、JAVA中常用的五个包: Lang包、io包、util包、sql包和net包 36、数据库优化: 多表连查时使用表别名和列别名; 少用isnotnull、notin类似的语句; 少用select*来查询记录; 将经常用到的多表连查出来的字段建立成视图; 将where条件中经常用到的列加上索引(建立视图和索引的优点: 加快了查询速度); 少用游标;在where条件中尽量不使用or关键字和! =。 37、为什么使用视图? (目的: 数据库优化) 将经常用到的不同的表/相同表的字段组织在一起(简化了代码量,加快了查询速度) 注意: 只能select视图,不能insert,update…… 38、数据库的海量优化: 用存储过程。 存储过程的结果是放在oracle服务器中的。 39、DELETE、DROP和TRUNCATE的区别? DELETE: 清空内容,但没释放表的所占空间,表结构还存在; eg: deletefromuser1 DROP: 删除整张表(数据及表结构都删除); eg: droptableuserse1 TRUNCATE: 清空内容,并释放该表的所有空间,表结构还存在。 eg: truncatetableuserse1 40、判断下列sql语句是否有错? SELECTdeptno,COUNT(*)FROMemp; 有,错误如图所示: count(*)是组函数,deptno是一般的字段,它们不能并写,若想这样写,则必须用groupby进行分组。 代码如下: SELECTdeptno,COUNT(*)FROMempGROUPBYdeptno; 41、什么是事务? 数据库事务(DatabaseTransaction)是一组数据库操作的处理单元。 事务符合ACID的特性: (1)Atomic: 原子性,要么全部要么一无所有。 AllorNone. (2)Consistent: 一致性,所有依赖关系以及约束一致。 (3)Isolated: 分离性,不同事务不互相影响。 (4)Durable: 持久性,提交事务的数据需要持久化。 功能: (a)保证数据库的consistent(一致性状态),保持所有依赖关系以及约束一致)。 哪怕数据库管理系统出现故障时(例如断电),也能恢复到一致性状态。 例如一个银行转帐系统,张三给李四转3000圆RMB,张三帐号上减3000和李四帐号上加3000需要同时完成,否则系统的帐就不平了。 也例如有些销售系统的汇总表和明细表,是一个主表和一个从表,需要同步更新。 (b)并发时分离不同事务操作。 例如编辑过程中的数据不给其他事务查询到。 42、Oracle数据库中为什么会有序列? 因为Oracle中没有自增功能,所以要借助序列实现。 43、DB2和Oracle的区别? (1)获取时间不同 Oracle: Selectsysdatefromdual; DB2: Selectcurrenttimestampfromsysibm.sysdummy1; selectCURRENTDATEfromSYSIBM.SYSDUMMY1;获得日期 selectCURRENTTIMEfromSYSIBM.SYSDUMMY1;获得时间 (2)类型转换不同 a)转换日期时间到字符类型: Oracle TO_CHAR(date_expression_r_r,'YYYY-MM-DD') TO_CHAR(date_expression_r_r,'HH24: MI: SS') DB2 CHAR(date_expression_r_r,ISO) CHAR(time_expression_r_r,ISO) b)转换日期时间字符串到日期时间类型: Oracle TO_DATE(date_expression_r_r,'YYYY-MM-DD') TO_DATE(date_expression_r_r,'HH24: MI: SS') DB2 DATE('2005-05-20') TIME('18: 59: 59') TIEMSTAMP('2007-2-1','21: 12: 12') TIEMSTAMP('2007-2-121: 12: 12') DB2也有TO_CHAR和TO_DATE函数,但只能提供固定的转换格式,如下 TO_CHAR(timestamp_expression_r_r,'YYY-MM-DDHH24: MI: SS') TO_DATE(string_expression_r_r,'YYY-MM-DDHH24: MI: SS') (3)表备份 (4)Update区别 Db2: DB2updatestaffset(salary,comm)=(80000,50000); DB2updatestaffsetsalary=80000,comm=50000; Oracle: SQL>updatestaffsetsalary=80000,comm=50000; (5)Insertinto区别 DB2允许有类似这样多行插入: insertintostaffvalues(1212,'cemy',20,'sales',3,90000,30000; (1212,'cemy',20,'sales',3,90000,30000); oracle: SQL>insertintostaffvalues(1212,'cemy',20,'sales',3,90000,30000), (1212,'cemy',20,'sales',3,90000,3) (6)Nvl处理空值 Oracle: selectproductid,loginname,nvl(cur_rate,'0')fromtablename; DB2: selectproductid,loginname,value(cur_rate,'0')fromtablename; coalesce(cur_rate,'0') (7)清空表 Oracle: truncatetableTableName; DB2: altertableTableNameactivenotloggedinitiallywithemptytable; 44、Jquery选择器(Jquery是JS框架)? 有id选择器、class选择器和标签选择器。 45、AJAX的异步刷新功能? “异步刷新”通俗的说,就是只改变页面的某个部分,并不进行刷新和重新载入。 A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- j2se j2ee 综合 试题