JAVA面试题2文档格式.docx

上传人:b****5 文档编号:21049120 上传时间:2023-01-27 格式:DOCX 页数:22 大小:35.19KB
下载 相关 举报
JAVA面试题2文档格式.docx_第1页
第1页 / 共22页
JAVA面试题2文档格式.docx_第2页
第2页 / 共22页
JAVA面试题2文档格式.docx_第3页
第3页 / 共22页
JAVA面试题2文档格式.docx_第4页
第4页 / 共22页
JAVA面试题2文档格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

JAVA面试题2文档格式.docx

《JAVA面试题2文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA面试题2文档格式.docx(22页珍藏版)》请在冰豆网上搜索。

JAVA面试题2文档格式.docx

当被锁定的A对象试图访问另一个被锁定的B对象,B对象同时又要访问已被锁定的A对象。

这样导致两个线程都在等待另一个线程释放资源,这样就出现了死锁。

16、JAVA多线程编程。

用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。

希望大家补上,谢谢

17、STRING与STRINGBUFFER的区别。

答:

STRING的长度是不可变的,STRINGBUFFER的长度是可变的。

如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

Strings=newString("

xyz"

);

创建了几个StringObject?

两个

JDBC调用数据库的基本步骤

WeblogicServer中的JDBC配置

1、建立到指定数据库的连接池ConnectionPool

2、建立基于该连接池的数据源DataSource

3、访问数据库时通过数据源的JNDI名字查找到该数据源,然后通过数据源获得数据库连接对象。

得到该对象后就可以依次生成数据库语句对象和结果集对象,进行相应的数据库操作。

importjava.sql.*;

importjavax.naming.*;

importjavax.sql.*;

importjava.util.*;

importjavax.rmi.*;

publicclassDataSourceTest{

privatestaticContextgetInitialContext()throwsException{

Stringurl="

t3:

//localhost:

7001"

;

Stringuser="

system"

Stringpassword="

11111111"

Propertiesproperties=null;

try{

properties=newProperties();

properties.put(Context.INITIAL_CONTEXT_FACTORY,

"

weblogic.jndi.WLInitialContextFactory"

properties.put(Context.PROVIDER_URL,url);

if(user!

=null){

properties.put(Context.SECURITY_PRINCIPAL,user);

properties.put(Context.SECURITY_CREDENTIALS,

password==null?

:

password);

}

returnnewInitialContext(properties);

}catch(Exceptione){

throwe;

publicstaticvoidmain(Stringargs[]){

UserTransactiontx=null;

DataSourceds=null;

Contextctx=null;

ConnectionmyConn=null;

ctx=getInitialContext();

tx=(UserTranscation)ctx.lookup("

javax.transcation.UserTranscation"

tx.begin();

ds=(DataSource)ctx.lookup("

myTxDataSource"

e.printStackTrace();

StatementmyStatement=null;

ResultSetmyResultSet=null;

myConn=ds.getConnection();

myStatement=myConn.createStatement();

myResultSet=myStatement.executeQuery(

selectfullnamefromemployee"

while(myResultSet.next()){

System.out.println(myResultSet.getString("

fullname"

));

mit();

tx.rollback();

}finally{

myStatement.close();

myConn.close();

JavaMail发邮件的步骤:

Propertiesprops=System.getProperties();

props.put(“mail.smtp.host”,”*******”);

//设置相关的属性

 

 

//创建一个会话对象

Sessionsession=Session.getDefaultInstance(props,null);

//创建一个消息对象

MimeMessagemessage=newMimeMessage(session);

message.setText(“*****”);

//发送文本格式的邮件

message.setSubject(“*****”);

message.setFrom(“*****”);

message.addRecipient(Message.RecipientType.To,

newInternetAddress(“******”));

//使用传送类的send方法发送消息

Transport.send(message);

}catch(MessagingExceptionme){

me.printStackTrace();

解析XML文件的几种方式和区别

XML解析器使用的两种基本API是:

文档对象模型DOM,一种基于树结构的API。

它定义了一组java接口,用于创建、访问和操纵XML文档的内部结构。

它是基于对象。

整个XML文档被作为对象体系结构排列进行解析和存储,应用程序可以随机访问这些对象。

DOM主要用于:

在结构上修改XML文档时;

在内存中与其他应用程序共享文档时。

SAX提供一种用于解析XML文档的事件驱动模型,使用SAX接口的XML处理器并不创建数据结构,而是扫描输入的XML文档,并生成元素开始、元素结束等事件,在发生事件时,解析器会通知应用程序。

SAX优点:

在解析大型文档时,不必将整个文件加载到内存中,因此占有的内存比DOM少。

在只需要一个信息子集时,SAX忽略不需要的数据,而DOM无法做到这点。

SAX的缺点是:

必须按到达顺序处理数据,不能对文档进行随即访问。

SAX是只读的,它是设计来读取XML文档而不是写入的。

文档只能遍历一次。

使用DOMAPI查找XML文档中的元素和属性

importorg.w3c.dom.*;

importjavax.xml.parsers.*;

importjava.io.*;

import.URL;

publicclassBookDetails{

publicBookDetails(Stringfilename){

Documentdoc=null;

DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();

dbf.setNamespaceAware(true);

DocumentBuilderdb=dbf.newDocumentBuilder();

doc=db.parse(newFile(filename));

Stringnm="

Stringlocal="

a"

Stringob="

System.out.println(nm+"

名字空间中的元素"

NodeListnl=doc.getElementsByTagNameNS(nm,"

*"

for(inti=0;

i<

nl.getLength();

i++){

Noden=nl.item(i);

System.out.println(n.getNodeName());

System.out.println("

\n名称为"

+local+"

的元素"

nl=doc.getElementsByTagNameNS("

local);

\n名字空间"

+ob+"

中的属性"

nl=doc.getElementsByTagName("

if(nl.item(i)instanceofElement){

Textt=(Text)nl.item(i).getFirstChild();

Elemente=(Element)nl.item(i);

Attra=e.getAttributeNodeNS(ob,"

class"

if(a!

Stringval=a.getNodeValue();

<

+val+"

>

+t.getNodeValue()+"

/"

BookDetailsnsd=null;

if(args.length>

=1){

nsd=newBookDetails(args[0]);

}else{

Books.xml"

使用SAXAPI解析XML文档

importorg.xml.sax.Attributes;

importorg.xml.sax.SAXException;

importorg.xml.sax.helpers.DefaultHandler;

importjavax.xml.parsers.SAXParser;

importjavax.xml.parsers.SAXParserFactory;

publicclassSAXParserHandlerextendsDefaultHanlder{

publicvoidstartDocument()throwsSAXException{

起始文档"

publicvoidendDocument()throwsSAXException{

结束文档"

//在遇到字符数据时激发

publicvoidcharacters(char[]ch,intstart,intlenght)throwsSAXException){

StringcharString=newString(ch,start,lenght);

字符:

+charString);

publicvoidstartElement(StringnamespaceURI,StringlocalName,StringqName,

Attributesatts)throwsSAXException{

起始元素"

+qName);

atts.getLength();

属性值:

+atts.getvalue(i));

publicvoidendElement(StringnamespaceURI,StringlocalName,StringqName)

throwsSAXException{

结束元素"

publicstaticvoidmain(Stringargs[])throwsException{

SAXParserFactoryfactory=SAXParserFactory.newInstance();

SAXParserparser=factory.newSAXParser();

parser.parse("

book.xml"

newSAXParserHanlder());

使用DOMAPI写XML文档

importjavax.xml.transform.*;

importjavax.xml.transform.dom.*;

importjavax.xml.transform.stream.*;

publicclassStudent{

Documentdoc;

Elementstudents;

Elementstud;

ElementfName;

ElementsName;

doc=db.newDocument();

stud=doc.createElement("

Student"

fName=doc.createElement("

FirstName"

fName.appendChild(doc.createTextNode("

John"

stud.appendChild(fName);

sName=doc.createElement("

Surname"

sName.appendChild(doc.createTextNode("

David"

stud.appendChild(sName);

students=doc.createElement("

Students"

students.setAttribute("

Department"

"

Mathematics"

students.appendChild(stud);

doc.appendChild(students);

TransformerFactorytf=TransformerFactory.newInstance();

Transformertransformer=tf.newTransformer();

transformer.transform(newDOMSource(doc),newStreamResult(System.out));

使用DOMAPI显示现有XML文档内容

使用DOMAPI将XML文档数据插入数据库

使用DOMAPI根据数据库创建XML文档

Java的国际化

国际化是为了将应用程序发布在多个地区(locale)而进行准备的过程。

不同地区标识了各个特定的国家在信息表现上所广泛使用的语言、流通货币、字符集、日期格式及其他要素。

支持国际化的应用程序具有以下特点:

1、不用改变代码就可以支持另外的语言。

2、文本元素、消息和图片保存在源代码之外。

3、将于文化背景有关的数据,比如日期和时间、十进制数值以及流通货币,根据用户所用的语言和所在地理位置进行正确格式化。

4、支持非标准字符集。

5、应用程序可以快速适应新的语言区域。

为了使一个应用程序国际化,:

1、必须将用户所见到的硬编码字符(如标签、工具提示和错误信息等)替换成包含在资源包ResourceBundle中的字符。

它是一个java属性文件,它将关键字映射为字符值。

并且可以使用多个不同语言版本的ResourceBundle,这样将可以对于不同语言提供不同的字符串。

2、使用Locale对象,可以使数据格式化为与地区相关的数据。

3、国际化的应用程序还必须使用统一的字符编码标准字符集。

应用服务器有那些?

Servlet方面

什么是Servlet?

Servlet是J2EE应用框架中部署于Web层的Web组件,运行在支持Servlet的Web服务器或应用服务器上。

Servlet为客户端和服务器端的信息处理提供了一种“请求/响应”机制。

客户程序将请求发送到服务器;

服务器将请求发送到Servlet;

依据客户程序的请求,Servlet动态地构造回答信息并返回给服务器;

服务器将回答返回给客户程序。

什么是JSP?

JSP是J2EE应用框架中部署于Web层的Web组件,是对Servlet技术的扩展。

它使在静态的页面中加入动态的内容变得非常容易。

并且通过使用标签库可以大大节省开发时间;

将JavaBean与JSP一起使用可以将数据表示和程序实现分离。

在MVC架构模式中:

使用Servlet作为控制器,而JSP作为数据视图。

CGI与Servlet的区别?

CGI(公共网关接口)是一项标准,使WEB服务器可以与外部应用程序交互。

但是该技术存在一些严重的限制:

1、CGI应用程序占用资源很多。

当系统要处理来自一个用户的请求时,就会创建一个新的进程来处理该请求,一旦CGI脚本停止执行,系统就必须收回该进程。

这种重量级进程的经常启动和停止非常低效。

2、CGI很难链接于请求进程的其他阶段,因为在WEB服务器上它们运行于不同的进程。

这就很难处理授权、工作流和日志记录工作。

JavaServlet技术提供了一个基于组件、与平台无关的方法来构建WEB应用程序。

Servlet没有标准CGI应用程序所遇到的性能局限。

Servlet比CGI更高效是因为:

Servlet应用中将只创建一个单一个重量级进程,并对每个用户请求使用更轻量级的线程来完成请求处理,并且这些线程是由JVM自动维护。

每个客户端请求对应一个线程,每个Servlet类在Servlet容器中只存在一个唯一的对象(实例)。

Servlet类首次加载后将常驻内存。

1、说一说Servlet的生命周期?

答:

在第一次请求Servlet时将创建Servlet实例,容器调用实例的init方法,如果容器有请求要传送给servlet,它就会调用servlet实例的Service方法。

一个请求将作为一个线程。

如果服务器要销毁servlet实例就会调用servlet实例的destory方法,否则该实例将会常驻内存。

2、Servlet版本间(忘了问的是哪两个版本了)的不同?

会话根中技术

用户认证:

使用用户名和口令进行验证来让客户端访问某些资源。

隐藏表单字段:

用于保存一个浏览器在服务器中的相关信息。

URL重写:

在URL后面添加附加信息

持久Cookie:

在请求和响应头信息中添加和编辑信息

什么是会话对象?

会话对象用于在用户访问一个Web站点的多个页面时共享信息。

任何时候用户第一次访问某个网页,系统都将创建一个会话。

如果以后用户访问此网页,JSP将检索有关此会话的信息。

只要服务器收到此用户的请求,则会话就会持续,如果经过一段时间没有收到此用户的新请求,会话就会终止。

3、JAVASERVLETAPI中forward()与redirect()的区别?

使用重定向:

当调用sendRedirect方法时,Web容器就会向浏览器返回响应,指示需要新的URL。

因为浏览器发出了完全崭新的请求,所以在重定向之前存储为请求属性的任何对象都会消失。

使用转发:

当为一个请求调用转发时,请求就发送给服务器上另一个资源,而无需通知客户机由不同的资源处理请求。

这个过程完全在Web容器内部进行,客户机绝不知晓。

与重定向不同,转发过程中,对象

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1