java笔试题

更新时间:2024-04-10 22:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1、 Hashtable和HashMap的区别;String和StringBuffer的区别

①HashMap是Hashtable的轻量级实现,他们都完成了Map接口,主要区别在于 HashMap允许空键值, 而Hashtable不允许,否则会出现空指针异常。由于非线程安全,效率上可能高于Hashtable。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。可以通过Map m = Collections.synchronizedMap(new HashMap(...));完成线程的同步。

②String的长度是可变的。StringBuffer的长度是不可变的。如果对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

2、 关键字synchronized含义及用法,含义;Thread.sleep()和Object.wait()方法的区别 ①锁定调用这个同步方法的对象。当一个对象在不同的线程中执行这个同步方法时,它们之间会形成互斥,达到同步的效果。

②sleep()方法使线程暂停执行指定时间,进入Blocked状态,给其它线程执行机会,但是监控状态依然保持,到时后会自动恢复,调用sleep方法不会释放对象锁。

wait()将会使本线程放弃对象锁,进入等待此对象的等待池,只有调用nofity()或者notifyAll()或者wart()时间到后才会进入对象锁池,然后获得对象锁后,进入就绪状态,再次获得处理器后执行。 3、 抽象类和接口的区别

(1)接口也是一种特殊的抽象类,接口的关键字为Interface,抽象类的关键字为class (2)接口可以多继承,抽象类只能单一继承

(3)接口中的属性都是public stativ final,但是抽象类可以不是 (4)接口中没有构造方法,抽象类中有构造,但是不能new (5)接口中的所有方法都是public abstract的,抽象类中的不是 接口定规范:可以定义框架的规范性;

接口具有强制性:子类只能按着接口定义的规范来写 4、 写出如下代码的执行结果

public class A {

public static void main(String[] args) { }

private void test() throws Exception{

try{

trace(“111”);

throw new NullPointerException(\); try {

new A().test(); } catch (Exception e) { trace(\); }finally{

trace(\); }

}catch(RuntimeException e){

}

}

trace(\);

}catch(Exception e){ trace(\); }finally{ }

trace(\);

public static void trace(String message){ }

System.out.println(message);

此程序的运行结果是 111 222 444 666

5、 HTTP/GET和HTTP/POST方法的区别

⑴Post传输数据时,不需要在URL中显示出来,比较安全。而Get方法要在URL中显示,不安全。

⑵Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约2k字节.

⑶Post是将数据传送到服务器端,Get是从服务器端取得数据. Post的信息作为http请求的内容,而Get是在Http头部传输的。

6、 XML文档常用的解析方法,解析方法的区别

DOM SAX

DOM:处理大型文件时其性能下降得非常厉害,这个问题是由DOM的数据结构所造成的,这结构占用的内存较多,而且DOM必须在解析文件之前把整个文档载入内存,适合对XML的随机访问。

SAX:是驱动型的XML解析方法。它顺序读取XML文件,不需要一次全部装载整个文件,当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。 7、 SOAP、WSDL的含义

①简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被

设计成在 WEB 上交换结构化的和固化的信息。

②是用来描述Web服务和说明如何与Web服务通信的XML语言。

8、 写出JAVA基于TCP协议应用的步骤,即客户端服务器应用

Server端new 一个server socket(port),调用socket对象accept()方法,取Client端网

络流,处理流,交互,关闭流。Client端new 一个Socket(ip,port)用socket对象取网络流,处理流,交互,关闭流。

9、 写面向对象设计的基本原则 (三个原则分别是SRP、OCP、DIP)

①一个类应该有且仅有一个职责,所谓一个类的职责是指引起该类变化的原因,如果一个类具有一个以上的职责,那么就会有多个不同的原因引起该类变化,其

实就是耦合了多个互不相关的职责,就会降低这个类的内聚性。

②开-闭原则,一个软件实体应当对扩展开放,对修改关闭.也就是说,我们在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,应当可以在不必修改源代码的情况下改变这个模块的行为. ③依赖倒转原则讲的是:要依赖于抽象,不要依赖于具体。要针对接口编程,不要针对实现编程。 10、

MVC的含义

MVC是一个设计模式。Model代表应用业务逻辑,又分为数据模型和行为模型:呈现对DB的查询;计算业务的处理过程;处理请求(好处:封装了表现层的数据和行为)。通过JavaBean实现,View代表应用表现层,由JSP页面产生,Controller是控制层,处理过程控制,一般是servlet或者struts中的action。通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,这些组件可以进行交互和重用。 11、 IOC、AOP的含义及应用

IOC:(inversion of control)控制反转,组件和组件之间的关系以及创建不需要组

件自己来管理,而是反转给IOC容器来管理,由IOC容器来实例化组件和装配组件,实例化组件通过一个通用的工厂来实现;装配组件由配置文件来解决。

AOP:(aspect oriented programing)面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。 把围绕着业务逻辑之外的其他横切代码模块化后织入到业务逻辑代码中。 12、

工厂模式、单例模式、适配器模式、观察者模式(Observer)、模版模式

(TempletMethod)、门面模式(Facade)的概念和使用场合,并分别绘制出UML类图

工厂模式:在应用程序预见不到自己要创建的对象类型时,就会使用工厂解决方案。在这些情况下,可以使用工厂模式作为创建对象的基础,不需要确切地了解将要创建哪些对象。(工厂类具备返回值为“抽象产品”的方法。该方法将根据具体情况返回某种“具体产品”类型的对象。外界只会关联到工厂类和抽象产品类。此模式的意义在于将具体产品的创建逻辑(什么情况下创建,创建什么样的具体产品对象)封装起来,使之对外界是透明的。)

单例模式:单例模式又叫做单态模式或者单件模式.在GOF书中给出的定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

适配器模式:主要解决两个已有接口间的匹配问题。

观察者模式:实现对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

模版模式:模版模式是父类建立骨架,而子类具体实现其方法。它是把不变的行为搬移到了父类,去除了子类重复的代码,它提供了一个很好的代码复用的平台。

门面模式:要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。(解决的问题:随着系统的不断改进和开发,它们会变得越来越复杂,系统会生成大量的类,这使得程序的流程更难被理解)

13、

数据库操作题 用户主表(user)

ID(ID/varchar) 1001 1002 1003 1004 用户子表(user_b) USER表 Name(姓名/varchar) 张三 李四 王五 赵六 USER_B表 ID(ID/varchar) UserId(外建/varchar) Gender(性别/char) AGE(年龄/integer) 2001 1001 M 25 2002 2003 2004

1002 1003 1004 F F M 26 27 28 1、 写出对user表的增、删、改、查操作的SQL语句

①insert into user values(1005,’周杰伦’); ②delete from user where id=1004; ③update user set name=’周杰伦’ where id=1004; ④select id,name from user;

2、 写出得出下结果的查询语句 姓名 张三 李四 王五 赵六 性别 男 女 女 男 年龄 25 25 27 28 select name,gender,age from user,user_b where user.id=user_b.userid;

3、 写出按年龄查询人数的SQL语句

人数 年龄 select age,count(*) 人数from user_b group by age;

14、

数据库操作题

USER表

ID(ID/varchar) NAME(姓名/varchar) 100001 张三 100002 李四 100003 王五 USER_B表 ID(ID/varchar) USERID(外建/varchar) GENDER(性别/char) 200001 100001 M 200002 100002 F 200003 100004 M

AGE(年龄/integer) 25 26 28

写出这两个表的左连接、右连接、全连接、内连接的SQL语句,并写出运行结果 查询列如下: 姓名

性别 年龄 ①左连接select name,gender,age from user left join user_b where user.id=user_b.userid; 姓名 张三 李四 王五 性别 M F NULL 年龄 25 26 NULL ②右连接select name,gender,age from user right join user_b where user.id=user_b.userid; 姓名 张三 李四 NULL 性别 M F M 年龄 25 26 28 ③全连接select name,gender,age from user full join user_b where user.id=user_b.userid 姓名 张三 李四 王五 NULL 性别 M F NULL M 年龄 25 26 NULL 28 ④内连接 selecet name,gender,name from user inner join user_b Where user.id=user_b.userid; 姓名 张三 李四

性别 M F 年龄 25 26

本文来源:https://www.bwwdw.com/article/ugur.html

微信扫码分享

《java笔试题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top