1、JAVA面试题集2 JAVA面试题集21.数据库,比如100用户同时来访,要采取什么技术解决;(JDBC)答:可采用连接池。2.String, StringBuffer StringBuilder的区别。(Core Java)答:String是一组不可变的unicode编码的字符序列;StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法;线程安全;StringBuilder是从 JDK 5 开始,为StringBuffer该类补充了一
2、个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。3.写一个函数要求输入一个字符串和一个字符长度,对该字符串进行分隔;(Core Java)答:函数代码如下:public String split(String str, int chars)int n = (str.length()+ chars - 1)/chars;String ret = new Stringn;for(int i=0; in; i+)if(i n-1)reti = str.substring(i*chars , (i+1)*chars)
3、;elsereti = str.substring(i*chars);return ret;4.java和javasciprt的区别;(Core Java)答:javascript与Java是两个公司开发的不同的两个产品。Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发;而javascript是Netscape公司的产品,其目的是为了扩展Netscape Navigator功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言, 它的前身是Live Script;而Java的前身是Oak语言。下面对两种语言间的异同作如下比较:1)基
4、于对象和面向对象:Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。 javascript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object Based)和事件驱动(Event Driver)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用。 2)解释和编译:Java的源代码在执行之前,必须经过编译;javascript是一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。 3)强类型变量和类型弱变量:Java采用强类型变量检查,即所有变量在编译之前必须作声明; javascript中变量声明,采用其弱类
5、型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。4)代码格式不一样。6.以下二条语句返回值为true的有:(Core Java)答:A B A:“beijing”=“beijing”;B:“beijing”.equalsIgnoreCase(new String(“beijing”);7.类Example A继承 Exception,类 ExampleB继承Example A;有如下代码片断:(Core Java)trythrow new ExampleB(“b”);catch(ExampleA e)System.out.println(“ExampleA”);catch(Ex
6、ception e)System.out.printfln(“Exception”);输出的内容应该是:AA:ExampleA B:Exception C:b D:无8.java多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么;(Core Java) 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口;同步的实现方面有两种,分别是synchronized,wait与notify14.定义类A和类B如下:(Core Java)class A int a=1; double d=2.0; void show() System.out.println(Class
7、 A: a=+a +td=+d); class B extends A float a=3.0f; String d=Java program.; void show() super.show( ); System.out.println(Class B: a=+a +td=+d); (1) 若在应用程序的main方法中有以下语句: A a=new A(); a.show();则输出的结果如何?答:输出结果为:Class A: a=1d=2.0 (2) 若在应用程序的main方法中定义类B的对象b: A b=new B(); b.show();则输出的结果如何? 答:输出结果为:Class A
8、: a=1d=2.0Class B: a=3.0d=Java program.16.详细描述MVC;(Web) 答:基于Java的Web应用系统采用MVC架构模式,即model(模型)、view(视图)、control(控制)分离设计。这是目前WEB应用服务系统的主流设计方向。Model:即处理业务逻辑的模块,每一种处理一个模块;View:负责页面显示,显示MODEL处理结果给用户,主要实现数据到页面转换过程;Control:负责每个请求的分发,把form数据传递给MODEL处理,把处理结果的数据传递给VIEW显示。17.页面中有一个命名为bank No的下拉列表,写脚本获取当前选项的索引值;
9、(Web)答:用java或javascript的处理方式分别如下:Java: request.getParameter(“bank No”);javascript: var selectItems = document.getElementsByName(“bank No”); selectItems0.value;18.javasct常用的方面;(Web)答:常用于数据输入校验和页面特殊效果等。19.常用的web容器和开发工具;(Web)答:最常用的容器包括:tomcat、weblogic;开发工具有:eclipse,jbuilder20.请画出Servlet 2.2以上Web Applic
10、ation的基本目录结构(时间2分钟)(Web)答:目录结构如下图所示: webapps | Applocation | _ | |JSP页面 WEB-INF | _ | | | Class lib web.xml21.后序遍历下列二叉树,访问结点的顺序是?(数据结构)答:DJGEBKNIFCA A / B C/ D E F / / G N I / J K22.写一种常见排序;(算法)答:C+中冒泡排序:void swap( int& a, int& b )int c=a; a = b; b = c;void bubble( int* p, int len )bool bSwapped;do
11、bSwapped = false;for( int i=1; ipi )swap( pi-1, pi );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
12、+)以上的程序你采用的哪种语言写的.采用该种语言的理由是什么,答:代码如下:#include bool prime( int n )if(n=0) exit(0);for( int i=2; i=n; i+ ) for( int j=2; j=5;2.数据库表(Test)结构如下:(SQL)IDNAMEAGEMANAGER(所属主管人ID)106A30104109B19104104C20111107D35109112E25120119F45NULL要求:列出所有年龄比所属主管年龄大的人的ID和名字?答:SQL语句如下:select employee.name from test employe
13、e where employee.age(select manager.age from test manager where manager.id=employee.manager);3.有3个表(15分钟):(SQL)Student 学生表 (学号,姓名,性别,年龄,组织部门)Course 课程表 (编号,课程名称)Sc 选课表 (学号,课程编号,成绩)表结构如下:1)写一个SQL语句,查询选修了计算机原理的学生学号和姓名(3分钟)答:SQL语句如下:select stu.sno, stu.sname from Student stu where (select count(*) from
14、 sc where sno=stu.sno and cno =(select cno from Course where cname=计算机原理) != 0;2)写一个SQL语句,查询周星驰同学选修了的课程名字(3分钟)答:SQL语句如下:select cname from Course where cno in (select cno from sc where sno=(select sno from Student where sname=周星驰);3)写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟)答:SQL语句如下:select stu.sno, stu.sname f
15、rom student stu where (select count(*) from sc where sno=stu.sno) = 5;5. 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。(Core Java)答:代码如下:public int countWords(String file, String find) throws Exception int count = 0;Reader in = new FileReader(file);int c;while (c = in.read() != -1) while (c = find.charAt(0
16、) for (int i = 1; i find.length(); i+) c = in.read();if (c != find.charAt(i) break;if (i = find.length() - 1) count+;return count;8.用程序给出随便大小的10个数,序号为1-10,按从小到大顺序输出,并输出相应的序号。(Core Java)答:代码如下:package test;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.u
17、til.List;import java.util.Random;public class RandomSort public static void printRandomBySort() Random random = new Random(); / 创建随机数生成器List list = new ArrayList();for (int i = 0; i 10; i+) / 生成10个随机数,并放在集合list中list.add(random.nextInt(1000);Collections.sort(list); / 对集合中的元素进行排序Iterator it = list.ite
18、rator();int count = 0;while (it.hasNext() / 顺序输出排序后集合中的元素System.out.println(+count + : + it.next();public static void main(String args) printRandomBySort();9.写一个函数,2个参数,1个字符串,1个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如(“我ABC”,4)应该截为“我AB”,输入(“我ABC汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。(Core Java)答:代码如下:public String
19、 subString(String str, int subBytes) int bytes = 0; / 用来存储字符串的总字节数for (int i = 0; i str.length(); i+) if (bytes = subBytes) return str.substring(0, i);char c = str.charAt(i);if (c 256) bytes += 1; / 英文字符的字节数看作1 else bytes += 2; / 中文字符的字节数看作2if(bytes - subBytes = 1)return str.substring(0, i);return s
20、tr; 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
21、)一对多的标签为: ;多对多的标签为:;2)sessionFactory的缓存为hibernate的二级缓存;3)Hibernate的事务实际上是底层的JDBC Transaction的封装或者是JTA Transaction的封装;默认情况下使用JDBCTransaction。18.JSP中两种 include方式的区别;(Web)答:动态include用jsp:include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静态include用指令实现,适用于包含静态页面19.javascipt的优缺点和内置对象;(Web)答:关于javascipt:1)优点:
22、简单易用,与Java有类似的语法,可以使用任何文本编辑工具编写,只需要浏览器就可执行程序,并且事先不用编译,逐行执行,无需进行严格的变量声明,而且内置大量现成对象,编写少量程序可以完成目标;2)缺点:不适合开发大型应用程序3)javascript有11种内置对象:Array,String,Date,Math,Boolean,Number,Function,Global,Error,RegExp,Object20.get和post的区别?(Web)答:form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下: 1)Get是用来从服务器上获
23、得数据,而Post是用来向服务器上传递数据; 2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL; 3)Get是不安全的,因为在传输过程,数据被放在请求的URL中,Post的所有操作对用户来说都是不可见的; 4)Get传输的数据量小,这主要是因为受URL长度限制,而Post可以传输大量的数据,所以在上传文件只能使用Post; 5)Get限制form表单的数据集必须为ASCII字符,而Po
24、st支持整个ISO10646字符集; 6)Get是form的默认方法。22.写出你熟悉的开源框架以及各自的作用。答:框价:hibernate,spring,struts. Hibernate主要用于数据持久化; Spring 的控制反转能起到解耦合的作用; Struts 主要用于流程控制;服务器类:Apache Tomcat Jboss等25.JSP标签的作用?如何定义;(Web)答:作用:分离jsp页面的内容和逻辑;业务逻辑开发者可以创建自定义标签;封装业务逻辑;可重用并且易维护;易于手工修改、易于工具维护;提供简洁的语法;定义:写标签处理器;写tld文件;讲标签处理器和tld文件放到同一个
25、包里面;把jsp页面和标签库配置部署在一起。26.写一个自定义标签;(Web)答:代码如下:import javax.servlet.jsp.tagext.*;import javax.servlet.jsp.*;import java.io.*;public class TimeTag extends SimpleTagSupportprivate boolean isServer = true;public void setServer(boolean isServer)this.isServer = isServer;public void doTag() throws JspExcep
26、tion, IOExceptionJspWriter out = getJspContext().getOut();if(isServer) out.println(new java.util.Date();elseout.println();out.println(document.write(new Date(););out.println();27.写出熟悉的JSTL标签;(Web)答:如下:28.说出struts中的标签;(Web)答:如下: 29.如何从form表单中得取checkbox的值;(Web)答:可在页面把checkbox的name属性取同一个,value属性取每个条目的id,后台用getParamter(“name”)能取到checkbox的一组值。30.简述HttpSession的作用、使用方法,可以用代码说明。(时间3分钟)(Web)答:HttpSession中可以跟踪并储存用户信息,把值设置到属性中,有2个方法:setAttribute(),getAttrribute();例如:在一个方法中用session.setAttribute(“student”,st
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1