科大国创笔试题doc.docx
《科大国创笔试题doc.docx》由会员分享,可在线阅读,更多相关《科大国创笔试题doc.docx(15页珍藏版)》请在冰豆网上搜索。
科大国创笔试题doc
1.字符转整型
inti=lnteger.parselnt([String]);真的不是一般的杯具。
。
。
字符倒序输出
publicclassTest(
publicstaticStringreverseString(Stringstr)(
StringBuffersbf=newStringBuffer();
fbr(inti=O;isbf.insert(O,str.charAt(i));〃核心
)
returnsbf.toString();
)
publicstaticvoidmain(String[]args)(
Stringstr;
str=”123456789”;
System.out.println(reverseString(str));
}
}
2.struts12区别
strutsl和struts2是2个完全不同的框架,其实struts2核心就是webwork框架
strutsl以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。
Struts1框架有3个重要组成部分:
Action、ActionForm和ActionForward对象oActionForm必须实现ActionForm的基类,设计上并不是真正的POJOo
struts2核心控制器是FilterDispatcher,Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理一因为用户实现的业务控制器并没有与ServletAPI耦合,显然无法处理用户请求。
而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。
显然,上面的处理过程是典型的A0P(面向切面编程)处理方式。
3、MVC各层实现
Ans:
1).DispatcherServlet控制器
2\Controller组件
3)ModelAndView组件
4)HandlerMapping组件
5)ViewResolver组件
4、Strutshibernatespring流程
5、jsp内置对象作用
ANS:
request,response,out,session,page,config,exception,pageContext,application
作用:
JSP预先创建的这些对象可以简化HTTP请求,响应信息的访问
项目描述流程。
。
。
servlet初始化。
。
。
answer:
容器在创建好Servlet对象之后,会立调用该对象的init方法
参数配置:
name
value
hibernate几种状态
answer:
瞬时态(Transient),持久态(persistent),脱管态(Detached)url重写
ANS:
URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。
举个例子来说,如果通过浏览器进来的URL是“"那么它可以被重写成“www.mysite.eom/UserProfile/1.aspx",这样的URL,这样的网址可以更好的被网站所阅读。
重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力;而且在你改变了自己的网站结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接;它还可以提高你的网站的安全性;而且通常会让你的网站更加便于使用和更专业。
ssh加载顺序web.xmlstruts.xmlhibernate.xmlapplicationcontext.xml
string类能被继承么?
:
不能,String是final的,不允许继承。
。
。
publicfinalclassStringextendsObject
listsetmapsize()谁是不允许重复的
ANS:
set
struts12区别。
。
。
abstractclass和interface区另!
]...
.ANS:
—个类只能继承一个抽象类,但可以实现多个接口。
.抽象类中可以包含抽象方法和非抽象方法,而接口中的所有方法均为抽象
的。
•子类继承抽象类必须实现抽象类中所有抽象方法,否则子类也必须是抽象
类。
而子类实现接口则必须实现接口中的所有抽象方法。
行列转换casewhen...
ANS:
selectname,
sum(case课程when"语文"then分数else0end)asa,
sum()asb,
fromtagroupbyname;
try{
}catch..
finally什么时候执行return前还是后
ANS:
return前检查性异常?
?
?
?
ANS:
Java异常可以分为可检测异常,非检测异常
可检测异常:
可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,不捕捉这个异常,编译器就通不过,不允许编译
非检测异常:
非检测异常不遵循处理或者声明规则。
在产生此类异常时,不一定非要采取任何适当操作,编译器不会检查是否已经解决了这样一个异常
RuntimeException类属于非检测异常,因为普通JVM操作弓I起的运行时异常随时可能发生,此类异常一般是由特定操作引发。
但这些操作在java应用程序中会频繁出现。
因此它们不受编译器检查与处理或声明规则的限制O
单体类
编程实现:
自由落体100m高处返回一般距离弹跳10次,求所有经过路程,最后一次的高度?
?
jsp标签库介绍。
。
。
对java.servlet.Filter的理解?
hashtablehashMap区别。
。
。
MVC框架各层技术及实现ooo
字符转码:
gb2312转ISO-8859-1
例:
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1
等,如何输出一个某种编码的字符串?
【基础】
答:
publicstringtranslate(Stringstr)(
StringtempStr
try{
tempStr=newString(str.getBytes("ISO-8859-1"),"GBK");
tempStr=tempStr.trim();
}catch(Exceptione){
System.err.println(e.getMessage());
returntempStr;
}
switch可以用于哪个?
bytelongstring?
?
?
ANS:
byte
数据库行列装换。
。
。
java分页效率...
连接数据库顺序statement与paredstatemen区别ibatis
常见异常。
。
。
Stringa="sf";
StringBuffersb=newStringBuffer(a);
System.out.println(sb.reverse());
编程—阶乘实现
trycatchfinally中哪一部分先执行。
。
。
hibernate事务
struts2action声明周期
spring事务
hibernate映射几种
js写个功能
同步有几中
char保存中文。
。
。
字符类型char事实上是一个16位无符号整数(都是正数),这个值是对应字符的编码,Java字符类型采用Unicode字符集编码(通用码、统一码、万国码),而
I实际拘倚为97.…A实际的值为65.卓待0卖际的值为1—
所有的数据库都会存在数据冗余,数据冗余大多是由于建库的时候表之间的关系没有充分考虑完全,这涉及到数据库中范式的概念(目前最高的是NF范式,不过一般的设计符合第三范式就好冗余会导致:
1、存储空间的浪费。
2、数据交互和数据库访问执行效率降低。
一点冗余没有,也不好。
查询时间会变长。
适当的增加冗余,可以提高查询速度,也可以保证数据更好恢复。
不过冗余会占
用磁盘空间
冗余解决:
拆分表
sum(case课程when”语文"then分数else0end)asII,
单体类编程
冒泡排序
常用排序算法有:
插入排序、冒泡排序、快速排序
冒泡排序是一个非常经典的排序算法,它的排序原则为:
比较相邻的元素,如果违反最后的顺序准则(从大到小或是从小到大),则交换。
可以简化理解为:
第一次找到所有元素中最大(或最小)的放在最后一个位置上,不再变动;第二次找到剩余所有元素中最大(或最小)的放在倒数第二个位置上,不再变动,以此类推,直到排序完成。
在进行比较时既可以采用"下沉"的方式,也可以使用"上浮"的方式实现。
冒泡排序逻辑如下图-1所示。
初始序列
891_
5011
84H
57
__||
61_11__
20__11__
86
_1
第1趟排序结果
50
84■
57—11
61_i1―
20―1
86
89
第2趟排序结果
50
57
61
1
20—1
84
86
89
第3趟排序结果
50
57
1—
20—1
61
84
86
89
第4趟排序结果
50
1__
20—1
57
61
84
86
89
第5趟排序结果
20
50
57
61
84
86
89
图-1
下面对如上示例进行详细分析,需求:
初始序列为89,50,84,57,61,20,86,升
序排(小的在前,大的在后);
第一轮第一次,89与50对比,交换位置,结果:
50,89,84,57,61,20,86
第一轮第二次,89与84对比,交换位置,结果:
50,84,89,57,61,20,86
第一轮第三次,89与57对比,交换位置,结果:
50,84,57,89,61,20,86
第一轮第四次,89与61对比,交换位置,结果:
50,84,57,61,89,20,86
第一轮第五次,89与20对比,交换位置,结果:
50,84,57,61,20,89,86
第一轮第六次,89与86对比,交换位置,结果:
50,84,57,61,20,86,89
将89冒出来了,现在序列为:
50,84,57,61,20,86,89
第二轮第一次,50与84对比,位置不换
第二轮第二次,84与57对比,交换位置,结果:
50,57,84,61,20,86,89
第二轮第三次,84与61对比,交换位置,结果:
50,57,61,84,20,86,89
第二轮第四次,84与20对比,交换位置,结果:
50,57,61,20,84,86,89
第二轮第五次,84与86对比,位置不换
将86冒出来了,现在序列为:
50,57,61,20,84,86,89
第三轮第一次,50与57对比,位置不换
第三轮第二次,57与61对比,位置不换
第三轮第三次,61与20对比,交换位置,结果:
50,57,20,61,84,86,89
第三轮第四次,61与84对比,位置不换
将84冒出来了,现在序列为:
50,57,20,61,84,86,89
第四轮第一次,50与57对比,位置不换
第四轮第二次,57与20对比,交换位置,结果:
50,20,57,61,84,86,89
第四轮第三次,57与61对比,位置不换
将61冒出来了,现在序列为:
50,20,57,61,84,86,89
第五轮第一次,50与20对比,交换位置,结果:
20,50,57,61,84,86,89
第五轮第二次,50与57对比,位置不换
将57冒出来了,现在序列为:
20,50,57,61,84,86,89
第六轮第一次,20与50对比,位置不换
将50冒出来了,现在的序列为:
20,50,57,61,84,86,89
通过上面的分析总结出如下几点,找出规律,通过程序即可完成冒泡算法的实现。
若数组元素数为7,贝U排序过程需要经历6轮,因为有1个元素是不需要比较的。
若数组元素数为7,第]轮比较6次,第2轮比较5次,依次类推,第6轮只比较
通过如上的分析,写出冒泡排序算法如下所示:
1.
int[]arr={89,50,84,57,61,20,86);
2.
for(inti=0;i3.
for(intj=0;j4.
if(arr[j]>arr[j+1])(
5.
inttemp=arr[j]
6.
arr[j]=arr[j+1];
7.
arr[j+1]=temp;
8.
9.
10.
hashmaphashtable
ArrayListLinkedList
.ArrayList和LinkedList
List接口的两个常见实现类为ArrayList和LinkedList,分别用动态数组和链
表的方式实现了List接口。
可以认为ArrayList和LinkedList的方法在逻辑上完全一样,只是在性能上有
—定的差别,ArrayList更适合于随机访问而LinkedList更适合于插入和删除;在
性能要求不是特别苛刻的情形下可以忽略这个差别
线程方法不止两种
sleepwait
Thread的静态方法sleep用于使当前线程进入阻塞状态:
该方法会使当前线程进入阻塞状态指定毫秒,当指定毫秒阻塞后,当前线程会重新进入Runnable状态,等待分配时间片。
该方法声明抛出一个InterruptException。
所以在使用该方法时需要捕获这个异常。
wait和nofify
多线程之间需要协调工作。
例如,浏览器的一个显示图片的displayThread想要执行显示图片的任务,必须等待下载线程downloadThread将该图片下载完毕。
如果图片还没有下载完,displayThread可以暂停,当downloadThread完成了任务后,再通知displayThread"图片准备完毕,可以显示了",这时,displayThread继续执行。
以上逻辑简单的说就是:
如果条件不满足,则等待。
当条件满足时,等待该条件的线程将被唤醒。
在Java中,这个机制的实现依赖于wait/notify。
等待机制与锁机制是密切关联的。
jdk1.5新特性
ANS:
1泛型(Generics)
2增强的for循环3自动装箱/自动拆箱
4类型安全的枚举
5静态导入
6可变参数
垃圾回收原理
原理:
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址,大小和使用情况,通常GC采取有向图的方式记录和管理堆(heap)中的所有对象,通过这种方式判断那种对象是“可达的“,那些对象是”不可达的“当GC确定一些对象为”不可达“时,GC就有责任回收这些内存空间
==equals
equals与==的区别
"=="是值比较,对于引用类型变量而言,该变量保存的是对象的地址,所以使用"=="比较时,意思为两个变量的地址是否相等,换句话说就是看两个变量引用的是否为同一个对象
equals是内容比较,对于两个引用变量而言,是比较两个变量所引用的对象内容是否相同。
举个例子:
就好像一对双胞胎,他们是两个独立的个体,是两个对象。
所以那么用"=="比较是false。
但是因为他们"长得一样”,所以equals方法比较时true。
我们也可以变相的理解为:
"=="是判断是否为同一个,而"equals"是判断像不outofMerry处理1、程序控制2、虚拟内存设置system.exit();
trycatchfinallythrowsthrow含义
forwardredirect区别...
重定向:
浏览器发送请求到容器访问A,A可以发送一个状态码302和一个
Location消息头到浏览器,于是浏览器会立即向Location发新的请求转发:
浏览器发送请求到容器访问A,A可以通知容器去调用B。
转发所涉及的各个Web组件会共享同一个request和response对象;而重定向不行。
说明:
当请求到达容器,容器会创建request对象和response对象。
当响应发送完毕,容器会立即删除请求对象response对象。
即,request对象和response对象的生存时间是一次请求与响应期间。
转发之后,浏览器地址栏的地址不变,重定向会变。
转发的地址必须是同一个应用内部某个地址,而重定向没有这个限制转发是一件事情未做完,调用另外一个组件继续做;而重定向是一件事情已经做完,再做另外一件事情。
forward仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
这样,从浏览器的地址栏中可以看到跳转后的链接地址。
所以,forward更加高效,在forward可以满足需要时,尽量使用forward。
方法,并且,这样也有助于隐藏实际的链接。
在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用
sendRedirect()方法。
forward:
A访问B,B访问C,过程是A->B->C,此时打开的是C,但地址栏里的地址是B的地址。
控制权的转向
redirects访问B,若想访问C,需由B返回给A—个参数,由A去访问C,过程是A->B->A->C,地址栏的地址是C。
2次的意思是指一次访问B,一次访问Cif(rs.next())—般是用来读唯一结果集,而while(rs.next())用来读多条记录的
web页面里的权限是怎么实现的呢?
就是不同的人看到不同的页面?
?
?
?
在数据库里添加权限表,并配置每个用户的权限。
在登陆的时候将用户的权限内
容加载到session里,然后页面根据session里的权限设置加载相应的内容
用户-角色-权限-页面
菜单根据权限列表加载
emp(eno,ename,salary,dno)员工号,员工姓名,工资,部门号
dept(dno,dname)部门号,部门名称
1)列出各个部门中工资不低于600的的员工的平均工资;
2)将工资低于600的员工工资提高10%;
selectdname,avg(salary)fromempinnerjoindept
onemp.dno=dept.dno
wheresalary<=600
groupbydname;
selectdept.dname,avg(salary)
fromemp,deptwhereemp.dno=dept.dnoandemp.dnoin(
selectdnofromempgroupbydnohavingsalary>=600);
updateempsetsalary=salary*1.1wheresalary<600;
updateempsetsalary=salary*1.1
wheresalary<600andemp.dno=(selectdnofromdeptwheredname="销售
部门";
1)说说线程和进程的区别
进程是系统分配的最小单位,线程是系统调度的最小单位,且进程有独立的空间,而线程是共享堆栈,数据,代码段,而进程只是共享代码段
—个进程至少有一个线程。
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程的区别在于每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。
但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
但操作系统并没有将多个线程看做多个独立的应用来实现进程的调度和管理以及资源分配。
2)
进程有一块独立的内存。
同一个进程里的线程内存是共享的。
2)utf-8utf-16与gb2312区别
UTF-8各UTF-16是三个字结表示一汉字。
GB2312是二字节,
3)java中的int类型在64位机器上是多少位的
JAVA中的INT应该是与机器无关。
也就是二个字节吧。
我猜的
4)在VM中static类型的变量什么情况下,不是唯一的(这道题目记不清了,好像是这个意思,VM不知道是啥)不同的加载器加载的时候不是唯一的哈
5)get请求和post请求的区别(关于这道题目,我想问网上查的有个区别是:
get是在服务器上取得数据,post是向服务器上传输数据,我始终不大明白这句话的意思,我感觉post和get都是
将数据传到服务器上)
简单点。
GET请求的话。
URL带有名文参数。
POST没有
6)throwable,exception和runtimeException的区别是啥
throwable关键词是向系统抛出异常EXCEPTION是异常。
RUNTIMEEXCEPTION是EXCEPTION的儿子。
7)在servlet中,每次请求是不是都会创建一^servlet实例;在struts1中是不是每次请求都会创建一^action(这个题目不会哈哈)
应该都不是。
我猜的
8)补充代码
对list进行升序排序(list中放的为integer类型的)我直接用的Collections.sort(list)湎试的时候他又问如果对这个list进行降序排序,还是使用collections中的sort方法,我说了我
的想法,但是他说可以用compareble接口,我想integer本来就已经实现了comparable接口,所以才能进行排序的,这个不知道了,哈哈一会自己试试
这个差不多没有研究过哈。
mysql>selectcurdate(),now(),date(now());
++++
|curdate()|now()|date(now())|
++++
|2011-05-27|2011-05-2709:
20:
27|2011-05-27|
++++