B
blue_morning
Unregistered / Unconfirmed
GUEST, unregistred user!
从学C语言至今16年了,几年前我开始进行技术能力评估时完出了一个骗人的小把戏(为了向一个我很尊敬的人表现自已时想出来的),到昨天终于把最终结果告诉了昨天面谈时一个很不错的小伙。再也不能玩这个小把戏了,我虽然觉得很不爽,但你不妨用它来评价一下自己在C语言某些方面的功底。
假设你是某公司的白盒测试(White Box Testing)人员,对某一可运行的测试版进行测试时看到了以下一段代码:
int a;
a = // 此处为一表达式
// 以下代码为问题的关键部份,以上代码与问题无关
if (a == 5)
return 1;
else
return 0;
当看到这段代码后,请考虑你在10秒以内的反应?
// 请慢慢的滚动你的鼠标,一行一行的看。看得越慢你会觉得越意思的
以下是我在评估中所遇到的各种情况及我对不同的情况的打分:
第一种:没有任何反应 得分:0分
第二种:将代码更改为以下形式 得分:10分
if (5 == a)
return 1;
else
return 0;
第三种:将代码更改为以下形式 得分:30分
return (a = 5 ? 1:0); // 注意:代码反而被你改错了!
第四种:将代码更改为以下形式 得分:40分
return (a == 5 ? 1:0); // 这是以上代码的正确形式!
第五种:将代码更改为以下形式 得分:60分
return (5 == a ? 1:0);
第六种:将代码更改为以下形式 得分:80分
return (a == 5);
第七种:将代码更改为以下形式 得分:85分
return (5 == a);
第八种:将代码更改为以下形式 得分:90分
#ifdef CompilerA // 你已经知道A编译器做为一种特例,将T返回0、F返回-1
return (5 == a) + 1;
#else
return (5 == a);
#endif
小结:
此问题并不代表一个人在C语言上的能力,希望你不以偏带全的来考虑问题。这只是一个小小的玩笑。在与我玩过这个小把戏的人中,90%的人的得分都是0分。在剩余的人中, 80%得分在10至40分之间;15%得分是60分;5%的人的得分是80分或85分。只有一个人得到了90分。
在与此人交流的时候,我又玩了一个小小的阴招,我告诉他将代码写成以下形式:
return (5 == a) + //something
我让他好好的想一想这个something是什么东西,他果然上了我的当。在将20个月一起共事的时间里,我一直没有告诉他是什么。
今天在此也特意向你表示道歉,因为你没有发现这个阴谋。其实你被“+”号误导了。相信你看到这里已经知道答案了,你仍然是我见过的最优秀的C程序员。在后来的日子里,我明确的告诉一些人这是个阴谋,甚至于明确告诉了几十个得到85分的同志“+”是一个阴谋,都没有一个人得出了最终的答案。
代码如下:
return (5 == a) xor (1 == 1);
哈哈,看到这里你一定要大骂我了,“你这是写得哪门子程序呀?是C#吗?”。观众同志,你看出了问题吗?
不错,“xor”分明是PASCAL的操作符,看来我真的是把几门语言混在一起了。有用过C语言异或操作符的吗?请告诉我吧。
其实这又是我的一个小把戏,不过在那十来个我告诉迷底的人中(包括昨天的那个小伙),没有一个指出我的错误。也许真的是给足了我面子,也许对C语言还是有点那个。
我心目中的标准答案: 得分:99分
return (5 == a) ^ (1 == 1);
其实你已经得到这个分数了。有机会我香港给你打工,不知你要不要我?(开玩笑,你知道我家里的情况)。我真的非常怀念与你一起共事的日子,那是我真正写C语言的二年的时间。那五十万行代码也许将是我最大的“程序”。当然也很感谢你让我看了那段日子你让我看了你近三十万行的心血,毕竟我们年龄不一样,我精力要比你充沛的多。并且让我这样一个低学历的人在你面前逞尽了威风,甚至于常常为了一点鸡毛蒜皮的小事与你争吵,有时候还常常把你骂得狗血淋头,真的赶谢你给我“约法三章”以及很多很多的帮助。
真的非常感谢您!!!(下不为例,保证用“你”这个字)那次意外让我失去了与你联系的方式。我真的希望你能看到我的这篇贴子。也希望你不会再责备那个司机了,你走以后他一直很内疚,那次他留了二个小时的Buffer,但堵车实在太历害了。
观众同志,你是不是真的看得很慢呀,要是你真的看的很慢,要是你每看到下一个都觉得比上一个写得好,甚至是想了一想才有这个感受(也许想了好久,也许根本不知道为什么),那么你的C语言的水平真的是很那个.....(谁在乱扔东西)
好了。这个小把戏不代表一切,但真的有那么一点意思。只是想轻松一下,刚才写了许多让我难过的话。
如果你觉得这篇文章不错的话,请推荐给你的朋友。希望能通过互联网,能帮我找到那位传奇的人物。也谢谢你,观众同志。
对了,最后再对QQ上的同志提一点要求:
请称呼我“代码狂——人”,最后一个字只是修饰。如果想省略的话,请叫“代码狂”而不要叫“狂人”。
——至今玩了十六年C语言,其中真正写了两年的C语言。
假设你是某公司的白盒测试(White Box Testing)人员,对某一可运行的测试版进行测试时看到了以下一段代码:
int a;
a = // 此处为一表达式
// 以下代码为问题的关键部份,以上代码与问题无关
if (a == 5)
return 1;
else
return 0;
当看到这段代码后,请考虑你在10秒以内的反应?
// 请慢慢的滚动你的鼠标,一行一行的看。看得越慢你会觉得越意思的
以下是我在评估中所遇到的各种情况及我对不同的情况的打分:
第一种:没有任何反应 得分:0分
第二种:将代码更改为以下形式 得分:10分
if (5 == a)
return 1;
else
return 0;
第三种:将代码更改为以下形式 得分:30分
return (a = 5 ? 1:0); // 注意:代码反而被你改错了!
第四种:将代码更改为以下形式 得分:40分
return (a == 5 ? 1:0); // 这是以上代码的正确形式!
第五种:将代码更改为以下形式 得分:60分
return (5 == a ? 1:0);
第六种:将代码更改为以下形式 得分:80分
return (a == 5);
第七种:将代码更改为以下形式 得分:85分
return (5 == a);
第八种:将代码更改为以下形式 得分:90分
#ifdef CompilerA // 你已经知道A编译器做为一种特例,将T返回0、F返回-1
return (5 == a) + 1;
#else
return (5 == a);
#endif
小结:
此问题并不代表一个人在C语言上的能力,希望你不以偏带全的来考虑问题。这只是一个小小的玩笑。在与我玩过这个小把戏的人中,90%的人的得分都是0分。在剩余的人中, 80%得分在10至40分之间;15%得分是60分;5%的人的得分是80分或85分。只有一个人得到了90分。
在与此人交流的时候,我又玩了一个小小的阴招,我告诉他将代码写成以下形式:
return (5 == a) + //something
我让他好好的想一想这个something是什么东西,他果然上了我的当。在将20个月一起共事的时间里,我一直没有告诉他是什么。
今天在此也特意向你表示道歉,因为你没有发现这个阴谋。其实你被“+”号误导了。相信你看到这里已经知道答案了,你仍然是我见过的最优秀的C程序员。在后来的日子里,我明确的告诉一些人这是个阴谋,甚至于明确告诉了几十个得到85分的同志“+”是一个阴谋,都没有一个人得出了最终的答案。
代码如下:
return (5 == a) xor (1 == 1);
哈哈,看到这里你一定要大骂我了,“你这是写得哪门子程序呀?是C#吗?”。观众同志,你看出了问题吗?
不错,“xor”分明是PASCAL的操作符,看来我真的是把几门语言混在一起了。有用过C语言异或操作符的吗?请告诉我吧。
其实这又是我的一个小把戏,不过在那十来个我告诉迷底的人中(包括昨天的那个小伙),没有一个指出我的错误。也许真的是给足了我面子,也许对C语言还是有点那个。
我心目中的标准答案: 得分:99分
return (5 == a) ^ (1 == 1);
其实你已经得到这个分数了。有机会我香港给你打工,不知你要不要我?(开玩笑,你知道我家里的情况)。我真的非常怀念与你一起共事的日子,那是我真正写C语言的二年的时间。那五十万行代码也许将是我最大的“程序”。当然也很感谢你让我看了那段日子你让我看了你近三十万行的心血,毕竟我们年龄不一样,我精力要比你充沛的多。并且让我这样一个低学历的人在你面前逞尽了威风,甚至于常常为了一点鸡毛蒜皮的小事与你争吵,有时候还常常把你骂得狗血淋头,真的赶谢你给我“约法三章”以及很多很多的帮助。
真的非常感谢您!!!(下不为例,保证用“你”这个字)那次意外让我失去了与你联系的方式。我真的希望你能看到我的这篇贴子。也希望你不会再责备那个司机了,你走以后他一直很内疚,那次他留了二个小时的Buffer,但堵车实在太历害了。
观众同志,你是不是真的看得很慢呀,要是你真的看的很慢,要是你每看到下一个都觉得比上一个写得好,甚至是想了一想才有这个感受(也许想了好久,也许根本不知道为什么),那么你的C语言的水平真的是很那个.....(谁在乱扔东西)
好了。这个小把戏不代表一切,但真的有那么一点意思。只是想轻松一下,刚才写了许多让我难过的话。
如果你觉得这篇文章不错的话,请推荐给你的朋友。希望能通过互联网,能帮我找到那位传奇的人物。也谢谢你,观众同志。
对了,最后再对QQ上的同志提一点要求:
请称呼我“代码狂——人”,最后一个字只是修饰。如果想省略的话,请叫“代码狂”而不要叫“狂人”。
——至今玩了十六年C语言,其中真正写了两年的C语言。