能力值:
( LV2,RANK:10 )
|
-
-
26 楼
太精彩了... 期待楼主新作
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
这样的小说 我比较喜欢看 呵呵 !期待!
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
呵呵
感觉着主人公写的程序都很底层啊
|
能力值:
( LV4,RANK:50 )
|
-
-
29 楼
过了渭河大桥,在渭南市内转了一转。我一直期待的秘密军事基地并没有出现,不久出现了无数栋如密密麻麻的火柴盒一般竖立着的一模一样的小区房。游先生说,这些就是有名的G集团的地盘,这些是工人们的家属楼。我们就住在G集团的招待所内。
有趣的是这里每家每户都安装着同样的空调。据说是G集团进入家电行业的时候,曾经生产了大量的空调。但是因为种种原因销量一直惨淡。于是就把这些空调发给职工们充当了福利。
晚上去了一个硕大无比的食堂吃饭。半夜,巨大的食堂空无一人。但是在中央摆了一桌饭菜。神秘老头和几个工人师傅已经在等着了。我们一去,就有人就说“这几位是X大学来的专家。”
这时我才读大二,一不小心就充了一下专家,顿时觉得精神都爽朗了起来。
这些人与其说是吃晚饭,不如说是喝酒。我不能喝白酒,他们并不强迫,他们自己却干个不停。而且从不喝散酒,都是一杯一杯的白酒,一个人说“干”,则大家都一饮而尽。这时我才发现,北方人果然比南方人要豪爽得多。
豪饮之中,游先生问这个炉子有多少投资。老头伸出五个手指,说:“有这个数。”
我自然不知道这五个手指是表示五万呢还是五百万呢还是五千万呢。不过我干这个的报酬是五百元人民币,对这点我已经很满意了。
游先生一口喝完最后一杯,神色自若,一点也不像有酒醉的样子。但是一回酒店就冲进洗手间狂吐了一阵,然后就像死人一样倒在床上不动了。
第二天才去工厂。我本以为是在G集团的工厂里制作的。实际上却不是。汽车东拐西拐,最后到了郊区。一大片菜园子,一条脏兮兮的小河过去,有一片陈旧的红砖墙,墙下长满了杂草。再过去是一扇向里敞开的锈迹斑斑的大铁门。两条大狼狗懒洋洋的在里边的空地上晒太阳。
“这么破的小厂?”我很疑惑的想。
车间是高大而空旷的屋子。但是年代久远,似乎有点摇摇欲坠。工人们用一根细长的木头撑在主梁下边当作暂时的支柱。四处都是和生锈的铁板、螺钉和油腻腻的机器,空气中弥漫着铁锈和机油的味道。
“就是这个了……”工人师傅骄傲的指给我们看,就像展示他的艺术品。
这就是那个炉子了,终于揭开了神秘的面纱。他们已经把铁轨焊在了地面上,炉子安装在铁轨上。那东西大概有半个人高。和四周的锈色不同,这东西通体上下都是银白色的,明晃晃的有些耀眼。旁边是一个控制台,下面是柜子,上面是面板。面板上装慢了红红绿绿的警示灯和各种按钮。最中央的部分是一个空洞,刚好和我在酒店里见到的工控机的液晶屏幕一样的大小。我明白过来,原来工控机就作为这个控制台的一部分安装在下面的电路柜里,液晶显示屏刚好在面板上露出,作为这个控制台的最核心的部位。显示屏的下边就是工业键盘。
“我们这里可做过很多好东西,”工人师傅可能注意到我对这里的工作环境持很大的怀疑态度。“以前我们做过这么小一个铝盒。”他用手给我比划着大概有火柴盒那么大小,“是这么大一块完整的铝。上面只开两个小洞,把里边掏空,做成空的盒子。”
我想了一下,还真不知道怎么做。反正我是不行。工人们创造一切,我从来不敢怀疑他们的技艺。
电工打开柜子,露出里边五颜六色多如乱麻的电线。似乎一切都已就绪,只等着我的程序来控制这一切了。
|
能力值:
( LV3,RANK:30 )
|
-
-
30 楼
呵呵~ 相信楼主是自控专业的~~
喜欢~~期待楼主新作~
|
能力值:
( LV17,RANK:1820 )
|
-
-
31 楼
我还是等楼主写完了再看吧,等待是很痛苦的一件事情。
|
能力值:
( LV4,RANK:50 )
|
-
-
32 楼
X大学里学Turbo C的时候,根本没有告诉学生如何才能绘制图形。学完整本书,基本上对于显示器的控制,也就是停留在用printf打印一个字符串的基础上。当然教育学家会指出,计算机编程的学习最重要的是数据结构、系统原理之类的内在知识上,至于如何应用,那是简单不过的事情(虽然他们可能一辈子都没干过类似活儿)。
这造成了一个假象,就是课本上的编程知识学完,依然是啥事都干不了。显然在这个工业控制的场合,客户不会因为我们能printf输出当前温度就感到满意的。同时,也不可能用printf就能满足用菜单和选项来编辑工艺流程、显示被控制设备的复杂的工作,更何况这些工作极可能是由完全不懂计算机而且也对编程不感兴趣的人来操作完成的。
大多数人都有一个共同的特点,就是对在实际中完全找不到用途的知识,是不会有什么兴趣的。也许迫于考试的压力会被迫学一些,但是一考完试马上就丢得一干二净了。所以即使课本上的C语言和数据结构以及操作系统、编译原理的知识确实很重要,却是怎么都让人喜欢不起来。
我既然会printf打印一个字符串,我当然就会考虑:我能否打印一个颜色不同的字符串?能否加粗?控制字体大小?让它变成闪亮的红色并且跳动?我能否绘制线条来描绘这个设备的当前状态?
我知道这些都是可以的。因为我小时候用过GW-BASIC,这么基础的语言都可以做到这些,更别说号称强大无比的C语言了。现在问题是怎么做?教科书我都看过了,没有我想要的答案。现在有了互联网之后就很方便了,我随便搜索一下就能得到我想要的结果。但是我们学校从大三才开始有校园网。那时唯一的办法是去书店或者图书馆翻书。基础知识的书总是很容易找到,应用技术的书却很难见。这是一个大海捞针般的工作。
不过我那时是运气好,我找到一个黑色的像一本字典的小书,标题好像是《Turbo C绘图手册》。这种书绝对罕见,现在肯定是找不到了。
于是后来我总是很出色的解决各种图形问题,即使是用C语言。这让同学们都觉得我是高手(他们没有我的手册……),所以他们的实验报告和程序大多让我代理完成。
|
能力值:
( LV4,RANK:50 )
|
-
-
33 楼
接下来的日子基本都住在招待所内。没有去工厂了。程序的开发在饭店内完成,只有集成调试时才有必要去工厂。
我为焊炉控制机做的界面很酷。虽然程序的结构笨拙了一点。不过我的程序启动的时候出现一个奇特的现象:就是在黑暗的界面上从上至下出现白色的条纹,由窄至宽,就像一个阶梯。虽然时间很短,一闪而过了。但是人的肉眼还是可以看到的。
“这是什么东西?像台阶似的。”游先生和他的同事都很疑惑。
“这大概是C语言图形初始化导致的现象……”我说。
“设法去掉吧。”游先生随口一说。
其实我知道那些台阶从哪里来。这和那本《Turbo C绘图手册》有关。那本手册介绍了如何从屏幕上截取一部分拷贝下来,作为位图 保存在内存中,以便后边可以随时贴到屏幕的任何部位。却没有介绍我如何填写内存来生成一个位图。
我需要这样一个图片:很简单的白色横条。我后面的编制工艺流程的界面大量的使用菜单。我要用白色横条来覆盖在菜单上,表示菜单的这一行被选中了。我以“异或”方式来贴图,这样贴图的位置不会全白,而是混合进行“异或”运算,这样非常酷。可以看到菜单项反色。
《手册》没有告诉我如何“异或”的绘制白色色块。但是却告诉了我如何“异或”进行贴图。好吧,我唯一的办法是,是把色块绘制在屏幕上,截取成位图保存下来,然后要用的时候异或的贴上去。
为此在程序启动的时候,我开始绘制这些色块并拷贝下来。然后擦除这些没用的东西。我需要长度不等的色块来选择宽度不等的菜单。当它们排列起来,当然就像是一个台阶了。这是个难言之隐。
我不得不设法来消除这个现象。首先我意识到,其实不管我需要都少个长短不一的白色色块,我都只要绘制一个最大的就行了。因为从大的色块上显然可以截取出小的色块。反之是不行的。
这就像牛顿的猫洞:没有必要在墙上给大猫和小猫各开一个大洞和小洞。只要开一个大洞就可以了。
这样就只有一个白色条纹了。不过还是没过关。依然有人提出质疑,我还是无法解释为什么要“闪现”一个白色的条纹。
这事让我思考了很久。我想了各种方案来让我不再需要绘制这个白色色条。但是如果不绘制它,我就得自己在内存中填写一个白色色块的位图。如何填写它?我不知道。手头的书上没有记载。
其实还有一个办法,就是绘制出来之后,自己从内存中将这个白色位图的数据读出,以后就可以自己按这个填写了。这步绘制的过程就省略了。
但是问题是,我根本不知道这块数据在内存的什么地方,也不知道它到底有多大。知识的限制是往往是无法弥补的。除非有资料可以查。
“书到用时方恨少”正好可以描述这种窘迫。并非所有的知识都可以通过努力获得。当缺少获取途径时,想努力也无从着手。
那时的工作没有上班与下班的概念,也没有黑夜与白天。只有吃饭、睡觉、思考和写代码。整天不出去。
每次头脑开始犯糊涂的时候就开始睡觉。睡到不知道什么时候的时候就醒来,睡梦或者刚睡新时,常常有新的想法出现。然后打开电脑。那时候Windows早就流行于世。虽然工控机用的只是DOS,但是我带来的PC却是安装着Windows。Windows的启动远比DOS慢。为了不让用户等得心烦,就常常用到进度条。进度条其实就是一个不断增长的色块。
一早醒来看到Windows的进度条,倒是提醒了我。
这件事变得很容易。程序刚启动的时候,我加了一个启动界面。上面是文字:“XXX焊接炉自动控制系统”,下面是一个不断增长的白色的进度条。大概花了3秒增长到100%。然后才进入控制界面。
其实DOS本身的启动就已非常快,这种小型DOS应用程序的加载更加快速,根本用不了3秒的时间,也用不上进度条。
“这是新增的启动界面,把程序加载的进度用白色进度条展示出来。”我猜他们会这样想。
这个程序看上去越来越专业了。果然后来再无人对我在启动时绘制白色条状色块表示质疑和不解。
我在饭店房间里工作了大约一周。那时刚好是我的国庆假期。假期一结束我就回了西安。程序的集成和测试还需要大量的工作,但是我毫不担心,因为游先生和他的同事们会完成它。游先生自己比我更精通编程。
不过我猜他的考试一定考得极差。像他那种每天四处奔波忙工作的人,怎么可能集中精力准备考试呢?后来大三末年和大四初年我几乎是全力以赴的准备考研,依然觉得很难很累。他虽然项目经验丰富,技术出众,但是我可以说,不管他考哪个专业,他那些技术经验都对考试成绩的提高没任何帮助。
不过我后来就没怎么见过他。大三下学期一开始,我就没有多少时间可以出去混了。
游先生却依然日以继夜的工作,就像那许多想改变世界的堂吉诃德们,前仆后继的挥舞着长矛。然而又总是被命运的风车丢得老远,最后只留下一个寂寞的背影。
我在教室听课时,无聊的时候,常常望着窗外瞎想:不知道那个炉子还在机器人一般,在我的程序的控制下继续它的工作吗?
|
能力值:
( LV3,RANK:30 )
|
-
-
34 楼
支持楼主~~
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
期待楚狂人的精彩下一张
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
我在csdn里也看见这篇了 看来流传很广阿 呵呵 莫非程序员写小说也是一个趋势
|
能力值:
( LV4,RANK:50 )
|
-
-
37 楼
等待 等待…………
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
mark...mark...mark
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
我想知道楼主什么时候可以写完?等待实在是不爽的!
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
写的太好了,期待下文~~~~~~~~~~~~~
|
能力值:
( LV4,RANK:50 )
|
-
-
41 楼
三 三岔路
将近毕业时时流传一句话:保研的过着猪一样的生活(因为老是吃了睡睡了吃),找工作的过着狗一样的生活(到处摇尾乞面试),考研的过着猪狗不如的生活(整天复习功课,还得抽空找工作以防万一)。
我总是忘记考研的具体时间。不过那一定是一个冬天。我记得那时很冷。如果是冬天的话,应该是大四的上半学期末,或者大四的下半学期初。但是那个寒冷的早晨,我并没有按时起床。
我从大三的下学期开始准备考研。我还记得一开始就是大量的练习做积分。积分和因式分解真是有异曲同工之妙。都是属于那种有一定的规律,但是又没有完全固定的规律可以完成的工作。都需要一点头脑,需要暴多的练习。而反过来,表达式的相乘,或者是求微分之类的工作都是有固定规律,“连傻子都能完成”的工作。所以每份考试题都是先来几个微分当作开胃小菜,然后再来一堆的积分让你享受正餐。
这练习的过程中使我越来越深刻体会人脑的价值。比如说英语吧,如果英语的语法是严格而且固定的,那么从英语到中文的翻译那早就是电脑就可以完成的了。那样的话那么多人前仆后继的学习英语又有什么意义呢?
那时候我和同舍几个同学开始过固定的考研生活。具体是这样的:大约9点起床,早饭后去教室自习两小时。然后吃中饭,休息一会,下午3点后去教室自习两小时。然后再晚饭,休息。晚上7点再去自习两小时。这种生活充实而令人满意。
如果我早知道,平时期末考试的成绩排名前30%的同学都会保送在本校读研,我平时就不至于那么无视平时的考试成绩了。我花了很多时间玩编程,而且不编程的时候也很懒惰,期末考试大多是应付一下而已。
结果一到大四,人家保研了。我也只能愤愤不平:黑幕啊黑幕,你又不早说只要前30%就能保研。老子在上X大学之前就没出过前5%。
这件事的教训就是:想毕业时过上猪的生活的同学,还是应该平时多努力了。
至于我为什么要考研?主要是因为研究生毕竟比本科生要风光一些。
考研的同时当然最好找定一份工作。这样就比较保险了。万一没有考过,可以不用像范进一样一年又一年的考,考得都有了心理阴影,一直到七八十岁都过不了。大部分就业协议都是可以约定考研不成功则去就业,成功则自动失效的。
大四上学期开始,许多公司就赶集似的在争先X大学里召开招聘会。我们要做的事情,就是跑去过听一番广告,然后把简历扔给它,再等电话通知面试。
广告最为气势恢宏的,应该属于有名的K公司了。在五百米开外,就能看到“国内排名第一的教育软件商”的蓝色广告牌。一不小心还很容易看成“国内排名第一的软件商”。我还嘟哝了一会:我可真是孤陋寡闻,国内排名第一的软件商,怎么今天才第一次听说?下面都是攒动的黑压压的人头。好不容易举着简历挤了过去,把简历扔给人家,人家瞅一眼又还给我了。然后指着广告牌上的要求,挥手示意我赶紧走开,别在这里挡着后边的人的道。我只得定睛看那招聘广告牌,上边写着:
“1.要求计算机专业毕业。
“2.要求硕士及以上学历。”
原来前两条我就不符,后边的更不用看了。我是自控系学生,还在考研,当然更不是硕士了。我心想我费了这么大工夫才挤进来,你就是收下我的简历看看后边的项目经验难道就会死?何况人家“世界排名第一的软件商”也没见得就拒本科生,你一无名企业拽啥?当然想归是想,我也只能气愤愤的退出去,给后边不明真相的群众让出路来。
K公司并非一个优秀的公司。我工作之后不到两年,就听闻这个公司哗然倒闭,老总赖在美国不回来,至今都没有消息。
各种招聘要求,其实只是一种招聘手段,用来标榜这次招聘的格调和评委。比如“只招研究生”比“是人类都要”给人感觉的档次就要高了不少。起初见到的是拒本科生,后来见到的各种要求更是五花八门。有个公司要求的是必须有成绩单,上面不能有低于70的分数。另一个性质类似的公司则表示:他们会查阅每个面试者的档案,凡是得过奖学金的学生将一律被拒绝(据说是该公司认为得过奖学金的都是书呆子)。
|
能力值:
( LV4,RANK:50 )
|
-
-
42 楼
即使到处碰壁,我还是自认为,只要不因为这些“先天条件”被拒,我的求职应该是所向披靡。因为项目经验是通过面试的最有力的武器。这东西很难伪造。如果有伪造的话,只要面试官不是完全的白痴,随便问问就会露出马脚。何况不是自己做过的东西,非要安在自己头上,自己总会多少有点腼腆,说起来就没那么畅快了,也憋不出那么多话。而自己做的东西,说起来总是滔滔不绝,如数家珍吧?(结巴除外)。但是遗憾的是,招聘毕业生的时候,用人单位往往更看重笔试的成绩。当然这也算合理,因为大部分本科毕业生其实是没有项目经验的。
笔试不会涉及到项目细节的东西。一般都是“众所周知”的知识。比如考纯洁的C语言、数据结构、操作系统之类的知识。有时候这种笔试就在学校内举行,有时候却通知你三更半夜去一个狂远的地方:比如一个酒店。
我第一次参加笔试,就碰到异常倒霉的情形。那次是北京的F公司发的笔试通知,让我晚上八点赶到n远地方的一个酒店去参加他们的笔试。笔试是一张试卷,前面选择填空,后面编程大题。
其实前面的基础知识,无论填空还是选择我应该都做的还是不错。渐渐的做到后面的程序题的时候,本来应该是我最得意的部分,但是我却一看题就傻了眼,这题目大致是这样的:
先定义如下一个数据类型:
union my_union {
char d[8];
int a;
char b;
short c;
};
然后做如下的定义,并执行接下来的语句:
union my_union a;
a.a = 1;
a.b = 2;
a.c = 3;
a.d[3] = 4;
假定当前环境下,int为4字节,short为2字节,在x86平台下编译,请写出这段代码执行之后,从变量a的地址开始的连续4个字节的内容依次是?
这个题目出得是不错。理解数字在内存地址中的存放顺序,真的是一件很基本,但是又不是那么容易的事情。举个例子,如果int是4个字节,那么在x86 下,一个值为1的int类型的变量,从低地址到高地址这4个字节内储存的数字依次应该是多少呢?理解x86保存数据都是“倒序”的同学很容易的说出正确答案是:
0x01,0x00,0x00,0x00
这个数字如果排列成0x01000000来看根本不是1,而是很大一个数字。但是x86处理器会倒序的理解成0x00000001,这就对啦。不过还有更基本的问题。数组会不会倒序?结构体会不会倒序?比如:
struct my_struct {
char a;
char b;
char c;
char d;
} e;
e.a = 0x00;
e.b = 0x00;
e.c = 0x00;
e.d = 0x01;
char无论如何都是1个字节。那么,e一定是4个字节了。问题是做了上面的设置之后,e的这四个字节,从低到高应该是多少呢?答案是,无论什么平台,C语言的数组和结构体都不会导致字节顺序的任何改变:始终是低地址在前,高地址在后。所以,以上变量e的四个字节应该依次是:
0x00,0x00,0x00,0x01
这个问题貌似太蠢,但是我确实是费了n年功夫才领悟的。课本中只学了倒序。其实倒序只是在int或者short这样超过一个字节的固有数据类型上有倒序的现象。并非任何数据都会倒序的。
要回答前面的笔试考题,光知道上面这些信息,依然是不够。而我恰恰是很清楚这些字节顺序的,但是无奈不知道union是什么意思,而只能气得干瞪眼了。
这有点让人吃惊。如果说一个从初二就学习过C语言,到大学毕业时,参加过n多实际项目的“老手”,居然不知道共用体。但是事实却是如此。其实,C语言是如此的强大,一个完全不知道共用体的人,也完全可以编程解决任何问题。当然依此类推,就算一个人不懂数组、不懂结构、不懂写函数、也不会用头文件,依然可以编程来解决任何问题。而我恰恰是这类人:稍微懂一点就开始疯狂的使用,根本耐不下心把谭浩强的书翻到最后,认真看一下共用体的意义。甚至我听课的时候已经听说过了,我都记得书上最后的部分先讲了结构体接着就是共用体,然而我却怎么都想不起来共用体到底是共用来干嘛的。
如果换了现在,就算我完全没有学过共用体,一听到“共用”二字,我也能猜出其意义。但是那时不行。那时的大脑,似乎还停留在解决实际问题的层次上,还比较少考虑如何让程序写得更好一点。
我用过很多不同类型的变量,这些变量都保存在内存中。比如在常用的x86平台上,int占4个字节,而char占1个字节。但并非占4个字节就一定是 int。比如双精度的浮点数double,也是4个字节。这些内存中的数据,当作不同的类型来理解,就能产生不同的作用。然而,我所不知道的是,同样的一段内存空间,是否需要当作不同类型的变量来访问?
如果想要程序写得更美,这是有必要的。比如一个IP地址 ,我们常常可以看见一个IP地址被表述成这样:
192.168.0.1
实际上用点分割的是字节。一共四个字节。也就是说一个IP地址可以用四个字节来表示。那么就可以这样定义:
char ip[4];
不过有时候又要把整个IP地址当作一个完整的整数来计算。一个int是4个字节的话,IP地址的类型又可以定义成这样的:
int ip;
那么有没有办法定义这样一个IP地址类型:它既可以被当作字节数组访问,又可以当作整数访问呢?当然是可以的。这里字节数组和整数共用了内存空间,所以称为共用体。定义如下:
union ip_union {
char c[4];
int i;
} ip;
共用体的定义看上去很像是结构体。但是它在内存中存放的方式显然是和结构体完全不同的。上面这样的定义,如果使用ip.c[n]的写法(n为0-3)就可以访问这个IP地址中的某个字节。如果使用了ip.i的写法则是一个完整的整数。当然这完全是为了让程序更美。如果不知道使用共用体,而非要访问一个整数中的某个字节的时候,完全可以用指针解决问题。
我正因为不知道共用体的意义而急的抓耳挠腮的时候,西装革履的监考官不失时机的在旁边唠叨说:“虽然每个题都有固定的分数,但是我们的考核并不总是以分数来取人的。对某些人来说,如果后面的程序题做得特别好,我们也可以不考虑前面的基础知识。而对另一些人来说,即使前面的题做得很好,后面的程序题如果不行,我们也是不会考虑的……”
我更是慌了神。真是哪壶不开提哪壶啊!我身经百战,写程序无数,你都不考,偏偏考这个我不知道的……内心就放弃了,也没有细想,将几个空胡填了一些,交了卷。有几个人是被特别满意的,改卷完毕就雄赳赳的当场上机做机试了。其他人被宣布“不适合”这公司的职位,请大家早点回家休息吧。我只能望洋兴叹,纵然你厉害,人家压根就不让你上场,那再厉害也是白搭。
出了酒店,离学校还有十万八千里。初冬的夜晚,明月当空,何其爽朗,我内心却郁闷非常。原以为十年寒窗的虽然辛苦,但一毕业就能纵横天下,称雄武林。转眼之间,却万念俱灰,一切如同梦一场。坐在公交车上,一阵一阵的路灯光扫过脸上,路人无不形色匆匆,自谋生路。我知道没有办法,研还是要考的,工作也还是要找的。总不至于大学毕了业,回家吃软饭吧?只不过收回豪情万丈,重回到地面上罢了。
|
能力值:
( LV4,RANK:50 )
|
-
-
43 楼
其实后来我发现,只要是笔试的程序题,就绝对不会是那种我平时老写的,闭着眼睛就能写出来的程序。肯定是稍微有那么点“平时不怎么用的”的东西,才会拿出来考。总之一定会是有那么一点怪异的。就像是猜谜语。如果是一看谜面就知道谜底,那就不算是谜语了。这和你写过多少程序有关系吗?没关系。不过有趣的是,只要笔试多了,闭着眼睛也能猜出会有哪些题。
最经典的程序笔试考题就是带点递归的那种。导致我后来养成了一个习惯,就是碰到一个问题感觉用通常的方法解决稍微有点犯难,马上用递归的方法再考虑一遍,迎刃而解的概率竟然高达90%(仅限求职!如果是在实际项目中,那概率降为接近0%了)。比如说最简单的:
“假定在象棋盘格上任意位置摆一个马,请编写一个程序,输出一个位置序列。使马按照这个位置序列跳动,不违反象棋马‘跳日字’的规则,又能不重复的跳遍整个棋盘的每个位置。”
这个事情按普通的思维去做可不简单。因为这种重复性的工作,一般普通的思维就是做一个循环,让计算机循环的完成批量工作。但是上边这个问题,马的跳动路径是在跳动过程中不断被决定的,后一步的可能性决定于前面的选择。不是一个简单的循环能解决的问题。
不过这种“连续重复”,而且又不能用简单循环解决的问题正是笔试出题的最爱。想象一下,如果说有一个马,请随便输出一个位置,符合跳日字的规则,那不是很简单的事么?
那么,写一个函数这样做就可以了:
1.把当前位置记入已走过位置序列。如果发现所有的位置都变成已走过位置了,则返回成功,因为这时候我们已经得到要的结果了。如果还没有则进入下一步。
2.选一个符合日字规则的下一个位置。这个位置必须是未被走过的。递归调用本函数,如果调用返回成功,则结束(根据1,成功就是得到要求的序列了)。函数返回失败,则再选一个,直到有一个成功为止。如果全部失败,则把当前位置从已走过位置序列中删除(在第1步中添加过的),然后返回失败。
好吧,这就是递归。学会了之后,对参加笔试真的是大有好处。然后就是什么链表啊、栈啊、哈希表啊、稀疏矩阵啊、内存分配算法呀、排序啊,每个背一段例子的程序,如果对方有要求,就很快的写出来。去参加笔试,就会屡试不爽了(现在的语境下,一定是失败了才不爽。但是本文这里用古义…)。
而如果是平时自己玩程序的写法,可能一年只用过一次递归,还是抄别人的代码,自己都没去想过,结果就是像我那样的,一笔试就直接出局了。
“嗨!”
经历了最糟糕的笔试,晚上九点多才回到学校。我垂头丧气的一进宿舍,门卫处就有人和我打招呼。这个人面容精瘦,但是神采奕奕。但貌似又极怕冷。本来就不单薄的西服外边,又套了一个巨大的羽绒风衣,裹得几乎脸都不见了。我看了半天觉得脸熟,忽然想起是前几天参加的一个不知名的公司的招聘会上见到的这人,是来招人的。
“哦,你就是……”我想说你就是那人,但是我又不知名字。
“嗯,”那人回头去和宿舍的门卫老太理论,“你看,我们认识。”老太认得我,就让他进去了。
原来他是想进我们学生宿舍。门卫老太怎么都不让进。我替他解了围。
他上次的招聘会是在一间教室里开的。因为开始广告做得不太好,去的人只有我和一个同学。也没法搞笔试(就俩,全招了也不够,何必再试?)
于是就没有笔试,只聊了一会。他吹嘘了他的公司:是一家做金融类软件的公司,叫做Z公司,在南京,据称在金融行业很有名,占了80%市场份额云云。我则和他聊了一会我跟着游先生打江湖的种种经历。
这个人有个奇怪的姓:他姓楼。我觉得他与其说是HR ,倒不如说是一个星探。他大概是因为招聘会太惨淡了,改变了做法。一进了我们宿舍,也没有和我多聊,就直接问我,我认识的同学里,有哪几个喜欢编程的,水平又如何。
我想了想,除了我之外,班里只有一个小白水平还不错。楼先生就问我要了他的宿舍号、电话之类,仔细记在纸上,然后就去宿舍里到处乱逛了。一见人就问:
“你们班编程最喜欢编程的是谁呀?”让人觉得神经不太正常。
其实这人很正常。楼先生的招聘方法切实有效,是我见过的招聘方法里最有效的。一般的计算机专业的宿舍里,并非人人都对编程有兴趣,也并非人人都想以后做程序员。有些人是什么职位都去面的,有些人是找不到想要的工作最后不得已成了程序员的。有些人成绩很优秀,甚至笔试拿满分,但是其实并不合适成为程序员。而对编程有浓厚兴趣的同学,并不一定就会参加那些贴着广告的招聘会。有些是几个招聘会时间重了,有时是临时有别的事去了,有时是天生就对这个公司不感兴趣,都懒得仔细阅读一下公司的介绍。就算参加了,笔试面试层层把关,一不小心就出局了。要找到这些天生喜欢编程,以后最合适做程序员的学生,最好的办法就是跑到计算机专业的宿舍里,随便逮一个人就问:
“你们班最喜欢编程的是谁呀?”
一般这种人大家都知道。因为平时做个计算机上机作业呀、实验报告呀、毕业设计呀都要找他们帮忙。相比而言,挂一个招聘启事就等着他们自己送上门的方法就实在太消极了。
楼先生的方式相当的成功。他在宿舍里转了两小时,我敢说,这一届学生中的编程爱好者基本被他给一网打尽了。他逐个记下了宿舍号,然后一个一个的上门面谈。每个被面谈的同学都很吃惊,并暗自得意。如果这是传说中的“三顾茅厕”,那自己就是蹲坐茅厕的诸葛亮了。
他给每个面谈的同学都约了一个笔试的日期。然后四处贴广告,一周之后重新订了一个教室开了一个招聘会。这次我又去了,果然,人满为患,而且一个一个都是传说中的牛人。大部分是面谈过的,也有一些是看了广告来的。这次介绍就比较简单了,随便说了几句,就开始发笔试题。这中间碰到一个小插曲,从一个女生递的简历上看,她并不是我们学校的学生。
楼先生说:“你是哪个学校的?怎么简历上没有?”
“我是自考的呀。”
“可是我们只招本科以上学历的。”
“是呀,我是自考的本科。”
“可是我们只招这所学校的呀。”
不料那女生坚定不移的说:“您的笔试难道不是公平竞争吗?如果我能过不是一样吗?这和哪所学校的有关系吗?”
他顿了一下,没再说啥,让她继续笔试了。我不由得暗自佩服这个女生。如果我像她一样坚持,当时在K公司的招聘会上,也不至于无端被鄙视,然后又无功而返了。
后来我也就学了她的态度,不管我的条件是否符合,我都要和招聘方坚持一番,不到黄河绝不心死。
我这次笔试没像上次那么倒霉。不过成绩也不是很好,大约有六七十分吧。小白的情况和我差不多。楼先生并没有立刻公布谁被录用了,只说会尽快通知。
小白和我一样,都是求职已经撞了n次南墙。笔试完出来,忐忑不安的对我说道:“这次我们应该会运气不错吧?”我隐约觉得,范进中举的火候已到了。
|
能力值:
( LV4,RANK:50 )
|
-
-
44 楼
有些大公司的招聘非常之麻烦。从筛选简历开始,经历一轮又一轮的笔试、面试。考智商、考语言、考性格、考知识、考各种各样的能力。不过我倒觉得,那些通过层层考验杀到最后的千里挑一的选手,与其说是各方面的能力凌驾于众人之上,是真正的优秀人才,不如说,是各方面的实力都很平均,而且又运气很好的缘故。
其实那种多轮次的考试,要保证每一轮都有出色的表现,完全没有一场马失前蹄,那实在是要靠运气的。俗话说,智者千虑,必有一失。而好的人才,应该是某一个方面有出乎常人的锋利表现,而其他方面平淡无奇,甚至比一般人要差一些。这些人,实在太难以通过这样轮番的考验了。
一个好的团队,应该有不同强项的合作者,在聪明的管理者的管理之下各有分工又相互合作,才能发挥最好的能力。
不过,我不认为他们的招聘方式,能筛选出这样的人才。
我和小白大约一周之后,就和Z公司签了就业协议。我似乎没有认真的考虑对雇主的选择。一方面当时确实工作也比较难找,失败已经太多让人觉得害怕。另一方面,就业协议只是一个备胎,前面还有考研。如果考上研,就不用去工作了。所以签协议的时候是大笔一挥,并不需要怎么考虑后果。
不过证明是这样是不对的。因为签了就业协议之后的第一个后果就是:本来早上8点就会起来吃早饭,9点就去自习了的。到这天却起不来了。
天气那么好,头脑却还有些犯晕。同舍的同学也都没醒,有人还在轻轻的打鼾。如果能再睡一会,那是多么美好的事情啊。但是可惜还要考研。如果今天不起早自习,那么就可能考研失败了。
但是考研失败又有什么关系?已经签了协议,去工作也不错不是?
想到这一层,就起不了床了。
那时离考研还有两三个月。后来就一直比较懒得起床。我不记得考研是哪一天了。但是那天真的是非常的寒冷。既然天气好都起不来,那寒冷的早上就更不用说了。
不但我没有起,而且在我的带头下,我们宿舍没有一个人起来。所以考研的过程,是以全军覆没为结局的。
其实人生的命运的选择,并非总是深思熟虑,有周全计划的结果吧。有时也是在床上,半睡半醒之间,由那群懒洋洋的脑细胞,很简单的就决定了。
|
能力值:
( LV12,RANK:220 )
|
-
-
45 楼
期待下篇!~~
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
现在都流行牛人写小说了。。。 竹林溪径什么时候出版啊
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
就喜欢这种文章 或叫小说吧
加油
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
喜欢!顶起来!期待更新!
|
能力值:
( LV15,RANK:670 )
|
-
-
49 楼
狂人啥时候写小说了..
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
写技术书不赚钱了。改写小说。。。起点还是不错的。。
|
|
|