1.(口述题)请简述迅雷、BT等p2p下载软件的实现原理。如何资源分布。解释:A想来B家做客,但是遭到了B的管家NATB的拒绝,理由是:我从来没有听我家B提过你的名字,这时A找到了A,B都认识的朋友server,要求server给B报一个信,让B去跟管家说A是我的朋友,于是,B跟管家NATB说,A是我认识的朋友,这样A的访问请求就不会再被管家NATB所拒绝了.简而言之,UDP打洞就是一个通过server保存下来的地址使得彼此之间能够直接通信的过程,server只管帮助建立连接,在建立间接之后就不再介入了.2.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么解释:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。3.A=10,b=20在不使用第三变量使两值互换解释:a=10,b=8a=a-bb=b+aa=b-a4.override与重载的区别解释:override是把继承于父类的方法给覆盖掉重载是同一个函数名接受不同类型、个数的参数,完成不同的功能,调用起来方便5.抽象类跟接口的区别解释:抽象类可以有非抽象方法,接口中只能有抽象方法。接口可以实现多继承。6.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?解释:inally里的代码会执行,在return之前执行7.实现一个冒泡排序解释:ArrayListIntegerlist=newArrayListInteger();list.add(76);list.add(4);list.add(786);list.add(43);list.add(21);list.add(432);list.add(10);for(inti=0;ilist.size()-1;i++){for(intj=1;jlist.size()-i;j++){Integera;if((list.get(j-1)).compareTo(list.get(j))0){//比较两个整数的大小a=list.get(j-1);list.set((j-1),list.get(j));list.set(j,a);}}}for(Integers:list){System.out.println(s.intValue());}8.查出总成绩大于100分的学生信息1ZhangSql602liC#503wangJava704zhangJava555liSql606liJava65解释:select*fromtablewhereidin(selectname,sum(gade)astotalfromtablegroupbynamehavingtotal100)Where在分组之前过滤数据,条件不能包含聚组函数,having在分组之后过滤数据,条件中经常包含聚组函数。带聚合函数的select中只能有聚合函数和分组列。9.有一个学生表,有学生姓名,语文成绩,数学成绩。请写出查询语文成绩和数学成绩在60分以上的学生信息,并能查出语文成绩和数学成绩之和大于130分的学生信息,请用一句SQL拼写出来。解释:select*fromtablewhereyuwen60andshuxue60andyuwen+shuxue13010.&和&&的区别?解释:计算p1&&p2时,Java先计算p1,若p1为true再计算p2;若p1为false,则不再计算P211.什么是事务?什么是锁?解释:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。锁是在多用户环境中对数据的访问的限制。SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。12.什么是索引,有什么优点?解释:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。13.视图是什么?游标是什么?解释:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作,视图通常是一个或多个表的行或列的子集,视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改、15.什么是存储过程?有什么优点?解释:存储过程是一组予编译的SQL语句,它的优点有1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。16.什么是触发器?解释:触发器是一种特殊类型的存储过程,出发器主要通过事件触发而被执行的,触发器的优点:1.强化约束,触发器能够提供比CHECK约束。2.跟踪变化,触发器可以跟踪数据库内的操作,从而不允许未经允许许可的更新和变化。3.联级运算,比如某个表上的触发器中包含对另一个表的数据操作,而该操作又导致该表上的触发器被触发。17.销售主表(订单号,业务员,客户名称,合同日期)销售子表(订单号,产品编号,销售数量,销售金额)产品表(产品编号,产品名称)请根据以下条件,写出分别sql语句1.统计合同日期为2006年10月的各业务员的销售数量和销售金额2.统计合同日期为2006年10月的各产品的销售数量和销售金额3.计算业务员‘张三’销售的产品为’维生素b‘的平均价格18.什么叫做sql注入,如何防止?请那个举例说明。解释:sql注入,就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊代码,获取服务端信息。例如:“select*fromuserswhereusername=‘”+v_name+“’andpwd=‘”+v_pwd+“’”;If(obj!=null){验证通过}用户名随便输入,密码输入:aaa'or'1'='1如何防止:PreparedStatement19.请写出javascript弹出确认框的函数。解释:confirm(‘是否删除’)20.你以为大数据量下的列表显示分页应该如何处理?请叙述一下你的方法解释:typerefCursorTypeisREFCURSOR;--游标类型定义,用于返回数据集proceduresp_Page(p_PageSizeint,--每页记录数p_PageNoint,--当前页码,从1开始p_SqlSelectvarchar2,--查询语句,含排序部分p_OutRecordCountoutint,--返回总记录数p_OutCursoroutrefCursorType)asv_sqlvarchar2(3000);v_countint;v_heiRownumint;v_lowRownumint;begin----取记录总数v_sql:='selectcount(*)from('||p_SqlSelect||')';executeimmediatev_sqlintov_count;p_OutRecordCount:=v_count;----执行分页查询v_heiRownum:=p_PageNo*p_PageSize;v_lowRownum:=v_heiRownum-p_PageSize+1;v_sql:='SELECT*FROM(SELECTA.*,rownumrnFROM('||p_SqlSelect||')AWHERErownum='||to_char(v_heiRownum)||')BWHERErn='||to_char(v_lowRownum);--注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rnOPENp_OutCursorFORv_sql;endsp_Page;/******************************************************************功能描述:大数据量分页通用存储过程(重载1,推荐使用)*创建人:夏春涛*创建时间:2005-07-01*****************************************************************/proceduresp_Page(p_PageSizeint,--每页记录数p_PageNoint,--当前页码,从1开始p_SqlSelectvarchar2,--查询语句,含排序部分p_SqlCountvarchar2,--获取记录总数的查询语句p_OutRecordCountoutint,--返回总记录数p_OutCursoroutrefCursorType)asv_sqlvarchar2(3000);v_countint;v_heiRownumint;v_lowRownumint;begin----取记录总数executeimmediatep_SqlCountintov_count;p_OutRecordCount:=v_count;----执行分页查询v_heiRownum:=p_PageNo*p_PageSize;v_lowRownum:=v_heiRownum-p_PageSize+1;v_sql:='SELECT*FROM(SELECTA.*,rownumrnFROM('||p_SqlSelect||')AWHERErownum='||to_char(v_heiRownum)||')BWHERErn='||to_char(v_lowRownum);--注意对rownum别名的使用,第一次直接用rownum,第二次一定要用别名rnOPENp_OutCursorFORv_sql;endsp_Page;/******************************************************************功能描述:大数据量分页通用存储过程(重载2)*创建人:夏春涛*创建时间:2005-07-01*****************************************************************/proceduresp_Page(p_PageSizeint,--每页记录数p_PageNoint,--当前页码,从1开始p_SqlSelectvarchar2,--查询语句,含排序部分p_OutCursoroutrefCursorType)asv_sqlvarchar2(3000);--v_countint;v_heiRownumint;v_lowRownumint;begin/*----取记录总数v_sql:='selectcount(*)from('||p_SqlSelect||')';executeimmediatev_sqlintov_count;p_OutRecordCount:=v_count;*/----执行分页查询v_heiRownum:=p_PageNo*p_PageSize;v_lowRownum:=v_heiRownum-p_PageSize+1;v_sql:='SELECT*FROM