2004年7月16日

再出一道题

数据表T,数据表中有字段f1, f2, f3, f4, f5, f6, f7。

现有条件:
f1 > f2
f2 > f3
f1 > f4
f4 > f2
f5 > f1
f6 > f7

查询数据据表T中符合上述6个条件中任意5个条件的数据。请问如何编写SQL?

这道题目是根据以前在水木清华BBS一个同学的提问经过整理而成的,大约是三年前的事情,现在水木清华BBS数据库版已经找不到我的回复了。

这道题和上一道题相比,能做出来的人更少,大家可以多加思考,挑战一下自己。

 

posted @ 2004-07-16 22:14 温少 阅读(860) 评论(3) 编辑

一个ASP .NET的技巧

看到“吹雪”文章中提到一个巧用Literal控件的技巧。
http://www.cnblogs.com/Anders/archive/2004/07/16/24943.aspx


以前还写Web应用程序的时候,也经常使用这种办法。

会这种办法,说明“吹雪”同学也经开始深入了解ASP .NET了。


我要介绍一个很酷的技巧,如下:

在ShowModuleDialog弹出的窗口中,包一个IFrame,IFrame的URL指向你需要使用WebForm的页面,使得其支持自提交。

posted @ 2004-07-16 19:49 温少 阅读(1328) 评论(11) 编辑

看流程图,写代码

 这道题,是我自己出的题,看起来很简单,大多数人都不会。考过很多人,包括有多年经验的程序员,也有一些新手,也有应聘者,在10分钟内,给出正确答案的人,不超过20%。题目如下:

看流程图,写代码。

先看例子,其中T表示True,F表示False。
例子1:


这个流程图的代码如下的方式编写:

do {
   A;
}
 while (C);

例2:

例2的代码可以这样写:

while (C)
{
    A;
}


请根据以下流程图,编写代码,不能够使用goto,也不能使用if。

请在10分钟之内完成此题目。

posted @ 2004-07-16 19:33 温少 阅读(5784) 评论(38) 编辑

关于Dictionary元素的遍历

以前我面试别人的时候,我经常会问应聘者,如何在C#中遍历Hashtable中的元素,每次遍历时,需要得到Key和Value。

一直以来,也经常有人问这个问题。包括Java下Map的元素的遍历。我在水木清华的Java版也回答过这个问题。

.NET平台下:
IDictionary dictionary = new Hashtable();
foreach (DictionaryEntry entry in dictionary)
{
    Object key 
= entry.Key;
    Object val 
= entry.Value;
}

Java环境下:
Map map = new HashMap();
Iterator iter 
= map.entrySet().iterator();
while (iter.hasNext()) {
    Map.Entry entry 
= (Map.Entry) iter.next();
    Object key 
= entry.getKey();
    Object val 
= entry.getValue();
}

点评:
.NET环境下,引入了foreach的写法,但是IDictionary和ICollection的GetEnumerator()方法返回的类型是不一样的,这一点,很容易让人迷惑,初学者很多都会写错。如下是初学者常用的写法:
IDictionary dictionary = new Hashtable();
foreach (Object val in dictionary)
{
    
//
}
这是一个地雷,.NET的基础类库和C#在语言的设计(对foreach的支持方式)的相互作用下,产生了这一个地雷,也许也可以称之为缺陷……

Java下,使用起来的方式,有点麻烦,很多初学者,不使用恰当的方法遍历Map,甚至一些写了多年Java程序员都是用比较笨的办法。
Map map = new HashMap();
Iterator iter 
= map.keySet().iterator();
while (iter.hasNext()) {
    Object key 
= iter.next();
    Object val 
= map.get(key);
}
这种方式效率会比较低。

posted @ 2004-07-16 18:59 温少 阅读(9588) 评论(8) 编辑