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