ret[i]=str.substring(i*chars,(i+1)*chars);
}else{
ret[i]=str.substring(i*chars);
}
}
returnret;
}
4.java和javasciprt的区别;(CoreJava)
答:
javascript与Java是两个公司开发的不同的两个产品。
Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;而javascript是Netscape公司的产品,其目的是为了扩展NetscapeNavigator功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言,它的前身是LiveScript;而Java的前身是Oak语言。
下面对两种语言间的异同作如下比较:
1)基于对象和面向对象:
Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。
javascript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。
它是一种基于对象(ObjectBased)和事件驱动(EventDriver)的编程语言。
因而它本身提供了非常丰富的内部对象供设计人员使用。
2)解释和编译:
Java的源代码在执行之前,必须经过编译;
javascript是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。
3)强类型变量和类型弱变量:
Java采用强类型变量检查,即所有变量在编译之前必须作声明;
javascript中变量声明,采用其弱类型。
即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。
4)代码格式不一样。
5.语句floatf=1.3;编译能否通过?
(CoreJava)
答:
不能;应该用强制类型转换,如下所示:
floatf=(float)1.3;
6.以下二条语句返回值为true的有:
(CoreJava)
答:
AB
A:
“beijing”==“beijing”;
B:
“beijing”.equalsIgnoreCase(newString(“beijing”));
7.类ExampleA继承Exception,类ExampleB继承ExampleA;
有如下代码片断:
(CoreJava)
try{
thrownewExampleB(“b”);
}catch(ExampleAe){
System.out.println(“ExampleA”);
}catch(Exceptione){
System.out.printfln(“Exception”);
}
输出的内容应该是:
A
A:
ExampleAB:
ExceptionC:
bD:
无
8.java多线程有几种实现方法,都是什么?
同步有几种实现方法,都是什么;(CoreJava)
答:
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口;
同步的实现方面有两种,分别是synchronized,wait与notify
9.Arraylist与Vector区别;(CoreJava)
答:
就ArrayList与Vector主要从二方面来说:
1.同步性:
Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
2.数据增长:
当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
10.HashMapHashtable区别;(CoreJava)
答:
都属于Map接口的类,实现了将惟一键映射到特定的值上,区别主要有:
1.历史原因:
Hashtable是继承于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现;
2.同步性:
Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的;
3.值:
只有HashMap可以让你将空值作为一个表的条目的key或value;
4.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey;因为contains方法容易让人引起误解。
11.Collction和Collections的区别;(CoreJava)
答:
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法;
Collection是个java.util下的接口,它是各种集合结构的父接口。
12.面向对象的特征有哪些方面;(CoreJava)
答:
封装、继承、多态:
1)封装:
指把一个类的内部实现隐藏起来,对外提供公开一致的接口,从而具有更好的可维护性;
2)继承:
使一个类自动获得另一个类的方法和属性;
3)多态:
指子类可以当作父类用。
13.Overload和Override的区别;Overloaded的方法是否可改变返回值类型;(CoreJava)
答:
方法的覆盖Overriding和重载Overloading是Java多态性的不同表现。
覆盖Overriding是父类与子类之间多态性的一种表现(又称为运行时多态),重载Overloading是一个类中多态性的一种表现(也称为编译时多态)。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被覆盖(Overriding),子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。
14.定义类A和类B如下:
(CoreJava)
classA{
inta=1;
doubled=2.0;
voidshow(){
System.out.println("ClassA:
a="+a+"\td="+d);
}
}
classBextendsA{
floata=3.0f;
Stringd="Javaprogram.";
voidshow(){
super.show();
System.out.println("ClassB:
a="+a+"\td="+d);
}
}
(1)若在应用程序的main方法中有以下语句:
Aa=newA();
a.show();
则输出的结果如何?
答:
输出结果为:
ClassA:
a=1d=2.0
(2)若在应用程序的main方法中定义类B的对象b:
Ab=newB();
b.show();
则输出的结果如何?
答:
输出结果为:
ClassA:
a=1d=2.0
ClassB:
a=3.0d=Javaprogram.
15.接口和抽象类的区别;(CoreJava)
答:
抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。
成员方法中包含抽象方法的类被叫做抽象类(abstractclass);不能创建abstract类的实例,然而可以创建一个引用变量,其类型是一个抽象类,并让它指向具体子类的一个实例;不能有抽象构造函数或抽象静态方法;Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。
接口(interface)是抽象类的变体,在接口中,所有方法都是抽象的;多继承性可通过实现这样的接口而获得;接口只可以定义staticfinal成员变量;当类实现特殊接口时,它定义所有这种接口的方法;允许使用接口名作为引用变量的类型。
16.详细描述MVC;(Web)
答:
基于Java的Web应用系统采用MVC架构模式,即model(模型)、view(视图)、control(控制)分离设计。
这是目前WEB应用服务系统的主流设计方向。
Model:
即处理业务逻辑的模块,每一种处理一个模块;
View:
负责页面显示,显示MODEL处理结果给用户,主要实现数据到页面转换过程;
Control:
负责每个请求的分发,把form数据传递给MODEL处理,把处理结果的数据传递给VIEW显示。
17.页面中有一个命名为bankNo的下拉列表,写脚本获取当前选项的索引值;(Web)
答:
用java或javascript的处理方式分别如下:
Java:
request.getParameter(“bankNo”);
javascript:
varselectItems=document.getElementsByName(“bankNo”);
selectItems[0].value;
18.javasct常用的方面;(Web)
答:
常用于数据输入校验和页面特殊效果等。
19.常用的web容器和开发工具;(Web)
答:
最常用的容器包括:
tomcat、weblogic;
开发工具有:
eclipse,jbuilder
20.请画出Servlet2.2以上WebApplication的基本目录结构(时间2分钟)(Web)
答:
目录结构如下图所示:
webapps
|
Applocation
|
__________________
||
JSP页面WEB-INF
|
___________________
|||
Classlibweb.xml
21.后序遍历下列二叉树,访问结点的顺序是?
(数据结构)
答:
DJGEBKNIFCA
A
/\
BC
/\\
DEF
//\
GNI
/\
JK
22.写一种常见排序;(算法)
答:
C++中冒泡排序:
voidswap(int&a,int&b){
intc=a;a=b;b=c;
}
voidbubble(int*p,intlen){
boolbSwapped;
do{
bSwapped=false;
for(inti=1;iif(p[i-1]>p[i]){
swap(p[i-1],p[i]);
bSwapped=true;
}
}
}while(bSwapped);
}
23.一个byte几个单位。
(计算机基础)
答:
8bit。
24.常用UNIX命令(Linux的常用命令)(至少10个);(Unix)
答:
ls,pwd,mkdir,rm,cp,mv,cd,ps,ftp,telnet,ping,env,more,echo
greap,cat,view,pr,in,chmod,find,chown.
25.写一个一小段程序检查数字是否为质数;(C++)
以上的程序你采用的哪种语言写的.采用该种语言的理由是什么,
答:
代码如下:
#include
boolprime(intn){
if(n<=0)exit(0);
for(inti=2;i<=n;i++)
for(intj=2;j<=sqrt(i);j++)
if((n%j==0)&&(j!
=n))
returnfalse;
returntrue;
}
C++,运行效率高
1.张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联;(SQL)
1)写出建表语句;
答:
建表语句如下(mysql数据库):
createtables(idintegerprimarykey,namevarchar(20));
createtablec(idintegerprimarykey,namevarchar(20));
createtablesc(
sidintegerreferencess(id),
cidintegerreferencesc(id),
primarykey(sid,cid)
);
2)写出SQL语句,查询选修了所有选修课程的学生;
答:
SQL语句如下:
selectstu.id,stu.namefromsstu
where(selectcount(*)fromscwheresid=stu.id)=
(selectcount(*)fromc);
3)写出SQL语句,查询选修了至少5门以上的课程的学生。
答:
SQL语句如下:
selectstu.id,stu.namefromsstu
where(selectcount(*)fromscwheresid=stu.id)>=5;
2.数据库表(Test)结构如下:
(SQL)
IDNAMEAGEMANAGER(所属主管人ID)
106A30104
109B19104
104C20111
107D35109
112E25120
119F45NULL
要求:
列出所有年龄比所属主管年龄大的人的ID和名字?
答:
SQL语句如下:
selectemployee.namefromtestemployeewhereemployee.age>
(selectmanager.agefromtestmanagerwheremanager.id=employee.manager);
3.有3个表(15分钟):
(SQL)
Student学生表(学号,姓名,性别,年龄,组织部门)
Course课程表(编号,课程名称)
Sc选课表(学号,课程编号,成绩)
表结构如下:
1)写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名(3分钟)
答:
SQL语句如下:
selectstu.sno,stu.snamefromStudentstu
where(selectcount(*)fromscwheresno=stu.snoandcno=
(selectcnofromCoursewherecname='计算机原理'))!
=0;
2)写一个SQL语句,查询’周星驰’同学选修了的课程名字(3分钟)
答:
SQL语句如下:
selectcnamefromCoursewherecnoin(selectcnofromscwheresno=(selectsnofromStudentwheresname='周星驰'));
3)写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟)
答:
SQL语句如下:
selectstu.sno,stu.snamefromstudentstu
where(selectcount(*)fromscwheresno=stu.sno)=5;
4.写四个线程,两个对j加1,两个对j减1;(CoreJava)
答:
代码如下:
packagetest;
publicclassTestThread{
intj;
publicTestThread(intj){
this.j=j;
}
privatesynchronizedvoidinc(){
j++;
System.out.println(j+"--Inc--"+Thread.currentThread().getName());
}
privatesynchronizedvoiddec(){
j--;
System.out.println(j+"--Dec--"+Thread.currentThread().getName());
}
publicvoidrun(){
(newDec()).start();
newThread(newInc()).start();
(newDec()).start();
newThread(newInc()).start();
}
classDecextendsThread{
publicvoidrun(){
for(inti=0;i<100;i++){
dec();
}
}
}
classIncimplementsRunnable{
publicvoidrun(){
for(inti=0;i<100;i++){
inc();
}
}
}
publicstaticvoidmain(String[]args){
(newTestThread(5)).run();
}
}
5.写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。
(CoreJava)
答:
代码如下:
publicintcountWords(Stringfile,Stringfind)throwsException{
intcount=0;
Readerin=newFileReader(file);
intc;
while((c=in.read())!
=-1){
while(c==find.charAt(0)){
for(inti=1;ic=in.read();
if(c!
=find.charAt(i))break;
if(i==find.length()-1)count++;
}
}
}
returncount;
}
6.sleep()和wait()的区别;(CoreJava)
答:
sleep()方法是使线程停止一段时间的方法。
在sleep时间间隔期满后,线程不一定立即恢复执行。
这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非:
(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
7.GC是什么?
为什么要用它;(CoreJava)
答:
GC是垃圾收集器;Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用方法:
System.gc()或Runtime.getRuntime().gc()
8.用程序给出随便大小的10个数,序号为1-10,按从小到大顺序输出,并输出相应的序号。
(CoreJava)
答:
代码如下:
packagetest;
importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Random;
publicclassRandomSort{
publicstaticvoidprintRandomBySort(){
Randomrandom=newRandom();//创建随机数生成器
Listlist=newArrayList();
for(inti=0;i<10;i++){//生成10个随机数,并放在集合list中
list.add(random.nextInt(1000));
}
Collections.sort(list);//对集合中的元素进行排序
Iteratorit=list.iterator();
intcount=0;
while(it.hasNext()){//顺序输出排序后集合中的元素
System.out.println(++count+":
"+it.next());
}
}
publicstaticvoidmain(String[]args){
printRandomBySort();
}
}
9.写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:
如(“我ABC”,4)应该截为“我AB”,输入(“我ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。
(CoreJava)
答:
代码如下:
publicStringsubString(Stringstr,intsubBytes){
intbytes=0;//用来存储字符串的总字节数
for(inti=0;iif(bytes==subBytes){
returnstr.substring(0,i);
}
charc=str.charAt(i);
if(c<256){
bytes+=1;//英文字符的字节数看作1
}else{
bytes+=2;//中文字符的字节数看作2
if(bytes-subBytes==1){
returnstr.substring(0,i);
}
}
}
returnstr;
}
10.连接池的工作原理;(JDBC)
答:
连接池中保存有指定个数的数据库连接,当需要时程序可从池中获取可用连接,并在程序使用过之后不关闭连接,并放回连接池中,以供其他的程序在需要时来取用,这样可以大量的节省销毁和创建连接的资源消耗。
11.JNDI是什么?
答:
是java命名和目录接口服务
12.什么是web容器;(Web)
答:
容器是一个软件的概念,提供了一个组件运行的环境。
Web容器或ejb