第一篇:JAVA上机面试题
需求:
部门管理
界面分为左右两部分:
左列显示树形结构,结构如下:
公司名称
------部门1
-----人员1
-----人员2
------部门2
。。。。。
右侧添加部门,人员,删除等自行设计,人员详细信息。
一. 要求使用Spring+Structs,连接oracle数据。(基本框架和数据库考察)
二. 使用连接池管理数据库连接。(数据库连接管理)
三. 使用easyui插件完成界面。(学习能力,界面,自行搜索下载)
四. 同一人员可在多个部门同时出现。(数据库基本设计)
五. 数据库建表关联正确,体现部门公司之间级别关系,员工和部门关系。(数据库关系)
六. 要求用到,视图,程序包,存储过程完成数据读写。(数据库基本操作)
要求: 界面整洁,代码工整,命名规范,可以在网上找相关资料,不得相互讨论,有不清楚的及时沟通。
第二篇:JAVA面试题
1、面向对象的四个特征:封装、继承、多态、抽象
封装:
继承:子类继承父类,除private修饰以外的所以方法和属性 多态:一个对象多种状态,可以把子类对象当作父类对象来看,一旦这样做了,就只能
去调用父类中原有定义的属性和方法,也就是子类中扩展的方法或属性就不能调用了。
抽象:
2、abstractclass 和interface的区别
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
3、final、finally、finalize的区别
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
4、匿名内部类是否可以作为父类被其他类继承,或做为接口被实现?
匿名内部类不被继承也不能被实现,因为它没有名字,而一个内部类只要有名字就可以作为父类被继承,也可以作为借口被实现。
5、多线程有几种实现方法,同步有几种实现方法,都是什么?
多线程有两种实现方法,分别继承继承Thread类与实现runnable借口。
同步的实现方法有两种,分别是synchronized,wait与notify。
6、string 与 stringbuffer的区别?
String的长度是不可变的,而stringbuffer的长度是可变的。如果你对字符中的内容经常进行操作,特别是内容修改时,那么就要使用stringbuffer,如果最后需要使用string,那么使用stringbuffer的tostring()方法。
7、解析XML文件的几种方式和区别
DOM:处理大型文件时其性能下降的非常厉害
SAX:SAX是事件驱动型的XML解析方式,它是顺序读取XML文件,不需要一次性全部装载整个文件。
8、sleep()和wait()有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
9、数组有没有length这个方法?string有没有length这个方法?
数组没有length()这个方法,有length这个属性
String有length()这个方法
10、LinkedList、ArrayList和Vector的区别? ArrayList和Vector是采用数组方式存储数据,此数组元素总数大于实际存储的数据个数以便增加和插入元素,二者都允许直接序号索引元素,但是插入数据要移动数组元素等内存操作,所以它们索引数据快、插入数据慢。
Vector由于使用了synchronized同步方法(如add、insert、remove、set、equals、hashcode等操作),因此是线程安全,性能上比ArrayList要差。
LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!LinkedList双向链表,是指可以从first依次遍历至last(从头到尾),也可以从last遍历至first(从尾到头),但首尾没有构成环,不同于双向循环链表(注意区分):
11、hashmap与hashtable的区别?
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap类没有分类或者排序。它允许一个null键和多个null值。
Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。
12、Jsp有哪些内置对象,作用分别是什么?(至少能说出五个)
request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)
out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page表示从该页面产生的一个servlet实例
13、Javaservletapi中forward()与redirect()的区别?
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
14、重载(overload)与重写(override)的区别?
Overload:方法名相同,参数不同,与返回值无关
Override:方法名相同,参数相同,相同的返回值,建立在继承的基础之上
15、什么是单例模式,在程序中如何使用?
单例模式确保一个类只有一个实例 饿汉式单例类
public class Singleton {
private Singleton(){}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
懒汉式单例类
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
if(instance==null)
instance=new Singleton();
return instance;
}
}
16、Servlet生命周期?
加载和实例化
初始化init()
请求处理service()
服务终止destroy()
17、spring中IOC与AOP的含义?
IOC:控制反转,是一种设计模式,一层含义控制权的转移,由传统的在程序中控制依赖转移到由容器来控制,第二层是依赖注入将互相依赖的对象分离,在spring配置文件中描述它们的依赖关心,它们的依赖关系只是在使用的时候才建立
AOP:面向切面,是一种编程思想,oop的延续,将系统中非核心的业务提取出来,进行单独的处理,比如事务、日志和安全等
Spring的AOP和IOC都是为了解决系统代码耦合度过高的问题,使用代码重用性高,易于维护,不过AOP和IOC并不是spring中特有的,只是spring把它们应用的更灵活方便。
18、hibernate与JDBC的区别?
相同点:
1>两者都是JAVA的数据库操作中间件。
2>两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。
3>两者都可以对数据库的更新操作进行显式的事务处理。
不同点:
1>使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言
2>操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。3>数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。
19、struts中的标签库有几种,分别是?
有5种标签,分别是:bean标签库、html标签库、logic标签库、tiles标签库nested标签库
20、Error与Exception有什么区别?
Error表示系统级的错误和程序不必处理的异常,Exception表示需要捕捉或者需要程序进行处理的异常。
21、Collection和Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作
22、GC是什么?为什么要有GC?(基础)。
GC是垃圾收集器。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
23、启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
24、&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
25、heap和stack有什么区别。
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方
式进行处理。
堆是栈的一个组成元素
26、List, Set, Map是否继承自Collection接口?
List,Set是,Map不是
27、MVC的各个部分都有那些技术来实现?如何实现?
MVC 是Model-View-Controller的简写。“Model” 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),“View” 是应用的表示面(由JSP页面产生),“Controller” 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
28、Static Nested Class 和 Inner Class的不同。
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
29、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类
(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数
30、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
JSP 是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑
31、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。
32、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
33、JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file=“included.htm” %>
第三篇:Java上机实验报告
Homework3实验报告
一、实验目的与要求
1、掌握Java中类和接口的基本知识;
2、继承的基本知识;
3、集合的基本操作
二、实验内容 1.PIMCollection 类
创建一个可以管理PIMEntities实体的集合,该类实现了Collection接口,且必须实现了以下方法:(1).getNotes();返回PIMCollection中所有的PIMNote项,如果不包含PIMNote项,则返回一个空集合
(2).getTodos();返回集合PIMCollection中所有的PIMTodo项,如果不包含PIMTodo项,则返回一个空集合
(3).getAppointment();返回集合PIMCollection中所有的PIMAppointment项,如果不包含PIMAppointment项。则返回一个空集合(4).getContacts();返回结合PIMCollection中所有的PIMContact项,如果不包含PIMContact项,则返回一个空集合
(5).getItemsForDate(Date d);返回集合PIMCollection中所有与d匹配的PIMEntities,如果没有匹配d的项,则返回一个空集合
(只有PIMTodo和PIMAppointment项,因为PIMNote和PIMContact跟日期没有关系)。
2.TestPIMCollection类(自己的测试类)
向PIMCollection集合类中加入了一些PIMEntity实体类,并用PIMCollection类中实现的方法分别筛选出了其中的PIMNote、PIMTodo、PIMAppointment、PIMContact、符合指定日期d的集合并打印输出。
三、实验器材
计算机+windows操作系统+eclipse
四、实验步骤
1.程序源代码(压缩在文件夹里)2.编译执行程序 3.记录执行结果
五、实验结果
1.TestPIMCollection的测试代码:
2.程序的执行结果:
如图所示:程序分别输出了Todo、Note、Appointment、Contact、以及匹配指定日期的结合的结果。
六、实验小结
1、熟悉了Java集合的基本内容和操作,也包括了泛型的一些知识。
2、通过这个实验巩固了java的基础知识:类和接口的有关知识,继承的应用。
3、掌握了在eclipse下编译执行Java程序的知识。
4、通过几次的编程,熟悉了java的编程规则。
5、综合应用所学知识完成java程序的分析、设计、调试和总结,为以后编写更复杂的java程序打下了很好的基础。
第四篇:java上机实验
1、实验一:多线程程序设计:炮打飞机
实验目的:学会使用多线程进行并发程序设计
实验内容:编写一个应用程序模拟大炮打飞机。在GUI界面上,飞机水平飞行,用界面上的按钮控制大炮的运行方向(如向左,向右,向上,向下)。当炮弹碰着飞机后,飞机坠落。
2、实验二:数据库编程:书目信息管理
实验目的:掌握数据库编程技术。能正确连接数据库,能对数据库中信息进行查询、插
入、删除、修改。
实验内容:在数据库中创建一张书目信息表,包括书名、作者、出版社、出版日期、书
号、价格字段。设计一个GUI界面进行书目管理。在该界面上有四个选项卡,分别是查询、插入、删除、修改。点击查询选项卡,出现的界面上有书名、作者、出版社、书号四个文本框,一个按钮和一个只读文本区。文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的“查询”按钮,可以在界面下方的文本区中显示出符合条件的书目详细信息。点击插入选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。在文本框中输入信息后,点击“插入”按钮,该书目信息插入数据库表中。点击删除选项卡,出现的界面上有书名文本框和一个按钮,输入书名后点击“删除”按钮,该书目信息从数据库表中删除。点击修改选项卡,出现的界面上有书名、作者、出版社、出版日期、书号、价格文本框,一个按钮。输入的书名必须是已存在的,否则会弹出消息框显示出错信息。输入信息后,点击“修改”按钮,数据库表中的相应书目信息被修改为新值。
3、实验三:Applet编程:鸭子的移动
实验目的:掌握Applet程序设计的方法,学会在Applet中绘制图片,能采用双缓冲技术进行图片绘制,会在Applet中采用多线程进行动画显示。能在Applet中实现动画的平滑显示,避免闪烁现象。
实验内容:在Applet窗口中显示一只鸭子图片,要求这只鸭子以每秒100帧的速率水平移动,移到窗口边界再返回移动。在窗口中点击鼠标,鸭子停止移动;再次点击鼠标,鸭子恢复移动。
4、实验四:网络编程:聊天室的实现
实验目的:会编写客户端和服务器程序实现C/S模式下的通信,会使用多线程进行网络编程。
实验内容:编写一个聊天室程序:客户端界面请自行设计,可使其具有个性化特征; 可在实现基本的聊天室功能的基础上添加个性化的功能。
第五篇:java程序员面试题
Java部分:
1.GC是什么? 为什么要有GC?(基础)
2.给我一个你最常见到的runtime exception。
3.编程题: 用最有效率的方法算出2乘以8等於几?
4.编程题: 写一个Singleton出来。
5.面向对象的三个基本特征
6.编一段代码,实现在控制台输入一组数字后,排序后在控制台输出;
7.列出一些控制流程的方法;
8.编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入“END”为止,让你写出客户端的程序;
9.抽象类与接口?
10.实现从文件中一次读出一个字符的操作
数据库部分
1.存储过程和函数的区别
2.什么是事务?
3.游标的作用?如何知道游标已经到了最后?
4.触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
5.试编写一个存储过程,实现对用户登录的验证。
6.有数据库表,表名为USER,字段为:ID,NAME,PASSWD,PHONE,AGE,其中ID为主键,数据类型均为字符型
问题一:编写创建该表的SQL语句。
问题二:分别编写增、删、改,这3条基本SQL语句
问题三:编写查找NAME包含‘张’的用户信息,并按年龄排序
XML部分
7.xml有哪些解析技术?区别是什么?
8.你在项目中用到了xml技术的哪些方面?如何实现的?
JDBC 部分
9.Class.forName的作用?为什么要用?
10.编程题,编写使用JDBC连Oracle的程序,并实现数据查询功能,表名和字段由答题者自
己定义。
Javascript 部分
11.Javascript中有哪些常用对象
12.如何使用javascript操纵html对象
Html 部分
13.编写一个基本的html页面,页面中包含一个用户登录的表单
AJAX部分
14.试描述实现一个最基本的AJAX操作所需要的程序结构,不同部分需要使用什么程序对
象。
15.你使用AJAX的经验,和实际应用的功能模块。
Jsp、servlet 部分
16.jsp有哪些内置对象及方法?作用分别是什么?
17.jsp有哪些动作?作用分别是什么?
18.JSP中动态INCLUDE与静态INCLUDE的区别?
19.两种跳转方式分别是什么?有什么区别?
20.说一说Servlet的生命周期?
21.JSP的常用指令
22.什么情况下调用doGet()和doPost()?
23.如何现实servlet的单线程模式
24.servlet的配置
25.四种会话跟踪技术
26.应用服务器有那些