java面试

来源:互联网 发布:德语网络课 编辑:程序博客网 时间:2024/06/08 19:54

一、Java部分(共40分)

1、 说说OverloadOverride的区别。Overloaded的方法是否可以改变返回值的类型?(5分)

Overload是覆盖,子类的方法跟父类方法名字一样,子类的方法把父类的覆盖了。 

Override是重载,不同的方法参数、返回值不一样,紧紧返回值不一样的两个函数不叫重载,编译不会通过的。

Overloaded的方法是可以改变返回值的类型

2、 数组有没有length()这个方法? String有没有length()这个方法?5分)

数组没有length()这个方法,有length的属性。Stringlength()这个方法。

3、 说明&&&的区别5分)

&是位运算符。&&是布尔逻辑运算符。

4、 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢是用==还是equals()? 它们有何区别?(10)

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

equals()==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

5、 写出一个函数,实现输入字符串的倒置(带参数,带返回值):(10分)

public class Text {

public String check(String str){

String str1="";

        if (str.equals("")){

            str1=" ";

        }else{

            char[] strChar=str.toCharArray();

            int n=strChar.length;

            char lin;

            for(int i=0;i<n;++i)

                for(int j=0;j<n-1;++j)

                   if(strChar[j]>=strChar[j+1]){                       

                      lin=strChar[j];

                      strChar[j]=strChar[j+1];

                      strChar[j+1]=lin;                       

                   

        for(int i=0;i<n;i++)

          str1 +=strChar[i];

        } 

        return str1;

     }

}

6、 阅读下面一段程序,写出运行结果。(5分)

public class Pass{

static int j=20;

public static void main(String argv[]){

          int i=10;

        Pass p = new Pass();

        p.amethod(i);

        System.out.println(i);    

        System.out.println(j);        

        }

        public void amethod(int x){

        x=x*2;

        j=j*2;

        }

}

结果:10

40

二、数据库部分(共40分)

1、请简述存储过程的优、缺点?(5分)

存储过程的优缺点:

优点: 

1.由于应用程序随着时间推移会不断更改,增删功能,TSQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。 

2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划-- 实际上是 Microsoft SQL Server为在存储过程中获取由 T-SQL 指定的结果而必须采取的步骤的记录。)缓存改善性能。

.sql server新版本,执行计划已针对所有 T-SQL 批处理进行了缓存,而不管它们是否在存储过程中,所以没比较优势了。 

3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。 

4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用 (RPC) 处理服务器上的存储过程而提高性能。RPC 封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。 

5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。 

6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。 

7.更好的版本控制,通过使用 Microsoft Visual SourceSafe 或某个其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过程。 

8.增强安全性:

a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问; 

b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数); 

cSqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。 

 

缺点: 

1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。 

2.可移植性差 

由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。

2、现有一销售表,它们结构如下:

id int (标识号)

codno char(7) (商品编码)

codname varchar(30) (商品名称)

spec varchar(20) (商品规格)

price numeric(10,2) (商品单价)

sellnum int (销售数量)

deptno int (售出分店编码)

selldate datetime (销售时间)

要求:写出查询销售时间段在2006-01-012006-01-31之间,各个分店的总销售额。(5分)

 

SELECT deptno,SUM(sellnum*price)  AS  allsell   FROM  sell  

WHERE  selldate>=’2006-01-01’AND selldate<=’2006-01-3’

GROUP BY deptno 

 

3、现有一销售表与分店信息表,销售表、分店信息表结构如下:

销售表(sell)

id int (标识号)

codno char(7) (商品编码)

codname varchar(30) (商品名称)

spec varchar(20) (商品规格)

price numeric(10,2) (商品单价)

sellnum int (销售数量)

deptno int (售出分店编码)

selldate datetime (销售时间)

分店信息表(dept)

id int (标识号)

deptname varchar(30) (销售分店名称)

deptaddress varchar(50) (分店地址)

要求:实现各个分店的销售明细查询,要求使用外连接进行多表查询。(10分)

 

SELECT a.codno,a.codname,a.spec,a.price,a.sellnum,a.deptno

,b.deptname

FROM sell  a LEFT JOIN dept  b ON a. deptno=b.id

 

4、在MSSQL2000数据库中,使用标准SQL语句建立如下表格:(10分)

部门信息表(BMXXB

字段名称

数据类型

长度

是否为空

部门编码(BMBM_PK)(主键)

uniqueidentifier

16

 

部门编号(BMBH

varchar

20

上级部门编码(SJBMBM_PK

uniqueidentifier

16

部门名称(BMMC

varchar

40

部门级别(BMJB

varchar

1

备注(BZ

varchar

100

有效标志(YXBZ

varchar

1

 

create table BMXXB (

   BMBM_PK              uniqueidentifier     not null,

   BMBH                 varchar(20)          null,

   SJBMBM_PK            uniqueidentifier     null,

   BMMC                 varchar(40)          null,

   BMJB                 varchar(1)           null,

   BZ                   varchar(100)         null,

   YXBZ                 varchar(1)           null,

   constraint PK_BMXXB primary key  (BMBM_PK)

)

5、编写存储过程,实现向题4中的部门信息表添加记录。(10分)

 

create  procedure [dbo].[SP_BMXXB]

 @BMBM_PK varchar(40),@BMBH varchar(40),@SJBMBM_PK  varchar(40)

,@BMMC varchar(40),@BMJB varchar(40),@BZ varchar(100)

,@YXBZ varchar(40)

as

begin

  insert into CK_CKJLB(BMBM_PK,BMBH,SJBMBM_PK,BMMC,BMJB,BZ,YXBZ) 

   values(@BMBM_PK,@BMBH,@SJBMBM_PK,@BMMC,@BMJB,@BZ,@YXBZ)  

   return(@@Error)

 end 

 

三、软件工程部分(20)

1.请说出一个软件项目开发主要包括那几个阶段,各阶段的工作任务是什么?(10)

问题定义,可行性研究,需求分析,总体设计,详细设计,编码与单元测试,综合测试,软件维护

问题定义阶段必须回答的关键问题:“要解决的问题是什么? 通过问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。 

可行性研究这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。

需求分析准确地确定为了解决这个问题,目标系统必须做什么,主要是确定目标系统必须具备哪些功能。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法描述表示系统的逻辑模型。

总体设计必须回答的关键问题是:概括地说,应该如何解决这个问题?首先,应该考虑几种可能的解决方案系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益,还应该在充分权衡各种方案的利弊的基础上,推荐一个较好的系统 (最佳方案),并且制定实现所推荐的系统的详细计划。其次,就是设计软件的结构,也就是确定程序由哪些模块组成以及模块间的关系。通常用层次图或结构图描绘软件的结构。

详细设计关键问题:应该怎样具体地实现这个系统呢? 这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。

编码和单元测试关键任务是写出正确的容易理解、容易维护的程序模块。

综合测试关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。

软件维护关键任务是通过各种必要的维护活动使系统持久地满足用户的需要通常有四类维护活动:改正性维护适应性维护完善性维护预防性维护

 

2.谈谈如何在当前的工作岗位上,适应项目管理的需要?(10)

首先是要掌握项目管理流程以及软件开发流程的没个阶段。项目管理围绕整个项目的全过程,对项目的立项授权、需求分析、软硬件的评估选择,以及系统的实施进行全面的管理和控制。

其次是提高个人的能力,以便在项目管理中能够快速的完成任务。努力学习新的技术和知识,使自己不落后。

 

原创粉丝点击