卡其色的外套

过惯了香港短袖短裤人字拖的日子,昨天收拾来北京的行李的时候,想着带一件外套。手里攥着过年买的那件卡其色的外套,想着里面穿哪件衬衫面试好。人家说in your most comfortable style,但毕竟不好在穿的太学生腔,虽然到最后我也不知道该穿哪件。

又体验了一回北京地铁的拥挤和那散发出来的典型的内地式的味道。想起来今天在香港机场洗手间,一个七八岁的小男孩冲进来,猛吸了一口气,赞到:“哇,香港连厕所都这么香”。这个画面到现在想起来都想笑。

说回北京。五道口,传说中的清华科技园,搜狐网易都在这里,清华北大也在附近,一下地铁就感到扑鼻的大学城气息。两边的小吃店奶茶店都排满了人,迎着刺眼的夕阳走在路上,三五成群出行或者小两口幸福依偎吵架的都撞见了,不知道是今天的包太重了,还是自身条件问题,感觉路上的平均身高高出香港好多。然后就在想,我似乎对于骑着单车出行,排队买好吃的烧饼,大胆闯红灯的生活,路过手机贴个膜的生活,太过陌生了。

相比之下,香港倒显得太安静了。或者说,我很难想到有一块像大学城一样的地方。没办法,连郊野公园都要被移掉建住宅区,怎么可能会有大学城这种设定。也难怪local们ocamp要跑去HSBC楼下蛋比。

今天在去机场的巴士想了想,从香港出发都去过哪些地方,都和谁去的。我记得去普吉的时候,leo他们还在,陪着年幼无知的我们,打点一切acm后勤,那时候广东话还很烂,飞机上要喝的把苹果汁说成了番茄汁,当时的小伙伴们都惊呆了。去雅加达的时候,是acm队鼎盛时期,15个人浩浩荡荡,飞机上玩的不亦乐乎,印象最深的还是那张15个人的合影,在某个我强烈要求去的纪念塔前。之后去台湾,菲律宾比赛的时候,只有3个人,我已经能够操办一切了,订票住宿后勤领路。再后来去云南,只剩我和某只两人。到今天,旅途只剩自己。周围的人都渐行渐远,虽然这个运动是相对的。

大部分人的轨迹都是相交之后逐渐分开,很少能有两条链表最后重叠到一起,(判重叠这个问题是个好问题,我说面试的时候)。前天看半生缘,一直在想最后那句“我们回不去了”会以什么样的形式出现,结果实在收的很潦草,而且有个死女人在上面唱歌很讨厌,完全破坏气氛。记得第一次看这个故事的时候,是高二吧,总替这二人唏嘘。前天看完,反而觉得这二人若是有稍许魄力,或许还真能回的去,而且以张爱玲的世界观,这应该也不是什么大不韪的设定。不过,谁知道呢。

有点困了,希望明天面试安好,虽然我还是不知道卡其色的外套里面穿深的还是浅的。

@北京,五道口,文津国际酒店

行到水穷处,坐看云起时

最近被Paper搞的像只无头苍蝇一样,根本没有多余的时间去想一些事情,脑子里又是一团浆糊,好不容易benchmark跑上了,姑且写一点什么吧。

行到水穷处,坐看云起时

前两天打算换个桌面背景,就突然看到这两句话,觉得有那么点契合心境。

这应该是学生时代的最后一年了吧,刚开学的校园不再给我增加任何的新鲜感,反而是一阵一阵的烦躁,餐厅一致在开学那天涨价,算是给我们的见面礼;吃饭要等位,大O组聚开学饭;百佳的三个大妈要大战几千号学生;游一个50m要换6个泳道,我除了说一句WTF只能庆幸自己在暑假享受人少的乐趣已经够多了。现在,就留给那些在泳池里一个妹子身边围着的六个汉子吧。

这个学校已经不属于我了。

周末去CC吃饭,原本的辫子路早已不再黑漆漆,某个新活动室灯火通明,也再也不会有女生会害怕要拽着男生的胳膊走了;吃完回办公室,问到怎么走,“伍何曼原”咯,原本上新宿的那条弯曲的小路,早已被人抛弃。已经记不清没建新楼时候的那里是什么样的了,依稀记得有个废弃的篮球架,杂草丛生,据说以前是个幼儿园。如果早点开始玩摄影,可能在若干年后的老照片展会风光一把。如果若干年后未圆湖被填掉变成了新楼,我一点也不意外,不过估计学生会会造反的。

学生时代就剩一年了,不出意外的话,大四毕业那年毫无感觉,photoday就是一群人在玩,毕业礼还是一群人在玩,研究生读的一点感觉也没,刚刚找到点研究的门路,却又得开始找工作了。今天Dick大大意外的回来,据说是Patrick找他有点收尾的事情。和他讨论了下工作的选择。Dick是个典型的勤劳上进不舍的吃不舍的花的香港好青年,今天的晚餐就先吃了个猪柳强,然后走的时候快10点了,说想再吃点什么。我说大学站那有鸿福堂还开着,有烧卖鸡腿。他马上摇摇手,说好贵。我说味道也就一般,他说,没吃过。

没吃过。

我想说我能看到的是一个在香港高房价高压力下苦大仇深的生活攒钱买楼排公屋大好男青年。

我不知道他有没有想过出国工作,或者之后的打算,但我觉得他去的这个公司只是一个很普通的选择。他的Linux水平是我目前见过的最top的三个人之一,其他两个一个是小飞飞,另一个是操哥。这两人现在都在投行,房子妹子都有了,基本上可以算作人生的赢家了,小飞飞也算是典范了。大部分的香港人都十分喜欢自己的城市,这本无可厚非,但是都太过安于现状了,或者说,太没有生活了。那天某人问豪大大赤柱好玩不,豪大大说有条街咯,点样?没去过。

没去过。

我不知道一年后我会在哪里,我希望是个我没去过的地方。希望最后这一年,一切安好,水穷之处,希望不是沼泽,而是片能躺能坐的能看彩云飘的草地。

 

 

五周年

昨晚从美食博览会回来的路上,突然意识到这是我踏上香港的第六个年头了。等校巴的时候,旁边立着的“内地本科生”报道处的牌子很有默契的佐证了我的想法。坐到三四苑下车,周遭无人,耳边响起了步步的Who…,抬望眼,陈宿依旧灯火通明。五年前,陈宿对面还不是SB一样的和声书院,只是一个小山头,我也不会被开山后生态环境被破坏而后爬上来的猴子抢走香蕉。五年来唯一不变的,估计是那部电梯里那鸡叫般的“升降机上”。

有时候看来再寻常不过的景,也终会有一天不见。

(尼玛昨天上火的东西吃太多,搞得现在发炎了,没心思写了= =,之后再补)

 

进进出出,生生世世

如果觉得这题目很邪恶,那是少年你想多了。

今天是高考第一天,命运的转盘又再一次开启。各地的高考作文题又纷纷被吐槽,尤以江苏的为甚。让我想起之前有一道作文题,引用《围城》里的那句“外面的人想进去,里面的人相出来”,然后以围城为题写一篇不少于800字的文章。那年我还在读高二吧,作为钱钟书的同乡,连围城都没看过,拿到这题也就蒙了,也早已记不清当时捣了多少浆糊。

上个月终于看完了围城,也向着文青(伪)的道路继续迈进,不愧是被誉为新儒林外史。钱钟书对人物的刻画把握非常到位,很难想象上世纪30年代刻画的人物、场景、设定都可以一一对应于现在这个时代。

这个世界有三类人,男人、女人和女博士。这个现代人吐槽的设定,倒是映射在围城中。男博士方鸿渐不娶倒追他的女博士苏文纨,而是钟意唐晓芙那样的一个真正的女孩子,“女人有女人特别的聪明,轻盈活泼的跟她的举动一样。比了这种聪明,才学不过是沉淀渣滓。说女人有才学,就仿佛赞美一朵花,说它在天平上称起来有白菜番薯的斤两。真聪明的女人绝不用功要做成才女,她只巧妙的偷懒…”想想非诚勿扰吧,多少海归男对另一半的学历并不在乎,反而是某些小老板比较在意高学历。

方鸿渐喜欢的唐晓芙,最后却娶了彼此不讨厌的孙柔嘉。这件事放到今天,一定会被纷纷吐槽说是偶像剧经典桥段,喜欢的一直都没有变,只是在妥协。记得有个故事是说,什么是爱情,什么是婚姻。老师叫学生去路上摘苹果,要尽量挑大的,但摘到一个就不能再摘了。学生第一次去了,走到路的尽头,空手而归;第二次,挑了一个不大不小的。后来老师告诉学生,第一次摘苹果是爱情,第二次就是婚姻。有多少人第一次就能捡到最大的苹果呢?(我是理科男我想来毁小清新,设路上总共有N个苹果,采取如下取苹果策略,首先过滤前m个苹果,从第m+1个开始,如果当前那个比前面的都要大,就取它。当m=N/e,e为自然对数是,有1/e的概率取到最好的)

结婚前柔弱的孙柔嘉和结婚后的霸道,实在是让我替方鸿渐这个小男人捏把汗。柔弱大概是一个女人最强大的武器了吧,看看孙柔嘉搞定方鸿渐那一段,一路奔波恰到好处展现自己的柔弱,方鸿渐被学校整的时候装同盟,等到有人来八卦时机成熟了,就躲在方鸿渐背后抓住他的胳膊…于是生米就成熟饭咯。太尼玛厉害了

好像说来说去要么是关于女人,要么是关于爱情,围城之经典可不止于此啊。可惜一周目看的时间有些久了,二周目那会,再细细品吧。

祖祖辈辈,生生世世,城外的人想进去,城里的人想出来,却不知,这城,是自己一手打造。

New Year Resolution

十二点多睡下,迷迷糊糊的躺了几个小时,五点多就爬起来了,坐着看天一点一点亮起来,只是很可惜今天没有朝霞,太阳也出不来。

新年到了,于是换了域名,118是现在的办公室,zie是高中那会某人给我起的,读起来就是名字的无锡话吧,没什么特别的含义。Godaddy上找的优惠码,买了一年只要0.99刀,用着玩吧就当。上一回买域名还是09年,如果没记错的话买了两年,结果到今年才过期,彻底无语。

Mphil的第一学期结束了,8月开始跟ArchLinux搏斗,到现在才发现,自己的启动栏里只有两个按钮,一个终端,一个浏览器。生活是多么的单调啊。上的两门课纯属自虐行为,记得Irwin King在Social Computing的最后一节课说,你们这群无知的人啊,13个星期前你们对这个topic是一无所知,现在你们blablabla……我没听清,因为13个星期后我还是能算一无所知……Course project做的很辛苦,后来presen的时候才发现完全没有必要,大把内地研究生水过去了,而且presen那会很多内地研究生应该是在国内从来没做过presen吧,英文和presen技巧都不敢让人恭维。Andrej的Cryptography则是大神级别的存在,勉强听懂一半吧,感觉自己的数学和理论基础实在太差了,无法直视。手边有本《数学是什么》,还是得抽空读一下的。

11月底让爸妈来参加毕业礼,有些事情不逼着去做,或许不做也就算了,坚持让他们来,也是为了日后想起来不留遗憾吧。只是那段日子天气不好,架着三脚架自己拍合照的那会才觉得,上一次架着三脚架拍合照,还是七八年前了吧,再上一次,在我记忆里,应该是现在挂在我卧室的那张了吧,小学时候的了,想来还是会很唏嘘。

世界末日的那晚,其实还是蛮期待的,估计是好奇心加上冒险精神的反应吧,第一次圣诞节没有回去,感觉也没有什么不同,就是一个普通的红日假期,本来想要是apple store打折什么的,就抱台mac mini回去,后来也就不了了之了。

然后新年就到了,开始写new year resolution,列几条在这吧,希望都能实现。

  1. 学会弹吉他
  2. 按一万次快门
  3. Topcoder分数上到黄色
  4. 考完TOEFL,GRE
  5. ……

早安,万年真爱日翌日。

那些时光,像宝石一样掉落在过去的岁月里

最近常常会有一种莫名而来的失落感。

今天看ironwood branch切菜(http://competition.binus.ac.id/icpc2012/result/index.php),毫无悬念的。在FB上一阵关于“我早知道他们能切菜,港大的都是手下败将”的讨论之后,突然觉得自己其实一无所有,而后陷入了深深的失落之中,不能自已。

我开始重新审视我自己。

那些年引以为豪的ACM光辉岁月,其实一点也不光辉。外人眼里,每年能出去比赛公费旅游已经是一件很开心的事情了;略微懂行一点的,也觉得会写那些程序应该是很牛逼的了吧;队里面,或许互相会恭维几句,但是实力自己心里清楚。而事实就是,I was not that good。到了最后一年,最后一场,就算想争,也是力不从心。那些天时地利人和的借口,现在看来,不过是掩饰和自欺。

What can you do when you good is not good enough.

When all that you touch tumbles down?

突然觉得自己,似乎开始对很多事情提不上劲。但每当看见别人做成某事,自己原本也可以做到,做与不做只是一念之间的事,还是会心里很不舒服。然后当别人问起的时候,心里堵的慌,却又无处可说。已经不是一两次了。然后,那些事情,连同那些时光,都真的,掉落在过去的岁月里,带不走了。

My best intentions keep making a mess of things

Just wanna fix it somehow

But how many times will it take?

To get it right

璀璨

最近一段时间,每当大脑处于idle的时候,就会自动播放《Jewel》,直到最近才知道歌曲名的国语翻译是《璀璨》,不由的更痴迷了一些。听歌的时候,才会觉得人与人之间的不同,有时候的确是无法超度的。回忆里的歌,跟歌里的回忆,就算是回忆里的那些人,恐怕也无法体会的吧。感谢这首歌,我又开始练吉他了,不为别的,只是突然觉得,若是能自己演奏,应该是一件值得开心的事情,因为不用再担心回忆不见了。

那天从办公室走出来,突然觉得周围熟悉的一切都变得异常陌生,想把这种感觉跟旁边的人说一下,却发现要么就只有对着那几个摄像头了,而且摄像头应该也没有麦,说了也等于没说。停顿了一下才想明白,自己已经不属于那些地方了,应该向前走了。无论在那里留下的是光辉璀璨,还是灰朦阴暗,统统都叫做过去。

[zz]CS牛人面经

下面将分Behavior Question和Technical Question分别介绍个人的面试准备技巧:

I. Behavior Question

这类问题的特点是,易准备,好回答,必出现。所以一定要花几个小时好好准备,写写提纲,面试前对着镜子说几次。

a. HR Question

最无聊的一类问题,比如“why Microsoft?”、“what’s your plan in 5 years? ” 一般为HR所喜欢。

推荐准备材料:http://hrinterviews.blogspot.com/。把这64道题刷一下,所有的HR问题都不会是问题了。准备的方法类似于托福口语,准备几个段子,反复用,就很充分了。

另外,回答一定要真诚。比如,如果被问到“what’s your weakness?”,你如果回答:我太追求完美太热爱工作巴拉巴拉——太过时太恶心人了吧,亲!

b. Talk about your project

一般会在面试的开始被问及,必然会被问到的题目之一。把简历上的项目好好地阐述,辅以画图更佳。一些经典的Follow up是:What is the most challenging part? What will you do if you have opportunities to improve it?

百分一万的准备好这些问题!面试官通常会刨根问底。答的吭吭哧哧,几乎是不诚信的表现。

c. Question for interviewer

一般会在面试的最后十分钟里,面试官会请你提出问题。这是你展现对公司的激情、个人的兴趣、和面试官套近乎等等等等的大好机会。不要说“no”或者仅仅问“啥时知道结果啊,哥们”这类的问题。至少准备五个有深度的问题。

个人经验来说,最好的方法还是随机应变,根据之前面试的情况来合理提问。比如,我在Google的一次面试里,面试官无意间提及他在设计一门新的编程语言。面试最后,我就满脸好奇地说:“talk about your language, please”。然后我和他就编程语言的设计各方面进行了一些小讨论,他最后离开时万分兴奋。就这样,对面试官的尊重,自身兴趣和能力的展现,对技术的激情——一脉相承,水到渠成。

II. Technical Question

技术面试的最核心部分。

下面是一些笔者使用过的材料(请适当支持正版):

Programming Interviews Exposed
入门级书籍,可以了解一些基本概念。

Cracking the Coding Interview
中级书籍,经典必备教材,重点推荐,重中之重!从头到尾我做过五次。

Hacking a Google Interview
MIT的一门课程,教学Handout可作为中级题目练习。

mitbbs的JobHunt板块
资料很多,水帖更多,可以寻找到很多战友和第一手的面经。可以重点学习里面的精华贴。

http://www.sureinterview.com/
中高级的算法题。

http://www.leetcode.com/
高级算法题,难度偏难,可做适当了解。个人认为,如果不是面Google,里面的题目被面到的可能性不高。

Topcoder
知名的编程练习网站,有一些相关的材料和教材很经典。

面经来源:
mitbbs的JobHunt板块,Glassdoor,CareerCup

C++ FAQ
非常有名的高级C++语言学习网站。啃下来会很有帮助。主要的目的是为了应付关于Object-Oriented的相关题目。

如果你准备用Java,也请至少把语言使用能力达到中阶。

Object Oriented Analysis and Design (Oreilly Head First.)和
Design Patterns Oct.2004(Oreilly Head First)

两本OOP的经典教材。据说Design Pattern挺重要,但个人从未遇到过相关题目。但是大致了解一下,总不会错。

Wikipedia/Google
仔细查阅每一个你所不知道的算法、数据结构和概念,做好笔记。等你在面试时发现一个名词你见过却不知道是什么,你会把肠子悔青的。

每个公司所关注的技术
这一点非常重要。比如面Google,就要把Distributed System和Information Retrieval的相关技术了解下,好好看看他家的经典Paper:Map-Reduce和Google File System;比如面Bloomberg,对C++的了解和使用一定要啃到一定级别;比如面Amazon,要准备好OOP。

相信我,花六个月的时间,把上述的所有材料搞定,世界上没有哪个技术公司你进不去的。(You know I’m kidding… But it’s basically the fact. )

你可能会问,那如果我只有一周,或者两天,甚至更短的时间去准备一场面试,该怎么办?

我的回答是:第一,如果它是phone interview或者on-campus interview,那只是初级的筛选,难度不会很高,just relax;第二,拿下上述材料中的初级和中级部分(再次强调Cracking the Coding Interview这本书),然后根据公司来决定学习重点,这样就应该有不错的发挥了。毕竟个人积累不同,尽力而为吧。

当你拿到on-site的邀请时,不要去炫耀你的成就了,赶紧去准备之后的面试吧。On-site的难度深度都会有很大的提高。那才是真正的战斗!过不了on-site,你什么也都不是!

下面我会分topic介绍一下准备重点。在你准备面试的过程中,你也应该有一份这样类似的word文档,记录你每天学习到的所有东西。

面试准备绝不是背诵和题海战术,而是能帮助你对CS知识的理解和运用提升到新高度的过程。

1.) Time Complexity分析

基础中的基础。绝大部分情况下,算法的时间复杂度能一眼看出来。

如果是面Google,需要掌握一些严密的时间复杂度的数学推导,有些算法不是一眼能看出时间复杂度的。

2.) Coding

废话!

但是需要练习的是在纸上和在白板上写code。 (不要小看这件事!关掉愚蠢的Eclipse和VC吧)

更关键的是,写的代码要一次成型,bug-free,即使多花点时间。如果你平时有写完代码再慢慢debug的习惯,是很不利的。被面试官找出bug来,你的分数会被大扣分!

语言选择上,C++和Java,抑或 C#,都是无可挑剔的选择——好比,孙权刘备曹操主;

Python,Ruby,Perl啥的也还行,在字符串处理上有奇效,但面试官未必买账,因为有些问题他需要你从底层实现起——貂蝉诸葛主;

啥,你说汇编?——黄盖主!还是开局鞭挞至一血的!

3.) Data Structure

题目类型大多是:给定一些实际需求,来设计相应的数据结构。所以,对每一种数据结构的特点、时间复杂度要非常熟悉,而且要有很敏锐的第一感。

a. Hashtables

可以说是人类发明的最重要的数据结构之一了。面试时的出现率极高!

保证你玩得转Collision strategies和hash function。如果深入到如何设计具体的hash function,题目的难度也会是很大的。

b. Trees

BST,BFS,DFS,trie,Kruskal’s Algorithm ,Prim’s Algorithm

Balanced tree就没什么研究必要了。

c. Graphs:

图的几种储存形式,BFS/DFS,Dijkstra,A* algorithm

d. Linked List/Queue/Stack/Heap

相应操作的时间复杂度要了如指掌。保证你能轻松写出C++ STL或Java Library对应类库的API。

4.) Algorithm

重中之重的重中之重!

Sort,Recursion,Binary Search,Greedy Strategy等等等等要全面准备到。

Dynamic Programming的一些经典题也要会。如果面Google,可能要准备一下DP的高级题目。

笔者认为,准备这类题目毫无捷径,只有不断刷题,总结,刷题,总结。要培养出对题目的直觉,这是一个漫长的训练过程。

在面试的时候,一般来说,要先给面试官提供一个暴力搜索的方法,然后计算复杂度。然后再慢慢做优化。面试时一定要keep talking,提出自己的想法,展现自己的思路。如果你get stuck,面试官也会给出相应的hint(当然这是会被扣分的)。

5.) System Design

常见形式是:给定大数据量和N台机器,解决一个特定的问题。较开放的题目。在网络公司的面试中经常出现。

解法有固定套路,可以参考Cracking the Coding Interview 相关章节,并自己做一些总结和应用。这类题目看起来很难,掌握方法后,实际难度并不算很高,而且容易展现自身的分析能力,容易出彩。当然,面试官很可能会做适当的延伸,涉及到具体的技术,这就靠自身平时的积累见招拆招了。

推荐的一些补充阅读材料:

External Sort (http://en.wikipedia.org/wiki/External_sorting)

Web Crawler (http://nlp.stanford.edu/IR-book/html/htmledition/web-crawling-and-indexes-1.html)

Google MapReduce (http://labs.google.com/papers/mapreduce.html)

Google File System (http://labs.google.com/papers/gfs.html)

6.) Mathematics

重点在于组合数学和概率论。会有一些这类的变体出现。稍微准备准备就可以了,相信国人的数学水平,绝对凌驾于世界巅峰,不管他面试官是阿三还是老美还是欧洲人。

7.) Operating Systems

Processes vs. Threads

Locks, mutexes and semaphores

Deadlock and livelock

Scheduling: FIFO, priority, shortest remaining time, round robin, and multi level.

不算特别重要。至少笔者从未遇过相关题目。

8.) Bit manipulation

两个目的:应付该类面试题(出现率不高,但是Google喜欢问);

用于自己的编程技巧——尽管有些silly,但是在代码中整一点bit manipulation,是很geek的事。

9.) Design Pattern

了解这些:Observer Pattern, Decorator pattern, Factory Pattern, Singleton Pattern

面试是一个很吃经验的考试。不要顾忌前几次的失败,那都是必要的练级。

最后,送上我笃信的一句话:”Success is just like being pregnant. Everybody congratulates you but nobody knows how many times you were fucked”。

谨以此祝愿所有的童鞋都能获得自己Dream Company的offer!

全文完。

Zhengli Sun©2011

写于退役赛之前的56个小时。

从不能忘记当年NOIP时候的我,急速的做完第一题快排,迷失在第二题的字符串和第三题的DP。每个人心里都有那么一个梦,梦之所以美好,是因为挣脱了现实的束缚,所以从某种意义上来说,去实现心中的梦往往是把它硬生生的拽回现实,然后遍体鳞伤。

然而这并不能抵挡人们实现梦想的冲击,至少我对此免疫。从接触NOIP开始,到现在的ICPC,差不多七年了,七年里体验过懵懂,经历过绝望,品味过惊喜,游趟过迷惘。闭上眼,这些依稀浮现在眼前,只是从前的我从来没有好好去感受。能为一个梦坚持了七年,不是说我有多牛逼,多坚韧不拔,只是单纯的不死心。

明天去马尼拉,参加今年最后一场regional,或许也是我人生中最后一场regional。我相信我能把那个梦系上气球,然后放回宇宙,不再受现实的煎熬。从前,从未拿过第一,无论是数学物理化学信息学ACMIBMIntelCup,似乎千年老二的阴影总是挥之不去。希望马尼拉的太阳,能把一切阴霾散去,也不枉其那么靠近赤道。

晚安,香港。

早安,我的梦。