面试题整理

2014.3.19日整理

1. 创建一张表hack,里面就一个字段NUM,然后用SQL语句从1开始插入到100,怎么写?

(oracle)

答:1. create tablehack (num number)   --建表语句

   2.

    begin

         for i in1 .. 100 loop

         insert intohack (num)values(i);

          end loop;

    end;

    commit;       

  3. select* from hack

2.数据库分页(oracle)

方法一:

select * from (selecta.*,rownum rn from (select * from table_name)a

where rownum<=40 ) where rn>21

1>select * from table_name  不进行翻页的原始查询语句

2>rownum<=40 rn>=21控制分页查询的每页范围

方法二:

select * from (selecta.*,rownum rn from (select * from table_name)

where rn between 21 and 40

第一种方法的效率高,因为在CBO优化模式下,oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。whererownum <=40 可以被oracle推入到内层查询中,这样oracle查询的结果一旦超过了ruwnum限制条件,就终止查询将结果返回。

3.union all 和union的区别

答:1.union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序(按显示的第一个字段进行排序)

    2.unionall对两个结果集进行并集操作,包括重复行,不进行排序

   3.intersect对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序

    4.minus,对两个结果集进行差集操作,不包括重复行,同时进行默认规则的排序

    5.可以在最后一个结果集中指定order by子句改变排序方式

4.webservice相关技术

答:1.XML是webservice平台中表示数据的基本格式。XML与平台好厂商无关。

    2.XSD 是webservice平台的数据类型系统

    3.SOAP是webservice基于的协议

    SOAP是简单对象访问协议,是用于交换XML编码信息的轻量级协议。

    4.WSDL是webservice的描述语言

    5.UDDI是webservice的实现标准

    6.调用RPC与消息传递

5.TCP和UDP的区别

(1)TCP是面向连接传输控制协议,而UDP提供了无连接的数据报服务;

(2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;
(3)也正因为以上特征,UDP具有较好的实时性,工作效率较TCP协议高;
(4)UDP段结构比TCP的段结构简单,因此网络开销也小。

6.ArrayList和LinkedList的区别

答:ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,总的说来可以描述如下: 
    1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
    2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
    3.LinkedList不支持高效的随机元素访问。
    4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间
可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

7.HashTable和HashMap的区别

    HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。 
    1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
    2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
    3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。
    4.HashTable使用Enumeration,HashMap使用Iterator。
以上只是表面的不同,它们的实现也有很大的不同。
    5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
    6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
而HashMap重新计算hash值,而且用与代替求模:
int hash = hash(k);
int i = indexFor(hash, table.length);

                      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值