一道面试题

最近帮某公司出了一道面试题,由于面试官技术参差不齐。所以,题目要求:上手容易(不然冷场了,面试官不易处理),还有就是不怎么暴露面试官的无知。

题目内容比较open,没有标准答案,只是要求用伪码实现简化版的windows计算器标准模式,相信大家上手应该都不成问题。

然而实际效果,这道题目区分度还是蛮大的。正是因为按键少,上手就写程序,很容易就成为意大利面条式的代码。甚至有人电话面试的时候,没到5分钟,就直接压了电话。

按键设定为只有以下18个:
0 1 2 3 4 5 6 7 8 9 . + – * / = C +/-

由于对一切乱七八遭的输入,都要能够接受,不做异常处理,我们有下面一些约定:
1. 忽略前置0: 000000 => 0;
2. 忽略多个.:1…..23 => 1.23;
3. 多个操作符(包括=)取最后一个(这与windows的版本有细微出入):*/2 => /2;

最后,是一些考量:
1. 有限状态机在这里是比较自然的思路;
2. 初始计算前加入0+的计算,可以与后面的情况合并处理;
3. Clear和+/-可以不进入状态机处理,而提前解决掉;
4. 一般都能把数字”0~9″和”.”、”+-*/”和”=”统一处理;但问题在于,用了大量的if来别扭的处理”=”,其实”=”之所以别扭,就是因为他和”+-*/”最大的不同,在于它是unary operator,而其他的是binary operator。如果考虑到这里,那么对于后续问题。例如,如何加入对于sin/cos/开根号等的支持,也能作出较好的回答;
5. 还有一个小陷阱,除0的考虑;

总之,简单的一道题目,但在面试的特殊环境下,能够较好的区分出应聘者的设计水平。

为了更好的在面试的时候说明题目,我用flex实现了一个界面(因为只起演示作用,所以有个已知的bug就是超长的输入数字,或者回显的超长数字结果,会使程序的显示产生未定义行为)[Updated: 加了个限长为10,现在可以忽略这句话了]。

附件里有代码和状态转换图,有兴趣的可以下来看看。有更好的考量,还望多多指教。

http://www.axqd.net/calculator/

解读解脱之路 二

上篇 解读解脱之路 一

在伟大、光荣、正确的光环下,我们对于马哲理论一般也有一定的了解。若想比较,进而从真正唯物辩证的角度出发,看待佛教教义,我们还需花点功夫,精进一下佛教的”修为”。

我们上次说到,佛教理论中,”空性”占据着极其重要的地位。因为万事万物,当体为空,讲求因缘假合而缘起缘灭。人本身就由”十二因缘”和合而成”五蕴”之身。对于业因业果及其分析也作了简要的介绍。但我们若想更进一步理解这些概念,便不可避免的要谈到”十二因缘”。

记得以前听老罗语录,谈到了子女与父母的问题,里面有些话很尖锐(当然也很搞笑,不然就没人听了 :)),却也不无道理。(当然,再尖锐也没佛教尖锐,上次我们已经提到了佛教里的”还债观”。)

父母同房交欢之时,更多的当然是个人的享乐,而不会一味为了传宗接代(至少不会从头到尾都为了这个目的)。因此,在孩子成年前,父母确实有抚养的义务(”你们搞出来的,你们不管谁管?”)。

此外,孩子也确实无从选择,”谁TMD说要来了?你问过我么?”
不能选择是否来,何时来,来到什么地方,哪户人家等等。

同样,人之将死,情况也很类似。你没有任何选择的余地。
是否死去,什么时候死去,死在什么地方等等。

佛教将这种无奈,解释为了”十二缘起”。我们每个人,都已经经历了很多很多次的”十二缘起”,然而这个轮回却似乎永不消逝,从未停止。因此人们在六道中如此往复,痛苦不堪。

人们修习佛法的目的,也正在于此。消灭轮回,就得到了真正的解脱,获得永生与极乐。这点在后面的讲述中,会进一步阐释。

“十二缘起”支,在小乘的观点中,分为一切有部和经部两种观点;在大乘的观点中,又有唯时和中观两种观点。但总的说来,大同小异。下面就我的理解,作下阐述:

上次我们援引《因果经》云,”欲知前世因,今生受者是;欲知来世果,今生作者是。”
这便是理解”十二因缘”的一把钥匙,见下图:

十二缘起

我们把”十二因缘”分为了三个阶段(前世、现世、来世),两对因果(能引/所引、能成/所成)。其实,仔细看看,你不难发现,不管前世、现世还是来世阶段,”十二因缘”都存在于其间。但我们却把某些因缘划分给前世,有些划分给现世,有些又划分给来世。不仅如此,两对因果的内容,也甚是重复,互相囊括。这其实只是为了以现世为中心,突出重点,便于布道和理解而已。

上次我们为了识苦,粗浅的把无常作为万苦之源。但在注解里,我们也提到了,其实”无明”在这里更为准确。

何谓”无明”?说白了就是糊涂、愚昧等”贪嗔痴”的愚执。

“无明”助缘起惑,人们就会”妄行”,进而造下诸业,今世来报。

当前,人们已经认识到自己是如何来到这个世界的。那便是精卵结合。然而佛教认为,世人愚昧的是不知道我们自身,也作为第三者参与其中…

一般人死后,会先进入中阴状态。(但念佛之人直接往生净土,而极恶之人直接入地狱。都不经过中阴状态)

前世之”妄行”助缘成苦,有了业识,也就是分别和辨别。哪些喜欢,哪些不喜欢。于是,中阴身见到有缘的父母同房时的光而心动了,作为第三者加入到同房的父母当中去了。(有修为的人,即使落入中阴状态,见到男女同房交媾,也能做到不心动,从而避免继续轮回)

当男人射精时,就将其冲到女人的子宫里面去,这就是投胎、住胎。
因此自身的业缘是胎儿的必要条件。只有精卵则不能成胎。

进入子宫以后,这时,只有色蕴(上次我们已提到,只有色蕴是物质,其他四蕴都为精神)。这个精卵混合物如脓一般,无以名之,故”名色”。

接下来,见、闻、嗅、尝、觉、知,对应眼、耳、鼻、舌、身、意”六根”长成,此乃”六入”。

在”六入”的助缘下,”六根”接触对应的”六尘”,此乃”触”。

不用说,”触”的直接后果就是”受”,眼受色、耳受声、鼻受香、舌受味、身受触(这里指触觉、接触)、意受法。

在”受”的助缘下,心生贪爱,妄图取得,并不断追求,最终成业—有。

爱、取是现世之惑,其直接后果就是现世之业—有。

最后来世生死二果,乃凄凄轮回。人死亡后,眼、耳、鼻、舌、身、意六识相继死亡。而末那识、阿赖耶识离开身体。这就是所谓的”万般带不去,惟有业随身”。

佛教认为西方极乐世界是最快乐的光明世界。人们对婆娑世界的眷念,实乃愚痴。

再说,人之将死,四大将散:

地大分散,泰山压顶;
水大分散,寒冷潮湿;
火大分散,炙焰灼身;
风大分散,风刀解体。

最后一口气上不来,风大分散彻底,呼吸就没有了。

上述内容,即为相当重要的”顺观流转门”,它告诉我们轮回不会自动终结,人们会在六道轮回中沉沦。

那既然是定业,我们还能有办法改变么?答案是肯定的。”十二缘起”之所以重要,在于它同时给出了解脱轮回的办法,那就是”逆观还灭门”。

所谓”逆观还灭门”,简单的说,就是倒过来看,直到回溯至无明,得到结论:
无惑则无业,无业则无苦的道理。

当然,现世的作为是近因,每人都有远因(释迦牟尼佛也做过凡夫)。这就是佛教认为,为什么菩提也能被砍头?(龙树菩萨的故事)为什么得道高僧还会生病?等等问题的原因。

这里值得一提的便是阿罗汉,阿罗汉有远因,但是没有近因—爱支(也就是贪欲)。
因为贪欲属于烦恼,而阿罗汉已断尽所有的烦恼。(你若做到这步,你便是阿罗汉)
阿罗汉这一世因为前世的因缘,也会感受很多果报。
尽管如此,下一世他却不会再入轮回,因为他没有了贪欲。

当然,最根本的问题,我们怎么才能断绝根源—“无明”呢?

这当然没那么容易,佛教的全部内容,其实也就是在解决这个问题。以后,我们会慢慢介绍,但这里先给出一些最最基本的两点要求:

1. 修出离心:
小乘佛教以出离心为本。出离心是出离妄想、分别、执着之心,是厌离三界六道轮回痛苦,而寻求解脱之心。

记得以前看过一本讲如何致富的书,一个很长的故事,其实就说明了一点,你能致富的前提是你想要致富,并且相信自己能致富。这里有点类似的道理。

这其实就是各个宗教都有的”信则灵,不信则废”道理,具体到佛教中的体现。

修出离心的主要方法是观苦、空、无常、无我。

上次我们也用到了有为法和无为法的提法:

凡是世间事相,皆是有为法。我们对有为法,可以知道,不可以住着。因为有为法是缘起的,缘起无性。
“如来所说法,皆不可取,不可说,非法,非非法。”—这就是无为法。只要法可取,可说,它就不是无为法,而是有为法。

《心经》云”是诸法空相”,十二因缘法也是性空本无。
无明并不是一个具体的东西,无明当体是空,不是真有。既然没有,又怎么破呢?实际上无明无可破,一觉便了,所以”无无明”。

既然没有无明,那何须谈将其破尽呢?没有无明,则没有破,又有什么”破尽”可言呢?所以”亦无无明尽”,就连”破尽无明”也没有了。
“无老死、亦无老死尽”,诸法空相,根本没有老死。既然没有老死,又有什么”尽”可言呢?这样,就把十二因缘法的“顺观流转门”和“逆观还灭门”都破了,一切都不可得。

《心经》是大乘法门,就是要破法执,指出他们所修持的十二因缘法都是空的,是根本没有的,了不可得,从而教他们回小向大。
诸法皆空,佛法不可得,心性不可着,一切都不可得。

由此小乘破执,大乘破法执,最终功德圆满。

2. 修菩提心:
大乘佛教以菩提心为本。菩提心在于用智慧与慈悲普渡众生。(智慧的体、用关系以后再作介绍)

修菩提心主要方法是自他相换(也就是俗称的”换位思考”),同时观空性也很重要。

这篇但愿把”十二缘起”粗略的介绍清楚了,下篇,我们讲具体结合唯物辩证主义,对此做作分析…