当前位置:文档之家› Java软件开发工程师笔试题(答案)

Java软件开发工程师笔试题(答案)

Java软件开发工程师笔试题(答案)Java工程师笔试题1,填空(此大题10项,每空1分,共20分)1。

Java语言的三个特性是继承性、封装性和多态性2.在Java中,char 使用_ _ _ _ Unicode _ _ _ _ _ _编码方案,因此中文字符和英文字符都占用__2__字节的内存空间3。

当方法由_ _定义时,形参指的是参数行,当方法由_ _调用时,实际参数是传入的变量或值。

4。

JSP内置对象,应用程序对象代表应用程序上下文,它允许JSP 页面与包含在同一应用程序中的任何网络组件共享信息,而会话对象是特定于每个客户的5。

如果你想把一个对象写到一个流中,这个类必须实现Seralizable 接口6。

在程序中实现多线程有两种方法:继承线程类和实现_ _ Runable _ interface7。

在多线程中,线程的相对优先级可以通过调用相应的setPriority()方法来修改8。

面向对象编程的五个设计原则是单一责任、开放和封闭、里氏尺度替换、依赖倒置、接口分离。

通过Ajax,客户端获取的数据主要有两种类型:文本类型和xml 10。

Socket通常也叫socket,用来描述__ ip和_ _ interface2,多项选择题(这个大题20项,每项2分,共40分)1。

在JA V A中,如果父类中的一些方法不包含任何逻辑并且需要被子类重写,那么父类的这些方法应该使用()关键字来声明:a)final b)static c)abstract d)void2。

在JA V A中,已经定义了两个接口b和c。

要定义实现这两个接口的类,下面的语句是正确的()a)接口aextend b,c b)接口a implements b,c c)类a mplements b,c d)类a mplements b,实现c3。

可以在JA V A接口()中定义A)静态方法b)常量c)构造函数d)抽象方法4。

假设A有构造函数A (int a),那么在A类的其他构造函数中调用的构造函数和语句格式应该是()a)a(x)b)this . a(x)c)this(x)d)super(x)5。

如果x = 1,y = 2,z = 3,表达式y+= z-/++x的值为()a)3b)3.5°c)4d)5 6。

下列关于继承的陈述中哪一个是正确的?( )a)子类只继承父类的公共方法和属性:b)子类继承父类的非私有属性和方法:C)子类继承父类的方法,但不继承父类的属性:d)子类继承所有的属性和方法。

7。

在爪哇。

使用JDBC时对于对同一个SQL语句的多次调用,使用()通常会提高效率a)语句b)可调用语句c)准备语句d)prarmeters语句8。

以下方法无法控制Servlet的生命周期:a)服务b)销毁c) dopost d) init9。

可以分配给字节变量的值的范围是()0 ~ 65535 b) (-128) ~ 127 c) (-32,768) ~ 32,767 d) (-256) ~ 255在10.java语言中,整型数据占用多少位?( )A) 32 b) 64 c) 16 d) 20 11。

servletcontext对象是如何创建的?( )A)由Servlet容器创建。

对于每个HTTP请求,Servlet容器创建一个Servlet上下文对象b)Java web应用程序本身创建一个Servlet上下文对象c)Servlet容器为每个JaveWeb应用程序创建,在启动时,Servlet容器将创建一个Servlet上下文对象12。

JSP中不同用户之间不共享数据的方法是()a)通过cookie B)通过文件系统C)通过数据库d)通过服务上下文对象13。

以下哪一项不是集合的子界面?( )a)列表B)集合C)映射D)排序集合14。

创建套接字的正确语句是()A) Socket a =新Soeket(80): B) Socket b =新Socket(\c)server Socket c = newsocket(80)d)server Socket d = newsocket(\ 15)。

以下陈述是正确的()A)具有页面范围的对象存在于网络应用程序的每个JSP中。

b)指令指定与特定JSP请求无关的全局信息C)当JSP容器遇到开始自定义标记和结束自定义标记时,分别调用doInitBody方法和doAfterBody方法d)该动作在翻译过程中仅被处理一次。

16。

为了区分重载多态中不同的同名方法,需求: ()A)不同的参数名称B)不同形式的参数列表C)不同类型的返回值d)选项A、B、C都是17。

下面是调用父类构造函数的子类的描述。

它是正确的: ()a)子类定义它们自己的构造函数。

b)子类必须用参数C)调用父类的构造函数。

如果子类的构造函数没有通过Super调用父类的构造函数,子类将首先调用子类的构造函数,然后调用没有参数的父类的构造函数D)创建子类对象时,首先调用子类的构造函数,然后调用父类18的构造函数。

在Java中,它是()a)垃圾收集器b)虚拟机c)编译器d)多线程机制19。

java程序按照环境()的顺序从上到下运行A)操作系统,Java程序,jvm,硬件B)jvm,Java程序,硬件,操作系统C) java程序,jvm,操作系统,硬件D) java程序,操作系统,JVM,硬件20。

对于从Employee表中选择的以下代码段,请确定缺少的代码行( )连接con = null:Class。

ForName(\con = Drivermanager . GetConnection(\ ResultSet RS = stat . ExecuteQuery(\ A)语句stat = CreateStatement();语句状态= con . CreateStatement();c)PreparedStatement stat = con . CreateStatement():D)PreparedStatement stat = CreatePreparedStatement();3、问答(本大题6项,共40分)1。

请说明数组列表、矢量列表、链表的存储性能和特点(6分)2。

什么是单例模式?请在下面写一个单例模式类,并支持多线程调用(6分)3。

请描述一下JVM加载类文件的机制。

(6分)4。

请谈谈你对SQL注入的理解,并给出你知道的防止SQL注入的方法。

(6分)5。

请谈谈对Hibernate的理解,并简要描述Hibernate的一级缓存和二级缓存(8分)6.请写下你知道的排序方法,并用Java语言写下其中一种(8分)3,简答题(参考答案)1。

数组列表和向量都使用数组来存储数据。

此数组中的元素数量大于实际存储的数据,因此可以添加和插入元素。

它们都允许元素直接通过序列号进行索引,但是插入元素涉及内存操作,如数组元素移动。

因此,索引数据很快,插入数据很慢。

由于向量的同步方法(线程安全),向量的性能通常比数组列表差。

LinkedList使用双链表来存储数据,并且需要向前或向后遍历序列号索引数据。

但是,插入数据只需要记录该项目的前后项,所以插入速度更快。

2。

当一个类对象被创建时,不管它被创建了多少次,在内存中只存储了类对象的一个副本,这是单例模式支持多线程调用,考虑线程安全,只需要锁定公共类Singleton {私有静态Singleton实例= nullprivate Singleton(){ }private静态同步void syncInit(){ if(实例= = null){ instance = new Singleton();} }公共静态Singleton GetInstance(){ if(instance = = null){ SyncInit();}返回实例;}}3。

在JVM中加载类是由类加载器及其子类实现的。

Java类加载器是一个重要的Java运行时系统组件它负责在运行时查找和加载类文件的类4.解决方案:答:使用Javascript来检查客户端b .程序判断c .使用PreparedStatement连接数据库。

(参数化)使用框架技术5。

Hibernate是一个开源的对象关系映射框架,它用非常轻量级的对象封装了JDBC,允许Java程序员按照自己的意愿用对象编程思想来操作数据库。

Hibernate可以在任何使用JDBC的场合使用,不仅在Java客户端程序中,而且在Servlet/JSP网络应用程序中也是如此级缓存是会话级缓存。

会话执行查询操作,并将该操作的结果放在一级缓存中。

如果会话(必须是同一个会话)在短时间内再次执行相同的操作,hibernate 将直接从1级缓存中获取数据,而不是连接到数据库。

二级缓存是会话工厂级缓存。

顾名思义,查询时,查询结果将缓存在二级缓存中。

如果由同一个会话Factory创建的会话执行相同的操作,hibernate将从二级缓存获取结果,而不是连接到数据库。

6。

插入排序、希尔排序、气泡排序、快速排序、直接排序、合并排序。

以快速排序为例:1。

公共类快速排序{2.3。

INTA·[]= { 49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51 };4。

公共快速排序(){ 5。

快速(a);6。

对于(int I = 0;i10。

公共整数中间(整数[)列表,整数低,整数高){ 11。

int tmp =列表[低];//将阵列的第一个作为中心轴12。

而(低13 .而(低17。

列出[低]=列出[高];//小于中心轴的记录被移动到下端18。

而(低22 .列表[高] =列表[低];//大于中心轴的记录移动到高端23。

} 24。

列表[低]= tmp;//轴记录到25结束。

返回低位;//返回中心轴26的位置。

} 27.28 . public void _ quick sort(int[)list,intlow,int high) { 29。

if(低30。

中间值=中间值(列表,低,高);//将列表数组分成两个31。

_ quicksort(列表,低,中-1);//递归排序低位表32。

_ quicksort(列表,中间+1,高);//递归地按33对高阶表排序。

34岁。

} 35.36.publicvoid quick(国际[)a2){37。

如果(a2.length > 0) {//检查数组是否为空38。

_快速排序(a2,0,a2 . length-1);39.} 40。

}41。

}。

相关主题