JAVA面试题集2.docx
- 文档编号:6575654
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:31
- 大小:34.22KB
JAVA面试题集2.docx
《JAVA面试题集2.docx》由会员分享,可在线阅读,更多相关《JAVA面试题集2.docx(31页珍藏版)》请在冰豆网上搜索。
JAVA面试题集2
JAVA面试题集2
1.数据库,比如100用户同时来访,要采取什么技术解决;(JDBC)
答:
可采用连接池。
2.String,StringBufferStringBuilder的区别。
(CoreJava)
答:
String是一组不可变的unicode编码的字符序列;
StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;线程安全;
StringBuilder是从JDK5开始,为StringBuffer该类补充了一个单个线程使用的等价类;通常应该优先使用StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
3.写一个函数要求输入一个字符串和一个字符长度,对该字符串进行分隔;(CoreJava)
答:
函数代码如下:
publicString[]split(Stringstr,intchars){
intn=(str.length()+chars-1)/chars;
Stringret[]=newString[n];
for(inti=0;i if(i 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)代码格式不一样。 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 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. 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;i if(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; 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;i c=in.read(); if(c! =find.charAt(i))break; if(i==find.length()-1)count++; } } } returncount; 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;i if(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; } 14.struts的入口类;(Web) 答: ActionServlet是Struts的入口类,所有的struts请求都经由该类转发处理 16.servlet的生命周期以及与其相关的类接口和相关方法;(Web) 答: servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。 这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 17.关于hibernate: 1)在hibernate中,在配置文件呈标题一对多,多对多的标签是什么; 2)Hibernate的二级缓存是什么; 3)Hibernate是如何处理事务的; 答: 1)一对多的标签为: 2)sessionFactory的缓存为hibernate的二级缓存; 3)Hibernate的事务实际上是底层的JDBCTransaction的封装或者是JTATransaction的封装;默认情况下使用JDBCTransaction。 18.JSP中两种include方式的区别;(Web) 答: 动态include用jsp: include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态include用<%@include%>指令实现,适用于包含静态页面 19.javascipt的优缺点和内置对象;(Web) 答: 关于javascipt: 1)优点: 简单易用,与Java有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标; 2)缺点: 不适合开发大型应用程序 3)javascript有11种内置对象: Array,String,Date,Math,Boolean,Number,Function,Global,Error,RegExp,Object 20.get和post的区别? (Web) 答: form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET 和POST方法。 二者主要区别如下: 1)Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据; 2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL 后面,并且两者使用“? ”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL; 3)Get是不安全的,因为在传输过程,数据被放在请求的URL中, Post的所有操作对用户来说都是不可见的; 4)Get传输的数据量小,这主要是因为受URL长度限制,而Post可以传输大量 的数据,所以在上传文件只能使用Post; 5)Get限制form表单的数据集必须为ASCII字符,而Post支持整个ISO10646 字符集; 6)Get是form的默认方法。 22.写出你熟悉的开源框架以及各自的作用。 答: 框价: hibernate,spring,struts. Hibernate主要用于数据持久化; Spring的控制反转能起到解耦合的作用; Struts主要用于流程控制; 服务器类: ApacheTomcatJboss等 25.JSP标签的作用? 如何定义;(Web) 答: 作用: 分离jsp页面的内容和逻辑; 业务逻辑开发者可以创建自定义标签; 封装业务逻辑; 可重用并且易维护; 易于手工修改、易于工具维护; 提供简洁的语法; 定义: 写标签处理器; 写tld文件; 讲标签处理器和tld文件放到同一个包里面; 把jsp页面和标签库配置部署在一起。 26.写一个自定义标签;(Web) 答: 代码如下: importjavax.servlet.jsp.tagext.*; importjavax.servlet.jsp.*; importjava.io.*; publicclassTimeTagextendsSimpleTagSupport{ privatebooleanisServer=true; publicvoidsetServer(booleanisServer){ this.isServer=isServer; } publicvoiddoTag()throwsJspException,IOException{ JspWriterout=getJspContext().getOut(); if(isServer){ out.println(newjava.util.Date()); }else{ out.println(" out.println("document.write(newDate());"); out.println(""); } } } 27.写出熟悉的JSTL标签;(Web) 答: 如下: if> forEach> set> import> redirect> 28.说出struts中的标签;(Web) 答: 如下: message/> errors/> include/> messages/> define/> html> write/> form> resource/> link> cokkie/> text> heder/> present/> parameter/> equal/> size/> 29.如何从form表单中得取checkbox的值;(Web) 答: 可在页面把checkbox的name属性取同一个,value属性取每个条目的id,后台用getParamter(“name”)能取到checkbox的一组值。 30.简述HttpSession的作用、使用方法,可以用代码说明。 (时间3分钟)(Web) 答: HttpSession中可以跟踪并储存用户信息,把值设置到属性中,有2个方法: setAttribute(),getAttrribute(); 例如: 在一个方法中用session.setAttribute(“student”,st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)