换了几个博客的插件

刚刚换了几个博客的插件,感觉还算可以。

首先启用了Markdown on Save Improved这个插件,以便于用markdown来写博客。主要是原来的可视化编辑器在写作的时候总是出一些奇怪的问题,然后导致产生的HTML很奇怪。再者因为在github上经常用markdown些README之类的东西,这边就好直接贴过来了。

然后代码高亮插件换用了一个Crayon Syntax Highlighter的插件,这个插件看上去貌似很强大的样子,设置选项一整页,还没研究透过。不过貌似比以前那个好。

暂时就这样弄着吧,不知道有什么问题,到时候再说吧。

澳洲留学移民失败情况得失评估

如果申请PR失败,情况的总结。
得:

  • Master学位
  • 增加阅历
  • 英语能力提高
  • 回国可能可以进外企
  • 2年的新鲜空气和安全的食品、水
失:
  • 50~60w的资产蒸发,回国后暂时无法买车
  • 2~3年的工作经验丢失
  • 离家
  • 2~3年的辛苦(学业和生活)
比别人的优势:
  • 在中国没有住房压力

啊,最近又在准备雅思了

实际上去年这个时候我有准备考雅思(目标是移民)。当时背了小半本词汇书。当时就在思考怎么样背单词可以记得持久一些。以前有个什么电子词典有个“艾宾浩斯记忆法”,去年在豆瓣上面也看到有人说这个东西,我本人又是非常相信心理学的,所以就琢磨尝试这种方法来背单词。不过抱着词汇书背单词不是特别方便,而且词汇书没有真人发音,对听力什么可能不是特别有利,所以我寻求用软件来背单词。找来找去,发现市面上的软件都没有引入这种记忆法背单词,唯一用过不错的就是“拓词”了,但是拓词非常依赖于网络,而且它本身服务器就慢的要死,那时候从来没能够顺利地背一次单词。于是作为iOS程序员,我就自己做一个。于是就有了《记词助手》这玩意儿,里面引进了艾宾浩斯记忆法,然后又通过金山词霸的API拿到了单词的发音(虽然金山词霸很多的单词发音实际上是错的)。

不过我其实对英语兴趣不大,对编程兴趣很大,所以开始做记词助手之后,就慢慢地把精力都投入到软件开发上面去了。本来这玩意儿就是为我一个人设计的,后来想想,要是把他发布到Appstore上去不是更好。于是开始着手对软件进行重新设计,琢磨美工什么的。后来因为金山词霸服务器一直down掉,我还在SAE上面做了个缓存服务器。软件倒是很成功,但是对雅思的热情就慢慢消退了。后来自己做了几套真题,发现正确率很低,然后对写作和口语的题目完全没想法。觉得长路漫漫看不到头,慢慢也就放弃了。

今年7月份的时候,到日本去了一趟,充分感受到了中国跟发达国家的差距,而且今年以来,GFW愈发猖狂,而习李政府对互联网的限制愈加厉害,所以移民的念头又出来了。本来是想到日本去工作的,所以学了新标日初级的一半多一点,后来很多人反对,而且那些有赴日经验的朋友都觉得日本的工作比较辛苦,所以放弃了这条路。另外,我大量好友都去国外留学了,我一打开Qzone或者Facebook,总是能看到他们很充实的生活,还不乏有朋友开始着手移民了,我便觉得羡慕又不服气。心想再冲一次,先弄一个留学的机会吧。其实我临近毕业的时候就很后悔大学成绩不好,这个GPA太低了,申请不了什么大学,现在我也不知道有什么学校可以申请的。不过常年挂科的聪聪最近也去英国留学了,学校的录取信里面还说“Your academic backgroud is so strong.”顿时给我莫大的信心。。。

从再拿起雅思的书籍到现在,大概是三个礼拜吧。当然很久没背单词,以前背的忘得很厉害,好在之前引入了艾宾浩斯记忆法,有很多单词回想一下还是能想起来的。不过这次我放弃自己自学成才了,花了点钱买了沪江的一套课程。怎么说呢,那套课程不同的部分是不同的老师上的,水准有点参差不齐,不过在考试技巧上面还是给我很大帮助的。像阅读什么的,因为用了一些应试技巧,正确率有所提高。听力的话,按照新东方的彭新松老师说的训练方法训练,还是有一定提高的。顺便为了练习听力,我自己又做了一个类似复读机的软件。当然这次花了几个小时就做好了,只满足自己需求,不再重蹈覆辙了。

写作和口语还是我巨大的缺陷。最近买了《十天突破》系列的书看,感觉还是蛮有用的,我觉得我缺乏的不仅是词汇的精准度和句子的多样性,更缺乏的是行文思路。虽然我们的教育经常会说马克思主义哲学的辩证思想,但是我们从小到大的教育核心还是“学校好、祖国好、共产党好”,完全是缺乏真正的辩证思想的,雅思的写作是需要比较强的辩证思想和逻辑的。我只能看《十天》系列里面的思路分析找点灵感了,虽然这是很应试的,但是真的是没办法。

顺便说一下,有个叫lang-8.com的网站,会有native speaker帮你改文章的,我之前学日语的时候,经常在那里问日本人问题。看起来学英文也是挺好的。但是因为学英文的人特别多,所以L点数不够的话,别人看不到你的文章的,只能在必要的时候花$7一个月买个会员。

我预计是明年的1月或者2月去考试。考试准备金都准备完了,打算最多花6000在这上面吧,现在都放在活期宝里面收利息。

你没有资格被别人怜悯

从这几天的架势来看,长期批评政府的微博大V,以及一些对政府不利的案件的爆料人,被一个接一个地抓到牢里去了,一看便知,这已经不是什么打击谣言的范畴了,而是赤裸裸地用权力打压异见者。

果然国企什么的消息是很灵通的,之前大V们被叫去开什么会,大家好像也没怎么警惕。但是我妈单位也开展了一系列宣传活动,具体什么我也不清楚,反正我妈当晚就给我打电话说,新的文革要开始了。

现在来看,基本上确实是这么一个路子了,我要说中国没救了吧,确实是没救了。但是各位,有朝一日再出现文革这样的事情,有朝一日你莫名其妙地被抓到牢里去了,抱歉,你没有被人怜悯的资格。

一个完全有工作能力的人,不想着去工作,花光了自己所有的钱,只能露宿街头。即便这样,他依然不想着去工作,依然希望什么事情都不用干就能得到一切,这样的人值得怜悯吗?显然不值得。同样,自己从来不去争取,不去抗争,却老想着什么事情都不做,别人就会把权利赋予给你,这现实吗?

你从来没想过抗争,只是在想,生在中国是多么的不幸。你没有想过通过什么去改变你的命运,可能改变中国对你来说太困难了,但你却也没想过改变不了中国却可以离开中国,至少你可以为离开中国而努力。

中国动荡的时候,可能你会觉得同为华人,台湾人和那些在国外定居的华人还可以安居乐业,享受自己本应有的权利,是一件很不公平的事情。但其实是很公平的。台湾的民主,是无数人反抗国民党专制才得到的,国外定居的华人,靠自己的不懈奋斗才到了国外(官二代请忽略)。而你什么都没有争取,也只能有这个下场了。

所以,一旦有一天你陷入到了一个恐怖的时代,你根本没有资格被人怜悯,你活该。

Format Aside

凌晨的WWDC我是没看直播,我从来不会为类似发布会的东西去熬夜的。早上起来看看cnbeta的文章,了解个大概。然后呢,因为给苹果交了99刀的保护 费,所以可以直接下到beta版本刷,于是就刷到我的iPhone5上面去了,这个确实有风险,刷上了就降不下来了,第一个beta版总归是有很多很严重 的bug的,不过好在我有俩手机,要是bug太多我就换另外一个当主手机,然后不断升级等到iOS7能用为止。
iOS7的主题就是扁平化的重新设计。总的来说,跟Android 4.x的UI设计理念非常的像,而且似乎非常符合dribbble上面的设计风格。不过iOS7给我的总体感觉要比Android 4.x的UI要好。不知道是苹果设计的原因,还是iPhone5屏幕比较好的原因。很多流行的软件运行在上面,基本上没有什么不和谐的感觉,原因就是扁平 化的设计基本上是三方应用先行的,苹果这次的扁平化,在我看来只是顺应潮流,让自己操作系统的UI不在众多扁平化设计的应用里面显得特别不和谐而已。然后 因为这次扁平化,Android和iOS的UI设计概念再一次的统一了,恭喜我们公司懒惰的UI设计师,现在开始又可以两个系统用一套UI来设计了。

IMG_0015 IMG_0014 IMG_0012 IMG_0011 IMG_0008
虽然扁平化了,但是iOS7的设计不能算是极简设计,因为我看到一些超出极简设计的复杂度在里面。比如主屏幕是有一种伪3D透视效果在里面的,背景会根据 拿手机的角度进行偏移,看起来就好像icon是浮在背景上面的一种透视效果,不过我觉得这个透视效果有点画蛇添足的味道,毕竟陀螺仪对于微小角度变化的判 断是非常不精确的,这经常导致透视效果的不和谐感。在扁平化的设计里,苹果用了大量的磨砂半透明的效果,这也是以往扁平化设计里很少见的。另外 iOS7 的过渡动画效果做得还是很不错的,跟android比起来,iOS的动画永远是强项。

然而iOS7的图标设计实在是太烂了,不知道这是不是demo式的草稿,正式版是否会改,现在这个版本的图标设计实在是太差。用了一些鲜艳的颜色,然后用 了一些很二的渐变,没有边框。然后某些图标又是黑色的。这样一来,配背景就非常难配了,用亮色配背景,那些明亮的icon就融入到背景里面去了,几乎就找 不到了,而用深色的背景,黑色系的图标就融到背景里去了。所以我至今未能配好背景。dribbble里已经有设计师做了一个redesign了,要是苹果 采用这种设计的话还说得过去。
Redesign_iOS7_Comparison_V2
左图为dribbble的设计师重新设计的图标,右图为iOS7的图标

说道背景,貌似iOS7终于支持了动态背景,不知道前几个版本有没有,反正我是没注意过。另外一个android功能就是把闪光灯变成手电筒,这个功能似乎在iOS7里正式成为官方提供的功能了。
另外,不知道iOS7的API变了哪些,很多现有的软件运行多多少少是有问题的。比如QQ通讯录是闪退的,所以我没法同步通讯录了。多看阅读的HTML解 析坏掉了,以至于我直接看到了它的javascript代码,原来多看的两个界面是用webview做的,真是没想到。好在我们公司的软件似乎没什么问 题,所以大概又可以打酱油了。
ios7duokan
可以说iOS7在设计上总算是多多少少赶上了历史潮流,算不上什么创新,倒是在android上面学来了不少东西。其实在iOS上面的创新已经到顶了,作为一个平台而言,只要对开发者提供更好的底层支援,创新的工作就交给成千上万的三方软件去做好了。

强迫微信收费?市场经济的笑话

据说微信收费已经是板上钉钉了,听说是5分一条文字,包月10块。
如果说微信收费是腾讯提出来的,那我毫无怨言,这是市场经济嘛,一个愿打一个愿挨。问题是这次收费是工信部逼的,这就很搞笑了,我们的市场经济竟然允许政府直接制定价格,这和我所知道的市场经济完全不相符,果然是社会主义市场经济。
看了一下运营商给的原因,或者确切地说是借口(载自新华网):

“信令是什么?专家表示,通俗地说,用手机打电话、发短信、上网所传输的声音、文字,或者是视频,都会经过转换以比特的方式在移动网络上传输。但是这些传递的信息需要一个“带路人”,将信息安全、可靠、高效地传送到目的地,这个“带路人”就是信令,也被称为“心跳信号”。
信令在专用信道上传输,控制网络上海量级的信息沿着各自正确的路径,到达正确的地方。然而,由于无线资源的有限性,可容纳信令的信道资源也是有限的。因此,一般情况下,当信令指明“正确道路”,信息已沿着正确道路传输后,信令就不再占用信道资源。但是,微信等业务,为了保持永远在线,会频繁发送信令,这样“六车道”的信道就被OTT业务“频繁喊话”的信令挤占了4车道,指引语音、短信以及其他数据业务的“带路人”都拥堵在剩下的两个车道上,从而导致网络连接无法建立,引发网络拥堵。”

好吧,我不是通信专业的,没办法完全理解上面的这段话。但是作为计算机专业的人来说,“保持永远在线”是计算机网络上面是很正常的事情。作为软件开发者,我建立一个socket连接,并且保持一个长连接,这是大多数跟网络相关的客户端都做的事情,不用说微信了,我们的东方财富通也是用了socket的长连接来获取实时数据。使一个socket建立并保持是一个网络供应商需要提供的最基本的服务,我相信腾讯作为一个软件公司,肯定不能直接做操控信令这样底层的编程,这个都是硬件层和网络供应商的事情,也就是说这是通信协议上的国际标准,所以事实只可能是运营商没有建设好基础网络服务,出售的流量完全超过了它的基础设施能承载的能力。买流量就像买水,我向商家买了5吨水,并且协议上没有说明这水必须怎么用,那么我拿这些水去洗澡还是去烧饭,商家就无权来规定我。我们买流量的时候,运营商和我们的协议之间并没有规定“只能浏览网页”,那么运营商就没有权力来约束我拿这个流量干什么,哪怕我拿来下载电影,或者做一个服务器向外分发数据。
既然运营商没有做好基础建设怎么办?正常的办法无非就是让运营商自己去建设好自己的网络,钱不够怎么办?没关系,提高流量费就行了。虽然流量费涨价必定会被别人骂,或者有些人转投别的运营商,但是这是市场经济正常行为,企业自己做权衡考虑。现在运营商不想做基础建设,又想超卖,又不想自己的网络太拥堵以至于人人上网都很慢,竟然想到让政府把这个超卖导致的成本转嫁到一个民营企业去,这真是岂有此理。
实际上在我看来,信令什么都是借口。如果真是信令的问题,那么我觉得不要说微信了,以后微博、手机QQ,甚至我们东方财富通也都要收费了。真正的问题肯定是微信使得运营商的短信、通话业务的利润缩小了。因为别人打破了自己的垄断,而借助政府通过行政手段打压对方,也只有中国做得出了。而政府对运营商的垄断却不闻不问,在微信之前的飞信,造成移动垄断的时候,连个屁都不放,想当年我在大学里饱受飞信垄断的困扰——学校的师生基本把飞信当做通信标准使用,学校的各种信息都通过飞信发送,直接导致我转投联通之后,对学校的信息完全没法掌握。我老早就说XX党已经是中国先进生产力发展的最大阻碍了。
如果说这也是市场经济的话,我只能呵呵了。中国的政府对中国国民和中国民企的压榨可真是不遗余力。那些始终不认同中国是“完全市场经济体”的国家真是明察秋毫。

102年1月14日,写代码的一些感想

    今天吃饭的时候偶然听到同事在谈论东方财富通的下一版要大改。
不过也好,之前同事之间已经在讨论重构东方财富通的问题,但是迟迟不敢改,因为怕开销太大,现在大改的消息一出,我们又把重构的议题摆在桌面上了。当然也不能保证最终进行重构,因为我们的决策层决策的实在是不够干脆。
实际上东方财富通到了今年,它的代码维护成本甚至比重构还要大了。我个人认为彻底重构是一件必然的事情。做软件很有趣,一个软件在被写出来之后,根据时间的推移,终有一天会被大范围重构,或者就弃用了。各个阶段给程序员的心理反馈都很有特点。
以做手机客户端为例(可能后台编程和这个有点偏差),最轻松和有趣的就是白手起家,没有任何历史包袱,这一个阶段往往会有很多的灵感和创意,道路也是如此的明细,让人有只要合理地设计就能构造出一个完美的程序的错觉。虽然这一个阶段工作量巨大无比,但一方面一个软件从无到有会给人很大的成就感,另一方面程序员可以根据自己的喜好来编写自己负责的代码,所以整个过程是非常愉快的。
等到第一版上线之后,要是没有其他新产品要做的话(比如我们公司),就会进入一个非常空闲的修改bug期。因为这一版的代码所有的在职程序员都了如指掌,所以修改bug是相当容易的。一些稍微好一点的程序员会在这个阶段进行小范围地重构代码并且对代码进行比较详细的注释,这既可以加深自己对已经写过代码的了解,又可以帮助下一代程序员读懂自己的意思。但如果遇到不太负责的程序员,那么程序在这个阶段会开始慢慢腐化。但是这个阶段大家心情都还不错。
接下来需求要改了,大家就开始在心里骂一下需求组的变态需求。但是这时候根据需求改程序说难也不难,毕竟大家对自己的代码还是非常了解的。但跟改小bug不同的是,因为需求的变化,在白手起家的时候做出的结构可能开始不适应新的需求。此时好的程序员会再次进行小范围重构,以保证用一个比较明晰的结构来适应新的需求,而不怎么负责的程序员依然在老的基础上通过加减一些变量来完成新需求,而这个过程中代码会进一步腐化。
终于,有几个第一代程序员开始离职了,他们把任务交接给第二代程序员,或者第一代程序员的其他人。这个时候问题开始显现。读别人的代码总是比自己写代码要难一点。在修改他人的代码时,最好先通读一遍了解整体架构,由于此时离白手起家不算太长时间,所以读别人的代码还是比较容易。这时候如果离职的是个高手,那么被交接的程序员就有一个很好的机会来研读他的代码从而学到点东西,如果很不幸离职的是一个不太负责的程序员,这时候被交接者心理肯定各种不爽。如果被交接者是个负责的程序员,那么他可能会在通读一遍之后,按照自己的思路进行适当的小范围重构,而如果被交接者是不太负责的程序员,那么很有可能出现在未读懂别人代码的情况下根据自己的思路增减代码,这个时候,就会出现代码中有一部分被弃用而未被注释或者删除的情况,代码进一步腐化。
事情的分水岭在第一代程序员全部离职之后。这时代码离白手起家已经有很长一段时间了,加之前面几个阶段的腐化,很可能被交接的程序员要通读自己负责的一块已经有点困难了。并且没有了第一代程序员,一些代码的初衷,需要第二代程序员自己去领悟。这时通读代码的代价会越来越高,并且小范围重构的风险已经显现,多数程序员会选择在原先的基础上增减变量来维护,并且一些被弃用的代码,因为风险的缘故,不敢把他们删掉或者注释掉。这个时期出现代码加速腐化的几率会非常高。程序员的心情也会相当糟糕,很多人边骂上一代程序员,边加速代码的腐化,除非有一个比较有魄力的程序员或者领导,对代码进行小范围的重构,但事实是很少发生,因为大多数程序员都关心尽快上线而并不在意代码质量。另外一方面,第二代程序员中可能会有应届毕业生这样的新手存在,在读腐化代码的时候,肯可能会养成一些不好的习惯。
等到第二代程序员全部离职,在第三代程序员维护的时候,如果之前一直没有进行小范围重构,那么随着时间的推移,这个软件的维护成本将成指数形式增长。这个时候维护代码的心情就会极差,甚至程序员会花费很多时间去找某个功能的切入点在哪里。在白手起家阶段很容易的事情,在这个时候会非常困难了,因为你可能看到一个有着一万多行代码的文件,却不知道这一万多行里面哪些是有用哪些是没用的。更不可能去通读一遍。这就是我们现在东方财富通遇到的情况,唯有进行彻底的重构,才能解决问题。
由于我们组同时维护三个大软件,所以以上几个阶段中的大部分我在短短的半年多的时间里都经历过。财富管家我扮演了第一代程序员的角色,第一版上线之后,这个程序就很少去改动了。在天天基金的项目中,我既扮演了第一代程序员的角色,也扮演了接过离职的第一代程序员的任务的被交接者。而在东方财富通的项目中,我们整个组都属于第三代程序员。在这几个月里,我很能感受到开发一个软件白手起家容易,维护起来困难。
其实回头想一想,这跟执政很像。打江山容易,守江山难。很多既有制度在其创立者全部去世之后,需要后人揣摩制度的本意,甚至揣摩制度本身是否还合理,历史文献就像注释一样,帮助下面几代的执政者去领悟前人的意思。然而随着时间流逝,人心的变化,一些制度会出现很多bug甚至体制会和当前的形势不合,这时就需要小范围地重构,那就是改革。但如果后继执政者没有改革的魄力,而只是在前任的基础上进行有限的修修补补,甚至认为前任提出的制度必须一百年不动摇,那便会加速架构的腐坏。日积月累,终有一天架构的维护成本(例如伪稳)会变得异常高昂,甚至出现满足不了新需求的问题。此时只能等待彻底重构。而彻底重构所耗费的资源、产生的损失将是巨大的。中国2000多年来的王朝,基本就是这么轮回着。要跳出这个循环,只能靠有能力的人在中间阶段不断地小范围重构,而即便是这样,也许也不能改变制度腐化的最终归宿。

占课现象以及一个可能解

占课现象现在日趋严重,几乎到了没有关系就选不到好课的地步了。

之所以有占课现象,在制度上是由两条规则引起的。一条是年级优先权大于绩点优先权,另一条是第二轮选课的时间优先制度。

对于第一条,是无可厚非的。因为要保证高年级同学可以正常毕业。但是两条规则合起来,则变成了占课漏洞。

分 析占课机制,其本质是使用了信息不对称方法。即高年级的A和第年级的B互相协定在第二轮选课的某一个时刻交换课程。按照时间优先制度,在A退课到B选课的 这段时间里,全校学生抢占此课程的几率是一样的。但是通过信息不对称方法,全校只有B知道在这个几秒中的时间段里是可以选课的,这样就大大提高了B抢占课 程的几率。这样的话,除非B的运气实在很背,被恰巧抱着试试心态的C刷到课了,不然一定能抢占这个课程。

解决这个问题方法,就是打破这个信 息不对称,让全校学生都知道在某个时间段是有均等几率刷到课的。一个可行解就是将第二轮选课的规则做如下修改:以n分钟为时间间隔(比如30分钟),在第 一个30分钟内只能退课不能选课,在第二个30分钟内只能选课不能退课,以此类推,循环往复,直到第二轮选课结束。

这样,A和B就无法协商在某一时刻利用信息不对称来快速交换课程。因为所有学生都知道只有在某一个时间段才能刷课,此时所有人刷课的几率几乎是一样的,这样就大大降低了占课成功的几率。

此方法有一个副作用,即每次到了可选课时间段,必然有大量的同学尝试刷课,对教务处的服务器有非常大的压力。但我认为这个副作用并不会持续很长时间。因为大家都会知道占课非常困难,那么自然不会有人去选择占课了。

个人逻辑能力有限,无法证明上面的方法没有漏洞,也暂时举不出反例。

以上方法灵感出自GFW间断性干扰Gmail。

关于这几天的面试、笔试

除了上次参加了腾讯的笔试之外,还参加了携程的笔试、面试,新致软件的笔试、面试,大众点评的笔试、支付宝的在线评测。其中腾讯、支付宝和大众点评都在笔试后就被刷掉了。这也是在意料之中,腾讯笔试的时候自己根本没有复习过,所以虽然题目都见过,但是就是做不出来。大众点评和支付宝都有大量的限时数字、图形推理题,基本上是测智商的那种,我智商也不是很高,所以基本上没什么戏了。

下面具体讲一下每个笔试的内容:

 

支付宝网测:

基本上是智商题。关于智商题,可以参考欧洲标准智商测试这类的题目,我觉得如果训练一下的话应该可以得到很多提升。另外支付宝的第一部分竟然是高中物理题,基本上是中等难度的大题目,不过要求一分钟一道实在是吃不消。

 

大众点评:

分为两部分,第一部分是纯粹智商题,和支付宝一样,略简单一些。智商题细分了三部分,语言逻辑(比如“xx之于xx就像xx之于xx”),数字推理(各种形式的数列等等)以及抽象逻辑(图形的推理)。第二部分是编程题,一共两道题。第一题是“有一个不重复数组,数组里的数字的值在1~N之间。求出数组中数对的个数,这种数对满足两个值加起来等于N+1”.这题如果用O(n2)的穷举法是肯定可以求出的。我算法不好,写上去的就是穷举法。。。第二题是关于海量数据排序,原题是“2亿个数据排序,写出可行算法以及伪代码”。对于这个,我没接触过,就瞎写了,当时写的是用归并排序,不过后来想想归并排序最坏情况的时候还是要把所有数据放到内存中的。

 

携程:

携程是唯一一个让我进入复试的大公司。今天下午刚刚复试完回来。

我并没有应聘携程的软件开发,而是应聘了前端(因为他们后台全部是微软的产品,不太喜欢)。一共笔试了两次(两场,中间隔了一个星期)。两次笔试完全没有专业题,他们的技术总监讲是因为学校的东西和实用的脱节太厉害了,所以不考专业。

第一次笔试是给HR初选用的,第一部分也是智商测试。但是携程的智商测试难度和支付宝完全不是一个等级,里面的数字推理基本上一眼就看出答案了。第二部分是乱七八糟的简答题,三个问题:1.你对枪打出头鸟的看法;2.你对前端工作的看法;3.你最喜欢的官网是什么,并说出理由。这个显然就扯扯淡了。

第二次说是面试,结果也是先笔试。笔试有两道题。第一道题是所谓的“palapala表达式”。也就是定义一些“palapala”表达式以及对应的数学公式。比如$x.x+1就是f(x)=x+1;($x.x+1)4就是4+1=5等等。然后给出一些一长串的表达式要你化简。如果心细的话,死做一定能出结果的,如果聪明的话肯定能找到窍门。而我是一个粗心的笨蛋,所以第一道题有一小题做错了。不过这道题做错的人特别多,而且错误答案跟我一样。我不知道是答案错了还是我们错了。第二题是设计题,给出一个表格,把用户按键时间、移动鼠标时间、手从鼠标到键盘来回移动时间、心理反应时间等全部量化,设计出一个程序的界面,该程序用来把华氏度换算成摄氏度,或者从摄氏度换算成华氏度,要求用户所用的时间最少。这道题我首先想到了google翻译,输入即时出结果,全程键盘操作,本来想应该是最优解了,不过考官说不是最优解。然后我又想了很久,终于想到了一种方法,可以再减少0.1秒的时间,考官说这确实是最优解。另外,这次是一边面试一边笔试的。也就是做完了给考官看,考官跟你说你做错了,或者不是最优解,然后再回去做。就我目测,第二道题作出最优解的也有不少。有一个同学当场就被录取了,而我则是回去等电话的(基本上是没戏了)。

 

新致软件:

这是目前为止唯一录取我的公司。是一个外包公司,之前属于软件作坊,现在好像挺大了。

这个公司来我们学校开宣讲会的时候,加上我一共才4个同学去了。然后当场就笔试+HR的面试了。笔试题目是数据结构、C#、Java、C、数据库、逻辑题。外加一份性格测试。数据结构相对比较简单,因为之前复习的缘故,应该都没什么问题。C#和Java也非常简单。而C语言的问题就恶心的不得了了。全部是各种指针,各种花样,后来看了成绩基本上没做对过。数据库的题目有一道没做出来。逻辑题一共两题,全部做错。

逻辑题的第一题我还记得:4个人在黑夜里过河,桥上一次只能过两个人,过河时必须有手电筒,而且现在只给一个手电筒。A过河需要1秒,B过河要3秒,C过河要6秒,D过河要8秒,E过河要12秒。那么如何让这些人在30秒内过河。

接下来是HR面试,两个面试官面4个人。我和一个延长学籍的学生一起面试,显然对比起来我就非常的有优势。这位延毕的同学技术似乎也不怎么样,所以我就开始用开源实验室成员的名义乱扯淡了。这位HR似乎也不怎么懂技术,最后只问家住哪里、想往什么方向发展之类的。我说我想往架构师发展。于是过几天电话打过来,要我去二面(技术面),把我分配到研发部面试了。研发部面试的时候,不小心把话套到Rain and Cloud项目里面去了。这个项目服务器部分确实是我设计整体框架的,也基本上起了一个架构师的作用,不过因为这个项目的思路比较怪,有些设计比较幼稚和混乱,所以也不好意思讲。而我最熟悉的Java Web项目没讲到。不过好歹也用到了Spring和Hibernate,也就讲了讲他们怎么用。然后考官问我有没有看过底层代码,答没有。然后就开始讲工资了。过了几天就说我被录用了。这也是我碰到的最水的面试。主要是这家公司门槛真的不高。顺便说一下研发部的工作,就是开发一套自己的Java Web框架(像Struts那样)。另外,这位技术官竟然把Struts读成Struct了,让我有些汗颜。