java知识题集编程方面题目.docx
- 文档编号:4033071
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:79
- 大小:111.11KB
java知识题集编程方面题目.docx
《java知识题集编程方面题目.docx》由会员分享,可在线阅读,更多相关《java知识题集编程方面题目.docx(79页珍藏版)》请在冰豆网上搜索。
java知识题集编程方面题目
java知识题集编程方面题目
个人收集版本
1.用JDBC连接Oracle并读取数据的例子
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.Date;
/**
*用JDBC连接Oracle并读取数据的例子。
*@authorJAVA世纪网(,)
*/
publicclassjdbc{
StringdbUrl="jdbc:
oracle:
thin:
@127.0.0.1:
1521:
orcl";
StringtheUser="scott";
StringthePw="tiger";
Connectionc=null;
Statementconn;
ResultSetrs=null;
publicjdbc(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
c=DriverManager.getConnection(dbUrl,theUser,thePw);
conn=c.createStatement();
}catch(Exceptione){
e.printStackTrace();
}
}
publicbooleanexecuteUpdate(Stringsql){
try{
conn.executeUpdate(sql);
returntrue;
}catch(SQLExceptione){
e.printStackTrace();
returnfalse;
}
}
publicResultSetexecuteQuery(Stringsql){
rs=null;
try{
rs=conn.executeQuery(sql);
}catch(SQLExceptione){
e.printStackTrace();
}
returnrs;
}
publicvoidclose(){
try{
conn.close();
c.close();
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
ResultSetrs;
jdbcconn=newjdbc();
rs=conn.executeQuery("select*fromtest");
try{
while(rs.next()){
System.out.println(rs.getString("id"));
System.out.println(rs.getString("name"));
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
2.如果2个对象==,则他们一定equals,hashCode一定相等吗?
/**
*如果2个对象==,则他们一定equals,hashCode一定相等吗?
*这个就是一个例子
*不要告诉我不能这么写,我不是在讨论应该怎么样
*而是在确认这句话是否一定是正确的。
*
*教科书里的东西,让大家都循规蹈矩,
*却没有认识到程序的本质。
*hashCode/equals是否需要,如何写,完全取决于程序员的想法。
*
*@author老紫竹()
*/
classTest{
publicstaticvoidmain(Stringargs[]){
Testa=newTest();
Testb=a;
System.out.println(a==b);//true
System.out.println(a.equals(b));//false
System.out.println(a.hashCode()==b.hashCode());//false
}
publicbooleanequals(Objectobj){
returnfalse;
}
privatestaticintnum=0;
publicinthashCode(){
super.hashCode();
returnnum++;
}
}
3.下面的程序输出什么?
/**
*下面的程序输出什么?
请用脑袋想,不要去编译执行。
*
*@author老紫竹JAVA世纪网()
*
*/
publicclassT{
publicstaticvoidmain(String[]args){
certkiller("four");
certkiller("tee");
certkiller("to");
}
publicstaticvoidcertkiller(Stringstr){
intcheck=4;
if(check=str.length()){
System.out.print(str.charAt(check-=1)+"");
}else{
System.out.print(str.charAt(0)+"");
}
}
}
4.编写一个java程序jse.java,按下面的公式计算自然对数底e的值(n的值取20):
e=1+1/1!
+1/2!
+1/3!
+1/4!
+…1/n!
/**
*自然对数的底e的计算。
*1+1/1!
+1/2!
+1/3!
+...
*
*@author老紫竹研究室()
*/
publicclassTest{
publicstaticvoidmain(Stringargs[])throwsException{
//方法1
doublee=1.0;
doublet=1.0;
for(inti=1;i<=20;i++){
t/=i;
e+=t;
}
System.out.println(e);
//方法2,可惜我没看懂,很精妙
e=0.0;
for(inti=20;i>0;i--){
e=(e+1.0)/i;
}
e++;
System.out.println(e);
}
}
5.从字符串”ABCDEFGH”里找出”DEF”来
Stringstr1=str.substring(3,6);
6.写一个方法,输入任意一个整数,返回它的阶乘
唯一注意的,要用long或者更大的用BigDecimal,不要用int
/**
*@authorJAVA世纪网(,)
*/
publicclassTest{
/**
*获得任意一个整数的阶乘
*
*@paramn
*@returnn!
*/
publiclongfactorial(intn){
//递归
if(n==1){
return1;
}
returnn*factorial(n-1);
}
publiclongfactorial2(intn){
//非递归
longmulti=1;
for(inti=2;i<=n;i++){
multi*=i;
}
returnmulti;
}
publicstaticvoidmain(Stringargs[]){
Testt=newTest();
System.out.println(t.factorial(12));
System.out.println(t.factorial2(12));
}
}
7.1000!
有几位数?
为什么?
一个自然数N,它的位数等于lgN+1。
lg就是以10为底的对数。
例如250=2.5*10^2,则lg250=2+lg2.5,而lg2.5小于1,所以数250的位数约等于lg250+1,忽略小数部分,就等于3。
所以1000!
的位数约等于lg1000!
+1
lg1000!
=lg1+lg2+lg3+……+lg1000
这个求和约等于lgx这条曲线在区间[1,1000]与x轴围成的面积,也就是等于lgx在区间[1,1000]的定积分。
这个定积分很好计算,等于(1000ln1000-1000+1)/ln10,ln是自然对数。
所以1000!
的阶乘的位数是1+(1000ln1000-1000+1)/ln10=2567
8.什么是模块的独立性?
模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
衡量软件的模块独立性的度量标准是耦合性和内聚性。
一个模块的内聚性越强,则该模块的模块独立性越强。
而内聚性是信息隐蔽和局部化概念的自然扩展。
面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。
它强调模拟现实世界中的概念而不强调算法,它鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。
总体设计过程通常由两个主要阶段组成:
系统设计,确定系统的具体实现方案;结构设计,确定软件结构。
为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。
分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。
9.java.awt.event包中定义的事件适配器类包括哪些?
Java语言为一些Listener接口提供了适配器(Adapter)类。
可以通过继承事件所对应的Adapter类,重写需要的方法,无关方法不用实现。
java.awt.event包中定义的事件适配器类包括以下几个:
1、ComponentAdapter,构件适配器。
2、ContainerAdapter,容器适配器。
3、FocusAdapter,焦点适配器。
4、KeyAdapter,键盘适配器。
5、MouseMotionAdapter,鼠标运动适配器。
6、MouseAdapter,鼠标适配器。
7、WindowAdapter,窗口适配器。
10.Java对"+"进行了哪些扩展?
Java对"+"进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。
若"+"的第一个操作数是字符串,Java会自动将后面的操作数类型转换成字符串类型。
11.什么是满二叉树?
所谓满二叉树是指这样的一种二叉树:
除最后一层外,每层上的所有结点都有两个子结点。
这就是说,在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第K层上有2^(K-1)个结点,且深度为m的满二叉树有2^m-1个结点。
在满二叉树中,最后一层的结点个数就是叶子结点的个数,比如深度为5,故叶子结点数为2^(5-1)=2^4=16。
12.调式的关键在于推断程序内部的错误位置及原因。
其主要的调试方法有哪些?
调式的关键在于推断程序内部的错误位置及原因。
其主要的调试方法有:
强行排错法、回溯法和原因排除法。
1强行排错法:
是传统的调试方法,其过程可概括为:
设置断点、程序暂停、观察程序状态、继续运行程序。
这是目前使用较多、效率较低的调试方法。
2回溯法:
该方法适合于小规模程序的排错。
即一旦发现了错误,先分析错误征兆,确定最先发现"症状"的位置。
然后,从发现"症状"的地方开始,沿程序的控制流程,逆向跟踪源程序代码,直到找到错误根源或确定错误产生的原因。
3原因排除法:
是通过演绎和归纳,以及二分法来实现的。
数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。
13.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为哪几种?
在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:
前序遍历、中序遍历和后序遍历。
1前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
2中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
3后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。
14.软件的需求分析阶段的工作有哪些?
软件的需求分析阶段的工作,可以概括为四个方面:
需求获取、需求分析、编写需求规格说明书和需求评审。
1需求获取的目的是确定对目标系统的各方面需求。
涉及到的主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。
2需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。
3编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。
4需求评审是对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。
16数据流图中的主要图形元素有
数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。
数据流图中的主要图形元素有:
加工(转换)、数据流、存储文件(数据源)、源和潭。
17.软件生命周期的主要活动阶段为?
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。
软件生命周期的主要活动阶段为:
(1)可行性研究和计划制定。
确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发的实施计划。
(2)需求分析。
对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。
编写软件规格说明书及初步的用户手册,提交评审。
(3)软件设计。
系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。
(4)软件实现。
把软件设计转换成计算机可以接受的程序代码。
即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
(5)软件测试。
在设计测试用例的基础上,检验软件的各个组成部分。
编写测试分析报告。
(6)运行和维护。
将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
18.算法的空间复杂度是指什么?
算法的空间复杂度是指:
算法执行过程中所需的存储空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
19.JSP四种会话跟踪技术,会话作用域
page
代表与一个页面相关的对象和属性。
一个页面由一个编译好的Javaservlet类(可以带有任何的include指令,但是没有include动作)表示。
这既包括servlet又包括被编译成servlet的JSP页面
request
代表与Web客户机发出的一个请求相关的对象和属性。
一个请求可能跨越多个页面,涉及多个Web组件(由于forward指令和include动作的关系)
session
代表与用于某个Web客户机的一个用户体验相关的对象和属性。
一个Web会话可以也经常会跨越多个客户机请求
application
代表与整个Web应用程序相关的对象和属性。
这实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域
20.xml有哪些解析技术?
区别是什么?
有DOM,SAX,STAX等
DOM:
处理大型文件时其性能下降的非常厉害。
这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
SAX:
不同于DOM,SAX是事件驱动型的XML解析方式。
它顺序读取XML文件,不需要一次全部装载整个文件。
当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX:
StreamingAPIforXML(StAX)
21.UTF-8的介绍
使用UTF-8编码唯一的好处是,国外的用户如果使用WindowsXP英文版,浏览UTF-8编码的任何网页,无论是中文、还是日文、韩文、阿拉伯文,都可以正常显示,UTF-8是世界通用的语言编码,UTF-8的推广要归功于Google的应用,以及Blog开发者。
而如果用WindowsXP英文版的IE6.0浏览gb2312语言编码的网页,则会提示是否安装语言包。
因此,可能会失去很多的国外浏览者。
使用gb2312编码的好处是,因为程序产生的网页文本使用ANSI编码格式,会比UTF-8文本编码节省一些体积,访问速度会稍微快一点点,大约是30:
38的比例,也就是30K的ANSI编码,转为UTF-8编码是38K,当然,这个比例并不准确,是会随Unicode字符集区域的不同而变化的。
UTF-8(8位元UniversalCharacterSet/UnicodeTransformationFormat)是针对Unicode的一种可变长度字符编码。
它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无需或只作少部份修改后,便可继续使用。
因此,它逐渐成为电子邮件、网页及其他储存或传送文字的应用中,优先采用的编码。
UTF-8编码提供了一种简便而向后兼容的方法,使得那种完全围绕ASCII设计的操作系统,比如Unix,也可以使用Unicode.UTF-8.UTF_8字符集
UTF-8是UNICODE的一种变长字符编码,由KenThompson于1992年创建。
现在已经标准化为RFC3629。
UTF-8用1到6个字节编码UNICODE字符。
如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。
用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE字符
21.网络蜘蛛系统
网络蜘蛛即WebSpider,是一个很形象的名字。
把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。
网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。
如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。
这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,
在抓取网页的时候,网络蜘蛛一般有两种策略:
广度优先和深度优先(如下图所示)。
广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。
这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。
深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。
这个方法有个优点是网络蜘蛛在设计的时候比较容易。
两种策略的区别,下图的说明会更加明确。
在网络蜘蛛机器人系统里面,真正起指挥作用的是人工管理系统制定的规则和检索索引数据库。
它可以决定什么样的网站抓的勤一点,或者干脆不抓.
22.关于DOM的描述
javascrip里面的dom(文档对象模型)它是一种模型,将格式化文档对象化处理。
在xml和html的处理中广泛应用。
//dom是定义超文本结构的对象及方法,分层次的,有容器类的对象,也有基本元素对象,而这些对象,都包含有相应的属性和对应的操作方法(接口)。
//一般而言,DOM结构准确地反映了HTML文档所包含的内容,也就是说,每个HTML标记表现为一个标记节点(tagnode),每个文本项内容表现为一个文本项节点(textnode)。
//是W3C组织推荐的处理可扩展置标语言的标准编程接口。
23.如何理解MVC
MVC是Model-View-Controller的简写。
"Model"代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),
"View"是应用的表示面(由JSP页面产生),
"Controller"是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。
这些组件可以进行交互和重用
24.Struts框架的数据验证可分为几种类型?
表单验证(由ActionFormBean处理):
如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误
业务逻辑验证(由Action处理):
如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许向“Monster”打招呼,因此将生成业务逻辑错误。
25.在struts配置文件中action元素包含哪些属性和子元素?
path属性:
指定请求访问Action的路径
type属性:
指定Action的完整类名
name属性:
指定需要传递给Action的ActionFo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 知识 编程 方面 题目
![提示](https://static.bdocx.com/images/bang_tan.gif)