Jekyll2020-01-13T07:52:21+00:00https://blog.imley.net/feed.xmlLei’s blogMy Personal BlogLJJan 12, 20202020-01-12T21:50:00+00:002020-01-12T21:50:00+00:00https://blog.imley.net/2020/01/12/it-snows<figure class="third ">
<a href="/assets/photos/20-01-12-small.jpg" title="Jan/12 2020, @WA">
<img src="/assets/photos/20-01-12-small.jpg" alt="Jan/12 2020, @WA" />
</a>
<a href="/assets/photos/20-01-11-2-small.jpg" title="Jan/11 2020, @WA">
<img src="/assets/photos/20-01-11-2-small-th.jpg" alt="Jan/11 2020, @WA" />
</a>
<a href="/assets/photos/20-01-11-1-small.jpg" title="Jan/11 2020, @I-5 N">
<img src="/assets/photos/20-01-11-1-small.jpg" alt="Jan/11 2020, @I-5 N" />
</a>
<a href="/assets/photos/20-01-10-small.jpg" title="Jan/10 2020, @I-5 S">
<img src="/assets/photos/20-01-10-small-th.jpg" alt="Jan/10 2020, @I-5 S" />
</a>
<a href="/assets/photos/20-01-09-small.jpg" title="Jan/09 2020, @SLU">
<img src="/assets/photos/20-01-09-small-th.jpg" alt="Jan/09 2020, @SLU" />
</a>
<a href="/assets/photos/20-01-08-small.jpg" title="Jan/08 2020, @SLU">
<img src="/assets/photos/20-01-08-small.jpg" alt="Jan/08 2020, @SLU" />
</a>
<a href="/assets/photos/20-01-07-2-small.jpg" title="Jan/07 2020, @SLU">
<img src="/assets/photos/20-01-07-2-small.jpg" alt="Jan/07 2020, @SLU" />
</a>
<a href="/assets/photos/20-01-07-1-small.jpg" title="Jan/07 2020, @SLU">
<img src="/assets/photos/20-01-07-1-small.jpg" alt="Jan/07 2020, @SLU" />
</a>
<a href="/assets/photos/20-01-06-small.jpg" title="Jan/06 2020, @Denny Way & Terry Ave N">
<img src="/assets/photos/20-01-06-small-th.jpg" alt="Jan/06 2020, @Denny Way & Terry Ave N" />
</a>
<figcaption>Photos of the week: Jan/6 - Jan/12
</figcaption>
</figure>
<p>前面一天发一张图片到博客,觉得很麻烦,于是决定改成一周一次,拍照和处理都还是一天一次。</p>
<p>本来是为了省时间,没有想到因为每天的图片比例不太一样,开始把原来比例的图片直接放成相册没法对齐,花了一分钟试图说服自己,最后还是一张张给调整了缩略图。其实第一排的比例还是不统一 - 不过貌似这个相册要么一排三张,要么一排一张,那就这样吧。</p>
<p>这周的天气啥都有,刚开始几天偶尔会有晴天,周中的时候居然都可以晚上看到满月,到了周末连续的雨最后就变成了雪。朋友从北京过来出差抱怨西雅图的天气,还有downtown的治安,我觉得是北京的经理们故意的,故意让大家对这个城市提不起兴趣。</p>
<p>我第一次来西雅图就是夏天(不过不是出差),见识了什么叫做几个月不下雨的西雅图。当然没有雨也不好,前一两年就在夏天看到了下灰(因为山火)- 话说那次好像也有人出差过来,好吧,经理们肯定看天气预报了,或者加拿大的山火就是他们放的。</p>
<p>今天Seahawks这个赛季最后一场比赛,我这个伪球迷每次看到上半场都觉得没戏了没戏了,结果下半场都能把胃口又吊起来,这样也挺好的,伪球迷追求的就是这个刺激。可惜今天没有挺进下一轮,不过也还好,别的球队也就最多能多打两场了:D</p>
<p>下周末回国过年,得想办法更新或者攒着了,拍照还是应该能够继续,处理就手机顶了(突然想到因为时差中间会丢一天,还得抓紧拍照)。</p>LeiPhotos of the week: Jan/6 - Jan/12Jan 05, 20202020-01-05T16:13:00+00:002020-01-05T16:13:00+00:00https://blog.imley.net/2020/01/05/the-rain<figure>
<img src="/assets/photos/20-01-05-1-mini.jpg" alt="the car" />
<img src="/assets/photos/20-01-05-2-mini.jpg" alt="sunset" />
<figcaption>@WA</figcaption>
</figure>
<p>今天起来的不早,还好太阳也是,在超市买完菜蓝天才从西头漏出一个角。</p>
<p>于是去了之前看到的停车场想碰碰运气,当然东边的天还是阴的,正好停车场孤零零的停了辆老爷车,这是第一张图片。</p>
<p>回去心满意足地吃火锅,想着要是待会儿风把东边的云也吹走了,再回去停车场附近拍拍东边的山,结果吃完火锅天都快黑了(四点就黑),东边的云貌似又回来了,于是去了附近的山头,拍了拍今天的夕阳,这是第二张。</p>LeiJan 04, 20202020-01-04T16:33:00+00:002020-01-04T16:33:00+00:00https://blog.imley.net/2020/01/04/love-cats<figure>
<img src="/assets/photos/20-01-04-1-mini.jpg" alt="Cats" />
<img src="/assets/photos/20-01-04-2-mini.jpg" alt="LOVE Cats" />
<figcaption>@WA</figcaption>
</figure>
<p>发现了西雅图冬天太阳的规律,就是无法被懒惰的人捕捉。</p>
<p>早上还是晴了那么一会儿,于是想着是不是可以去之前看到的某个停车场,拍拍东面的山。</p>
<p>还没有到下午,天空就阴得像是没有蓝过。</p>
<p>在家里按了一张Mittens和Pork Chop的照片,晚上出去吃饭的路上也拍了一张前车(车后有LOVE),本来拿不定主意选哪一张,突然发现LOVE其实是四只猫咪。</p>
<p>那就当这两张照片有缘分吧。</p>LeiJan 03, 20202020-01-03T13:26:00+00:002020-01-03T13:26:00+00:00https://blog.imley.net/2020/01/03/no-parking<figure>
<img src="/assets/photos/20-01-03-mini.jpg" alt="No Parking" />
<figcaption>@ Thomas St & Terry Ave N, Seattle</figcaption>
</figure>
<p>早上西雅图迎来了久违的太阳,这件事我直到看到别人的朋友圈才意识到。</p>
<p>中午买饭的时候把相机拿了出去,可惜天又阴回去了。</p>
<p>经过Mamak原来的位置附近的时候,看到对面的车库门拿起相机按了一张,没有怎么上街拍过,还是很不好意思,不知道是我手歪还是西雅图的坡,构图看起来是歪的。</p>
<p>本来我把这个博客整理一下,搬到GitHub,是想写写年终总结的,但是等所有的东西都配置好却不知道从哪里写了,于是放弃。</p>
<p>我从一周前开始,试着每天拍一张照片处理一下存档,这是第8天拍的。希望自己能坚持,然后定期/不定期的发一下这些照片吧。</p>Lei我的2014, 15以及162017-01-01T10:50:00+00:002017-01-01T10:50:00+00:00https://blog.imley.net/2017/01/01/my-2014-15-and-16<p><strong><em>三年不写总结的是怎样一种感觉?</em></strong></p>
<p>也没有什么。上一次总结以后,到了第一个年中总结的时候,大概是觉得刚刚工作,也没有啥好写的。也许是觉得北京户口还没有到手,在那个敏感的时候写点啥会不会就没有户口了。</p>
<p>有了第一次总结跳票,后面的跳票也就轻松了,在这个期间,我还是维护着这个博客的服务器和域名。只是,我的总结,变成了朋友圈里头的照片和只言片语,也没有那些敏感的东西了。</p>
<p>拖延了三年的总结怎么写呢?</p>
<h3 id="回家">回家</h3>
<p>周围的同事纷纷开始订春节回家的票,本来不大倾向回家过年的领导和我,在认真权衡了一下利弊以后,还是订了往返长沙的联程机票:两个人才1200刀,也就比从北京往返的机票贵一点点;来回都是15个小时左右,跟当年我第一次去北京的特快时间差不多。</p>
<p>一切和预想的都差不多:微信视频跟在国内一样好用,除了偶尔的延时卡顿;这边中餐馆是少,但是自己做菜,什么原料都能在中超买到;想要回家,机票价格和往返时间都没有那么贵(长)。只是,到了过年的时候,你还是不愿意冒险,让第一次不和家人一起过年和第一个异国他乡的春节重叠。</p>
<h3 id="告别北京">告别北京</h3>
<p>从小到大,我似乎并不会因为念旧而舍不得告别,相反,心里头总是向往去到更远更大的世界。从奶奶家的小山村到爸妈工作的乡镇我就开心得不得了;从乡下搬到县城我也适应得很快;到北京读书更是让成年的我更加适应那个气候干燥,冬天有暖气的城市;当转岗到西雅图的机会来的时候,我也欣然抓住,就像刚工作时的计划一样——<em>升SDE2,趁着还有Transfer的念头</em>。</p>
<p>告别北京的时候,也没有我想象的那么矫情,尽管请了三周的假回国,在北京呆的时间却不多。离开北京的前一天领导和我终于去了奥林匹克公园的钉子塔,那天的天气也特别给力,蓝天上点缀大的小的白色的云,没有雾霾。我和领导在塔的北边,东边,南边,西边都拍了好多照片,还和有蓝天的北京亲切合了影——第二天的天气就没那么棒了,飞机起飞的时候,还是没法看到一个清澈的北京城。</p>
<p>晚上是提前准备好的聚会,大学的那群家伙都到了(除了CFO放我鸽子),研究生盆友也捧了场,(前)同事小伙伴也来了,领导的盆友和前同事也来了。大家伙一起吃饭、喝酒、相互祝福——因为第二天要赶飞机,这次没有喝醉。</p>
<p>因为也算是结婚的答谢宴,大家伙给了一堆现金红包,心想带着一堆人民币现金在米国也没啥用,第二天在机场换一千多美金(柜台就一千多美金)——机场汇率是6.85,现在想想,也还算是赚到了。</p>
<h3 id="结婚">结婚</h3>
<p>是的,2016年,我终于办了婚礼——算是正式地结婚了。婚礼的日期在年初就大概定下来了,因为我转岗的事情在一起,还真的不太好安排。后来干脆决定先7月我一个人去西雅图,10月在回国在原来定下来时间举办婚礼。</p>
<p>我老是跟领导开玩笑,说以前我想象的婚礼可隆重呢——我要包飞机、包酒店,把乡里乡亲、朋友同学都接过来,然后婚礼现场超级豪华,摆他百来桌,来个著名主持人,所有人都羡慕得不行。</p>
<p>不过最后婚礼和我少年时的设想不太一样——我们连续办了两场婚礼,前几天就开始忙得不行,到了第二场结束都累得像狗——同学朋友没来几个,不过我的死党和领导的闺蜜还是大驾光临——可惜婚礼是个劳神费力的过程,也都没有跟他们多打上几句招呼。</p>
<p>婚礼和设象的不一样,领导老妹精心制作的视频让领导把妆都哭化了,岳父眼泪在镜框后头打转、岳母更是抱着领导一起哭,婚礼以后,我和领导都多了一个爸爸妈妈。</p>
<h3 id="求婚">求婚</h3>
<p>其实早在婚礼前一年,我和领导就在北京领了红本本,那是2015年的感恩节,从此以后多了一个庆祝感恩节的理由。</p>
<p>领证的日期是早些定下来的,本来想着双11和CC他们一起领,不过后来由于我妈对光棍这个词的反对没有安排到当天。领证的前几周,跑椭圆机减肥的我突然觉得,就算是在一起八九年,也不能想这样让人家姑娘跟你领证了——于是我决定,求婚。</p>
<p>就这样,拖延了那么久以后,我开始执行我的求婚,先是用另外一个手机和手机号注册了微信(我另外一个手机真的没有别的什么功能),加了几个盆友开始密谋求婚的计划。一开始想了各种充满惊喜的方案,不过最后还是决定用最朴素的方法——在自己家求——过程就是约领导出去吃饭,盆友们进屋布置,让领导先回家,放视频,出现,跪下。</p>
<p>于是两周,我开始以加班的名义在公司制作求婚的视频——在一起那么多年的素材还真不是盖的,我们oncall的时候还真的就是每天晚上很晚回家,所以领导到最后也没有一丝怀疑;前段时间开始折腾创业的伟哥,被我作为当技术顾问的理由利用起来,掩护我周末独自外出挑选钻戒——也是求婚当天让领导先一个人回去的理由。</p>
<p>最后的效果和预想的差不多,只是我像个傻子一样录了像却用的是静音模式——到今天我都忘了我当时求婚说的什么,只是看着求婚的默片里头——领导先是不知所措找着那个傻小子,然后自己也哭得像个傻姑娘。虽然默片里头啥声音也没有,我爱你三个字,是听得到的。</p>
<p>求婚视频的最后,是好几年前还在读大学的时候,我去厦门,在KTV里和领导K歌录下来的,当时唱的歌是——《今天你要嫁给我》——生活就是用这样的方式给出预言——预言几年以后我和领导的终成正果,还有 <strong><em>DT in the house</em></strong>.</p>
<h3 id="dt-in-the-house">DT in the house</h3>
<p>几年下来,虽然我没有年中总结记录,但是不光是国内,就连整个世界,都向着越来越保守的方向走过去了。来米国之前,国内各个新闻客户端头版头条已经让我觉得有些魔幻,但是我后来认识的那些刚毕业的米国同事一样,我是不相信川普能最后竞选成功的。</p>
<p>所以,当那天晚上看着电视直播,慢慢意识到米国后四年将由一个鼓吹保守主义、甚至是民族主义的celebrity(我能想到的中性词)领导时,一种对未来的不确定性就像一层慢慢笼罩的迷雾,让我觉得现实实在是太过于魔幻。</p>
<p>当然也有人弹冠相庆,国人当时还有觉得川普会 <strong>务实地</strong> 改善中美关系的;也有华人现实地庆幸于可以减税,以及不用担心自己孩子的上名校机会被其他少数族裔挤压。整个竞选期间,无论是米国租飞机给川普打广告的华人,还是国内为川普摇旗呐喊的知乎大V,让我觉得自己像是个异类,算是沦为了知乎上被嘲笑的精神白左。</p>
<p>整个2016,从英国脱欧到川普当选,整个世界仿佛在一年里头,消亡了二战以后对政治仅存的罗曼蒂克的幻想。2016结束的时候,我听到了最多的<a href="https://youtu.be/-rSDUsMwakI?t=1453">对过去一年的抱怨和诅咒</a>。谁知道2017会怎样,米国川普真的就要上台,国内又迎来下一个五年,世界还能往更好的方向发展吗?</p>
<h3 id="工作">工作</h3>
<p>抱歉本来年中总结聊的东西乱入,回到年终总结的节奏。</p>
<p>2014~2016,是我第一份工作的头三年。遗憾的是除了留在公司里头的一堆文档,我没有为自己好好记录这三年。大学有这个半荒废的博客和与领导的短信,高中有我的周记本,再之前也有和同学的书信和自己写的乱七八糟的东西。</p>
<p>刚刚工作的时候还真的是踌躇满志,对任何东西都充满热情,然后很快热情就<a href="https://www.amazon.com/Working-Effectively-Legacy-Robert-Martin-ebook/dp/B005OYHF0A">被现实浇灭</a>。再后来,我还真的迷茫过好一段时间,觉得自己和原来的计划渐行渐远了。于是就有了个内部换组的机会(还是原来的大组,换个经理,换个项目),我也没有怎么犹豫,选择了换组。</p>
<p>后来的发展证明我的选择还是正确的,如果这个选择教会了什么的话,大概就是:</p>
<ul>
<li>如果现实让你觉得被困住,那就积极寻求改变;</li>
<li>刚工作的时候,从一个简单具体一些的系统入手,还是更适合发展一些。</li>
</ul>
<p>工作半年后的换组,让我有机会在15年4月,第一次出国到欧洲上线项目(顺便利用周末和假期去好几个城市晃悠了一圈)。虽然项目工作量并不大,但是上线以后的反馈也算是不错,于是到了第二年的半年考核的时候,没有抱啥希望的我居然升了SDE2。</p>
<p>本来升职对于我,就是涨一下职称,可以有更多机会申请米国的岗位,结果出乎意料的是待遇也上涨不少,加上领导也换了工作、升职加薪,突然觉得留在北京混下去也未尝不可。所以到真的有机会转岗到西雅图的时候,我还真的小小的犹豫了一下。</p>
<p>真正操作转岗的时候,一切不像想象那么顺利,也没有那么多坎坷。本来,我在当时的组的工作,刚刚开始让我开始有种驾轻就熟的感觉,自己也有热情继续贡献下去,所以也没有想着特别早转岗去米国。但是,后来两件事加速了我来西雅图的决定——一是由于刚刚升职,第二年年终绩效的不尽于人意;二是我们当时经理的离职。</p>
<p>回头看看我在北京两年多的工作经历,除了工作上的成长,也很感激我遇到的那些同事:有我的学长,后来还有我的学弟学妹,还有那些已经成为前同事的小伙伴。我还是觉得很幸运,虽然外企在国内有养老院的名声,我却是跟一群真正有激情的年纪相仿的伙伴们一起。因为有这些像伙伴的同事们,工作让你觉得操蛋的时候,你还有一个人可以说,“Dude, what the fuck~”</p>
<p>到了西雅图以后,我又算是回到了一开始工作的那个系统上,不过这次,我更有准备了——少年,再燃烧一些热情吧!</p>
<h3 id="房子车子">房子,车子</h3>
<p>请问,一个米国人,一个中国人,他们有足够的钱,付房子的首付或者是买台车,请问他们的选择是?</p>
<p>这个问题其实不成立,因为在中国房子的首付已经比买车贵多了。而在米国,年轻人根本不会存钱好吧…</p>
<p>回到我身上,我在15年这一年和领导合伙在家里买了套房,就算是家乡,首付还是让父母出了大头(啊,现实,还是跟我当初的预期不一样)。说来也有趣,刚开始想要在家里买房的时候,我还没有升职加薪,要是早点知道,或许就在北京买了,那样,或许就不会来西雅图了。</p>
<p>还好当时买房选的精修房,所以交房后也没有费太大劲就搬进去做了婚房,房子是我来西雅图以后才交房进家具的,多亏了领导,在国内奋斗,让我享受了拎包入住。可惜交房以后,我也就回国住了两周。还好,不到一个月后又要回“家”了。</p>
<p>至于买车,则是由于米国不发达的公共交通逼迫的——其实,来米国前几个月,我就开始疯狂地上各种论坛,上Youtube看各种评测视频。最后,看来看去,还是lease了我最开始关注的那款——一辆我第一次买汽车杂志就向往的车。</p>
<p>刚刚买(lease也算是一种买吧)车的时候,不敢听广播、放音乐,上车就紧张得不行,油门也是一张一弛,领导第一次坐我的车回家,只有一个感受——想吐;而我呢,则是非常庆幸开到家了。现在买车两个多月了,已经跑了1k多个miles,终于敢在雨夜的高速上奔驰,也能在车上放音乐了。</p>
<p>至于在米国买不买房,什么时候买房,还在和领导热烈观望中。</p>
<h3 id="2017">2017</h3>
<p>这三年发生了很多事情没有记录,再看2013年的那些目标:</p>
<ul>
<li>接爸妈和奶奶来北京 – 本来都买好火车票准备出发了,爸爸突然重感冒还住院了,计划最后泡汤,还是没有接奶奶去长城,不过奶奶听说我来米国以后,有了来米国看“华兴屯”州的新计划 – 还是希望能早点在这边安顿好把爸妈和奶奶接过来玩。</li>
<li>陪领导去国外旅游 – 15年时自己一个人跑去欧洲给护照盖了个戳,领导护照的戳还是来米国盖的 – 中间也去了趟香港和台湾,不过政治正确的说法这个最多只能算“海外”。</li>
<li>去电影资料馆看电影 – 诶,遗憾的是,直到我离开北京也没有去成 – 不过我也看过香港电影节和北京电影节的参展影片,算是抵消这种遗憾了吧。</li>
<li>换iPhone 6 – iPhone 7 都出来了,我还是用Oneplus 2 – 其实中间用过一段时间iPhone 5,后来被弄丢iPhone 6的领导拿去用,但是领导把那个换过两次电池的iPhone 5也丢了。</li>
<li>读书 – 不及格 – 最近买了两本书,都没有读完,技术书就不指望了。</li>
<li>减肥 – 呵呵 – 希望自己能够坚持锻炼(我来美国以后居然开始打篮球了,冬天就乒乓球),少吃点,身体健康就行,能多换点肥肉成肌肉。</li>
<li>升职,transfer – 唯一都实现了的 – 因为我3年才写这个总结。</li>
</ul>
<p>刚刚过去的2016,有亲人因为健康原因突然离去,父母这一辈都在慢慢老去,奶奶的身体也不如从前了,家里人的健康是最大的心愿了。还有老哥和嫂子结婚这么多年,终于要生下一对双胞胎宝宝了,希望宝宝们健康出生,茁壮成长。</p>
<p>至于我和领导,首先希望领导的SSN和EAD都早点下来,读书也好,工作也好,待在家里也好;希望我能有更多的时间陪领导去个加拿大也好,阿拉斯加也好,加州也好,东海岸也好,黄石也很好;至于升职加薪,SDE3门槛就更高了,但也希望能够早日实现;什么?米国买房,米国生娃?– 这些,顺其自然就好。</p>Lei三年不写总结的是怎样一种感觉?我的20132014-01-01T11:50:00+00:002014-01-01T11:50:00+00:00https://blog.imley.net/2014/01/01/my-2013<h2 id="关于2013">关于2013</h2>
<p>又到了一年一度的的年终总结时间了,感谢国家(今年还用这个梗有点老了),我居然把年终总结的优秀传统坚持了下来。</p>
<p>昨天跟首架及首架夫人,还有我们家领导一起吃着火锅看着芒果台的演唱会跨了年,今年是第一次尝试这种跨年方式,感觉非常不错,四个人的战斗力也十分惊人,满桌子的菜居然最后都吃光了~</p>
<p>去年因为过年是一个人过的,所以晚上写的年终总结,今年的年终总结前两天就写得差不多了,2014年的第一天继续添点儿内容发了吧。</p>
<p>首先请领导原谅我,这些关于排名不分前后,排名顺序是出于<a href="http://blog.imley.net/2012/12/31/my-2012/" title="历史原因">历史原因</a>。</p>
<h3 id="关于这个博客">关于这个博客</h3>
<p>我还以为换到Pelican是今年的事,看了一下原来是<a href="http://blog.imley.net/2012/12/25/hello-pelican/" title="Hello, Pelican">去年的事</a>。</p>
<p>这个博客,确实是已经荒废了。</p>
<h3 id="关于学习那些事">关于学习那些事</h3>
<p>今年因为要找工作,于是心血来潮去Coursera上头选了 <strong><em>Analysis of Algorithms</em></strong> 这门课,讲课的就是Sedgewick老头子本人,加上之前就看过他写的这本书,所以课程开头两周那是相当兴奋啊,做作业也巨认真,简直是找到了当年本科时学习离散数学的感觉,再YY一下,仿佛自己已经置身普林斯顿,美利坚。</p>
<p>然后,然后我就荒废了…</p>
<p>当然也有理由啊:那段时间正好亚马逊要转正,找别的工作也很忙,这样学习速度太慢。但是,实际上一周三个课时真的不算啥。</p>
<p>回头想想真的很可惜,2013年,虽然还算是学生,但学校已经没有课程了,我也没能靠自觉修完一门课,明年就真的毕业了,不再是学生了,要是能从Cousera之类的网站上继续学习,应该会是一个好的开头吧。</p>
<h3 id="关于前途">关于前途</h3>
<p>关于前途,这篇<a href="http://blog.imley.net/2013/12/08/sold-myself/" title="找工作散记">博客</a>已经把我这一年找实习、找工作的心路历程分析得过分详细了,在此不再多表。</p>
<p>缩写一下就是:我今年也面了Google,又面了微软,我最后去了实习的公司——亚马逊(中国),我和我的小伙伴们都有光明的前程。</p>
<h3 id="关于技术">关于技术</h3>
<p>也是迫于找工作的压力,我捧起了各类中外面试宝典,甚至为了准备Google的面试,我都把leetcode刷完了——那可是100+的题目啊,平均下来快要是上半年每日一题了(2011年的目标,真的执行下来多好)。自然而然地,数据结构和算法这块,还是比以前强了不少(仅限于跟以前比,以前纯粹属于智力没有开垦的状态)。</p>
<p>到了这个年纪,对语言没有那么多追求了,今年算是对Java有了更多的了解,leetcode刷题的时候坚持写c++,总算也是知道了STL要怎么用,其他的呢,Python几乎是没有任何长进,Ruby在亚马逊有用到,但是周围同事(Ruby特性的使用上)比我还半吊子。最后,很遗憾今年还是没有跟风学上函数式编程。</p>
<p>回头看了看我在实验室项目的代码,时时刻刻有种掐死自己的冲动,不会设计还过度设计,有些东西就图写出来,给学弟学妹们挖了不少坑,惭愧啊。</p>
<p>另外,今年因为写论文,又用了用CloudSim,感觉以前自己用的就是渣渣啊,不过也说明两三年下来我的编程技能还算是有长进了,总的来说,还是那句话——前路漫漫啊。</p>
<h3 id="关于感情">关于感情</h3>
<p>领导说“你不能这么敷衍塞责了~你老了有啥回忆的东西啊~”,领导还说她不喜欢我叫她领导,领导说这样子“有距离感”。</p>
<p>于是我决定年终总结一定要好好回顾一下感情生活。</p>
<p>不过,这么私人的东西还是不在博客上表了。</p>
<h2 id="拓展部分">拓展部分</h2>
<h3 id="关于家人">关于家人</h3>
<p>老妈今年退休了,老爸也基本内退了,就希望他们二老身体都健健康康的,辛苦了半辈子也该进入享福模式了。不过老爸今年上半年腿不是很好,后来检查是椎间盘突出,一段时间都疼到走不了多远就得休息一会儿,还好下半年有所缓解了,现在基本上也恢复了。</p>
<p>希望老爸老妈,还有奶奶身体都硬硬朗朗的,等我赚钱了接他们多来北京玩一玩,条件好点了,还要陪他们去国外玩玩。</p>
<p>老哥去年买了房,今年买了车,不过我最期待的还是侄儿/侄女啊,老哥得加油啊。</p>
<p>希望我的家人们都能健健康康,平平安安的:)</p>
<h3 id="关于减肥">关于减肥</h3>
<p>我只能够说,因为我的肆意妄为,助纣为虐,这个话题比去年更加沉重了,现在我连上秤称一下都缺乏勇气,年末了,是时候反思了。</p>
<h3 id="关于拍照">关于拍照</h3>
<p>要不是偶尔去公园转转,跟着领导出去旅游旅游,还有好不容易的看一次演唱会,我的相机快要成为积灰的东西了,这一年也没有学啥后期,技术属于毫无长进的阶段。</p>
<p>还好的是我也没有在设备上多花钱——说实在的,我都有点想换微单了,不过这话只能自己想想,不能让领导听到。</p>
<h3 id="关于果粉">关于果粉</h3>
<p>今年年末的时候手机被偷了,我还以为是上天给我发Google offer的前兆,不过后来收到的只是Thank you letter,跟亚马逊签完合同后有一段时间特别冲动,差一点就买了5c甚至是5s了,还好我信用卡的账单及时提醒了我严酷的现实,明年再买6吧…</p>
<p>不过,我还是在苹果的坑里头越跌越深——花了几个月的实习工资给领导入了台11寸的Air,结果自从升级到Mavericks以后那个小本就一直问题不断,领导因此不断打击我作为果粉的玻璃心…</p>
<p>唉,我算是在苹果的诱惑下,在消费主义的大坑里头,越陷越深了。</p>
<h3 id="关于厨艺">关于厨艺</h3>
<p>找工作和实习的时候,我厚颜无耻地把Cooking写在了兴趣爱好那一栏——不过也很少有人问起。</p>
<p>但是我厨艺确实有所长进啊,今年除了可乐鸡翅以外,海鲜、鱼、海里头的鱼也都开始做了,除了炒、炖着炒以外,现在也会清蒸了,可以算是稳步上升。领导爸妈来京的时候,还露了一手,最后基本上是弄砸了,还好他们也理解,我就是一个玩票的。</p>
<p>还有,最近老是想买套厨刀,我这个器材党啊,买来剁手吗…</p>
<h3 id="关于读书及其它文艺活动">关于读书及其它文艺活动</h3>
<p>去年我写年终总结的时候,一直就期待着炫耀自己减肥的成就(结果,唉,面壁面壁)。今年其实也有一个急着想炫耀的——根据豆瓣的统计,我2013年已经读了25本书了(请勿嘲笑,对我来说很不错了…),其中还包括两本英文的——<em>The Catcher in the Rye</em> 以及 <em>The Great Gatsby</em>, 都是好书,相见恨晚啊。</p>
<p>手头上还有几本在读的,估计读完已经是2014了,就算到明年的reading list里头吧~</p>
<p>另外,今年还第一次看了演唱会,朴树&戴佩妮的<strong>“树与花”</strong>,没有见过世面的我表示live感觉挺好,今天又要去看gala的演唱会了,据说他们会跑调,我先把预期降低一点…</p>
<h2 id="一些展望">一些展望</h2>
<p>2014,我就告别将近20年的学生身份了,还是小小地展望一下吧:</p>
<ul>
<li>
<p>把爸妈和奶奶接过来玩几天,奶奶上次来北京没去成长城的,这次可以陪他们去一下。</p>
</li>
<li>
<p>陪领导去国外旅游一趟,往刚办的签证上盖个戳。</p>
</li>
<li>
<p>去电影院看看老电影,作为伪影迷,我居然没有去过学校附近的电影资料馆看过电影,这个年末的发现实在是让我感到遗憾和震惊。</p>
</li>
<li>
<p>让手头上这个Nokia 1050再坚持坚持,iPhone 6出来了换一个。</p>
</li>
<li>
<p>上班了以后估计挺多时间都要花在地铁上了,争取花这些时间多读读书,明年争取也能沉下心来读几本技术书。</p>
</li>
<li>
<p>减肥,一定要养成定期锻炼的习惯,把体重给降下来,我要把友情抛在一边,不能继续担心我瘦下来以后会帅到没朋友的问题。</p>
</li>
<li>
<p>工作上,虽然公司似乎也没啥绩效奖金,但是希望自己能够好好表现,早点升到SDE2,趁着年轻还有transfer的念头,争取一下早日transfer吧。</p>
</li>
</ul>
<p>最后,再一次的,希望我的家人和朋友们,一直都健康,幸福。</p>Ley关于2013找工作散记2013-12-08T22:47:00+00:002013-12-08T22:47:00+00:00https://blog.imley.net/2013/12/08/sold-myself<p><img src="https://img3.doubanio.com/view/subject/m/public/s26743139.jpg" alt="Dream" title="追梦赤子心" /></p>
<p>上周五去准东家签了约,算是给自己不算漫长的找工作经历画上了句号。下周开始磨毕业论文了,如果论文顺利的话,明年3月份我就算是正式结束我近20年的学生生涯,从此告别寒暑假期,踏上掐着指头拼年假的道路了。</p>
<p>这篇博文,就当记录一下我不算丰富的找工作的经历吧。</p>
<p>虽然经历不多,但是由于我是一个感情丰富的人+话痨,所以不丰富的面试经历,恁是被我写成了长篇大论(要是能放论文里头就好了)。本文呢,主要描述了我找实习、做实习、找正式工作的心路历程,其中详细描写了我跟亚马逊、Google,微软,雅虎,百度,阿里等企业的情感纠葛。没有耐心和闲工夫的,看看标题,感受一下就好。</p>
<p>所以,<strong><em>长文慎入</em></strong>。</p>
<h2 id="本人背景">本人背景</h2>
<p>北邮土著,更准确地可以说是北邮计算机土著。</p>
<p>研二暑期实习之前还有过一段百度的QA实习经历,没有参加过ACM,因此算法基础不是很好。没入过党,没得过国奖,也没有做过牛逼项目,总之就是没啥亮点,<a href="http://cn.linkedin.com/pub/lei-jiang/21/989/626" title="请戳LinkedIn">简历</a>扔过去也就给人一个标准码农后备军的感觉。</p>
<h2 id="暑期实习">暑期实习</h2>
<p>如果把只看开头和结局,我的找工作经历其实很简单:从我投出第一份简历,我整个找工作经历就算是结束了。</p>
<h3 id="亚马逊开始和结束">亚马逊:开始和结束</h3>
<p>研三开学没多久,实验室同学们就开始在群里头分享历年的面经了,我还在想要不要写简历,然后就看到同届的人开始发面经了…于是整个人都不好了,开始焦虑,找模板,写简历,改简历,写英文简历,改简历。</p>
<p>弄了一周多,终于形成了一份中英文简历,这个时候就得找一家公司投了。正好这时候群里头分享亚马逊的面经比较多,于是糊里糊涂找学长内推投了亚马逊,当时对亚马逊的认识也就是前几个挺牛的同学都面得不太好,公司应该不差。</p>
<p>投完简历,又开始焦虑了,我这都还没有正式准备,怎么就要面试了。我简历写的是Java,但是 <em>Java程序员面试宝典</em> 啥的我也没看过啊,于是找同学借来一本,刚看了一节就觉得任重而道远,遂放弃。然后去读书馆借了本类似 <em>Java面试必会117</em> 题的垃圾书,开始一条条地吞,这时候想的已经不是拿offer了,而是不给母校丢脸。</p>
<p><strong>电面</strong>很快就到来,电面的是一个HR MM,专门负责校招的,角色似乎更加像是technical recruiter,总之就是确认了一下简历中间的一些细节,然后就英文简单介绍一下做过的项目,似乎如果英文没有问题不会筛人。</p>
<p>然后就是<strong>onsite</strong>了,亚马逊实习的onsite分两轮(似乎中国这边校招也是),一般情况都是一轮manager,一轮偏technical一些,但是都会问一些技术问题。偏technical的会有coding的环节,是在纸上写题,我当时很装逼地使用了Python,还好组里头(后来才知道)面试我的人都不太会Python,我算是写清了思路,侥幸通过了。</p>
<p>感觉亚马逊相比其他的公司,除了考察基本的技术能力,可能更加重视综合能力、整体素质一些。感觉面试官的决定性很大,很多时候面挂了也不是因为技术不过官,可能就是面试官感觉哪儿不合适。</p>
<p>我面试完感觉并不好,因为面试官问的关于Java语言的一些细节题我都没答上或者答好,不过跟Manager那轮倒是感觉聊得比较开心。</p>
<p>最后,onsite完,没过一周HR就发了offer,收到offer的时候还在公交车上,其实已经抑制不住喜悦的心情了,因为也算是实验室里头第一个拿到实习offer的吧。</p>
<p>其实我直到拿到offer才去认真研究了一下亚马逊的待遇、发展,调研下来感觉不错,算是超出了我的期望,感觉也算是自己RP爆发了吧。</p>
<p>另外,亚马逊是我拿到的第一个实习offer,也是我最后校招签约的准东家,具体情况,后头再表。</p>
<h3 id="微软五次郎">微软:五次郎</h3>
<p>直到最后校招秋令营收到微软拒信,熟悉我的同学终于给了我一个光荣的称号:微软五次郎。</p>
<p>面微软的实习的时候,走的是标准的实习校招:笔试,面试,被拒。</p>
<p>投微软之前我想得最多的问题便是,如果拿了offer,我是去微软呢,还是去亚马逊呢,微软在中国大一些,出名一些,但是微软用Windows啊…亚马逊其实挺不错,但是毕竟没有微软那么有名~</p>
<p>后来知道,我想得太多了。</p>
<p>微软的<strong>笔试</strong>大概是我参加的第一场笔试(本人在拿到亚马逊offer以后,斗志瞬间不足,也没有投很多家了),全都是选择题,错了还扣分,总之我答题非常保守,除了语法基础题以外其他题目也都还好。最后顺利过关,不过微软那道<code class="language-plaintext highlighter-rouge">x = x++</code>的题还真是让人忍不住在回忆的时候都继续吐槽。</p>
<p>然后就是<strong>onsite</strong>了,微软在中国主要两个部门:MOD(简单理解就是Office)与STC(简单理解就是Bing),由于历来鄙视微软Office系列软件垄断市场,加上对客户端开发一窍不通(后来证明我对MOD的理解太狭隘了,秋令营部分表),我投的主要是STC的职位,面试也分到了STC。</p>
<p>我在微软的<strong>面试</strong>经历可谓是奇葩,一面的时候总是拿不到面试官的笑点,最后一个简单的复杂度计算我居然以数学不好为理由放弃计算了;二面面试官相当友好,我却问人家是不是外国人——我以为是日本人,后来人家告诉我是广东人,我表示都是《爱情公寓》里头那个假日本人害的。</p>
<p>总之,因为我的表现和发挥都到了奇葩的水准,加上之前拿到offer的懈怠(我买了一年多的《编程之美》几乎还是新的),再等了N久之后,被拒了。</p>
<p>同时,同组(25个人左右)大概有10来个同学拿到了微软的实习offer,算是狠狠地打击了我一把,可惜我还是没有崛起。</p>
<h3 id="阿里巴巴同学你基础不好">阿里巴巴:同学,你基础不好</h3>
<p>回忆起来阿里的实习招聘,我印象最深的大概就是第一轮电面面试官告诉我的“同学,你基础不太好”了。</p>
<p>阿里的实习面试我总共经历了两轮电面+一轮现场面,可是我感觉这两次似乎是割裂的,当然这个割裂感跟后来阿里校招给我的割裂感相比,那是小巫见大巫了。</p>
<p>阿里前两轮<strong>电面</strong>是阿里云的某个组进行的,阿里的电面,在我所经历的面试中,大概是覆盖面最宽的了。从操作系统到计算机网络,从概率论到数据结构,从设计模式到文件系统,什么都问…</p>
<p>这里头我记得比较清楚的是,微软onsite那道我放弃的复杂度计算题,阿里这一次也遇到了,我装作思考,回答出来以后,面试官跟我说算错了。我很惊讶,以为面试官在诓我,于是又说了一遍计算过程,面试官说:同学你等会儿好好想想吧。这大概是我对阿里印象最深刻的另外一点了。</p>
<p>然后电面完了以后,被吐槽基础不好的我也知道自己希望不大,但是居然后来还是等来了<strong>onsite</strong>,结果发现我被安排到下午5点多,接近饭点,似乎除了我,没有几个同学在面试了。然后我对着面试官说了很多,面试官可能是饿了,也没有问啥问题。</p>
<p>面完我还感觉良好,因为我说了很多。可是最后大家都开始收到offer的时候,我再也没有等到阿里的消息了。</p>
<h3 id="雅虎world-hello">雅虎:World Hello</h3>
<p>雅虎的简历,是我在焦虑期从论坛上看到招聘贴投出去的。结果不知道过了多久,突然接到onsite的通知,雅虎今年大概没有怎么招实习生,总之身边投简历的,也就我莫名其妙参加了面试。</p>
<p>雅虎的实习我面了两轮,两轮都是问问题+coding,面试过程中规中矩,不过第一轮很好的暴露了我做题太少的问题,一个类似链表逆置的问题我居然被自己卡住了;第二轮的面试官似乎不知道什么是反向代理,我也不知道人家是真糊涂还是假糊涂,于是我耐着性子解释了一遍,大概是暴露了我说话太罗嗦的缺点。</p>
<p>面雅虎的时候我做了一道把”Hello World”变成”World Hello”的问题,这个问题在我之后的面试中又有好几次遇到。现在想起来,如果再写下去,我大概会像孔乙己一样,抓着个人就说:“你知道‘Hello World’转化成’World Hello’的5种写法吗?”。</p>
<p>雅虎在面完若干时间以后,也收到了拒信,但是雅虎的拒信是我收到的第一个写了我名字的拒信,不是群发,我表示很欣慰。</p>
<h3 id="豆瓣长见识了">豆瓣:长见识了</h3>
<p>豆瓣是我跟同学聊天时知道在招实习生的,于是找同学投了简历,结果我是投的开发,因为之前有过百度的QA(亦或是SDET)经历,所以硬是被人拖到了测试组面试。</p>
<p>豆瓣的实习生招聘,先是通过邮件在线进行笔试:SDE的都是开发题,QA则是选择、填空、问答题。</p>
<p>笔试过了以后就是onsite了,豆瓣的总部在一块工地后头,不能严格地说偏僻。进去以后,发现有一堆人都是用的27”的iMac,十分口水,前台MM不是我想象中的小清新,不过也算漂亮,里头的环境,倒是我面试过所有公司中最文艺的了,loft,挺舒适的。</p>
<p>面试过程就不表了,面试官经验丰富,一下子就看出来我已经不适合做测试了。在我一个充分准备的大牛同学去豆瓣面完测试开发以后,我也顺利收到了拒信,尼玛还是群发的。</p>
<h3 id="找实习总结">找实习总结</h3>
<p>实习工作找到最后,因为一开始就拿到了offer,虽然我每次面试后面的企业都认真地考虑过如果给我offer,我要不要接受,但是最后他们大概都看出来我诚意不足,都没有浪费他们宝贵的offer,于是我最后也只拿了亚马逊的实习offer,开开心心地去亚马逊实习了~</p>
<h2 id="实习">实习</h2>
<p>接下来说说我在亚马逊的实习吧,开始之前先帮准东家打个广告:史上性价比最高的实习,非我A家莫属。</p>
<h3 id="sde-bootcamp">SDE Bootcamp</h3>
<p>开始在亚马逊的实习之前,听几个先去实习的同学说里头配置开发环境很繁琐,说是头一周都在配环境,听到这个让我不禁有些担忧…</p>
<p>但是后来的经历完全打消了我的疑虑,亚马逊内部有一系列名为”SDE Bootcamp”的Wiki,这套Wiki事无巨细地介绍了开发环境的部署与使用,亚马逊内部甚至有一个EnvNinja的小组会针对自己的开发环境发布一些专门的调优脚本、小工具。</p>
<p>亚马逊有一套自己完整的开发工具生态链,这一套生态链要么是使用开源工具打造,要么与之前熟悉的开源工具很类似,功能之强大不用说。如果之前已经习惯了Linux系统,并且对DevOps概念有些许了解的话,学习上手实际上是一个非常愉快的过程。</p>
<h3 id="干活">干活</h3>
<p>熟悉亚马逊的开发工具+熟悉组内业务逻辑大概花了两周,然后开始陆续干些散活了。</p>
<p>整个实习期间大概做了两个比较有连续性的活,一个是把一个现有业务逻辑整合进入别的组的一个新平台;另外一个是完善一个定时任务调度系统。</p>
<p>其实两个任务难度都不大,第一个任务整体上更有挑战性,因为要跟西雅图那边一个团队不断沟通,不过这个任务进行到一半因为一些问题搁置了;于是为了<strong>转正</strong>,我使出了吃奶的力气,花了些心思,总算是把没啥挑战的第二个项目做出了点可以拿出来讲的感觉了。</p>
<p>最后再补充一下,我实习的部门属于<a href="http://weibo.com/amazonopstech" title="官方微博">OPS-Tech</a>,就我理解而言,这个部门负责的是用户购物时感受不到的那部分系统的开发,像物流预测、仓储规划等等功能。这些功能一搬都在亚马逊全球各个国家通用的,所以业务是面向全球的。</p>
<h3 id="转正">转正</h3>
<p>为什么说A家的实习<strong>性价比</strong>高呢?就亚马逊中国而言,每年校招不了多少人,而且校招比较倾向于实习生转正。</p>
<p>更重要的是,实习生转正,流程上只要做一次Presentation就行,不像别的很多企业还要经过很多轮的面试。如果实习期间表现还好,确实有产出,通过率还是比较高的。</p>
<p>读过 <strong><em>Cracking the Code Interview</em></strong> 这本书的同志都应该知道,亚马逊招人必须要过一关——Bar Raiser。具体到实习生转正流程,这个Bar Raiser就出现在你的Presentation上。</p>
<p>至于我的转正,其实是波澜不惊,我比较早做完了转正的PPT,就等着Presentation。记得临Presentation那几天,先是收到了微软的等待信(后来成了Thank You Letter),然后转正完又收到Google的onsite通知,那段时间整个人的心态就跟做过山车差不多,转正前一天几乎失眠了。</p>
<p>不过还好,我的Presentation表现还可以,HR和Bar Raiser反馈都不错,加上Manager和Mentor都是Nice的人。做完Presentation大概半个小时,就收到了Manager的口头offer,心里头一块石头也算是落了地。</p>
<h2 id="找工作">找工作</h2>
<h3 id="微软五次郎诞生">微软:五次郎诞生</h3>
<p>对,又是微软,我又一次,厚颜无耻的,参加了微软的<strong>“探星秋令营”</strong>。</p>
<p>微软的秋令营是我在亚马逊实习期间参加的,前后花了三天,是在微软参加活动,接受宣传,组织面试。</p>
<p>秋令营之前有一个笔试,难度要强于实习校招,我后面两道编程题也答得跟翔一样。不过后来不知道为啥,还是给通过了,可能是由于湿兄的给力内推吧(湿兄我对不起你)。</p>
<p>秋令营花了三天,第一天是接受宣传,做游戏,相互熟悉,还有一个设计产品并且推销产品的环节,也是在这个环节,可能是我三天秋令营表现最好的一次了——我们组的产品得了一个最优奖;第二天就是一些过来人经验分享,包括面试官的分享,下午则是一个AI编程挑战赛,我很失落地在第二轮就被淘汰了;第三天是重头戏,进行了两轮的onsite面试。</p>
<p>其实整个面试我感觉还是可以的,第一面感觉跟面试聊得还可以,题目也做了;第二面其实是一个挺简单的题目,但是我花了太长时间讨论,实现的时候又拘泥细节,没能很快coding出来,后来还延长了面试时间,改进方案也只能跟面试官口头聊聊了。</p>
<p>微软整个面试下来,我居然觉得自己比上次更有希望了,但是直到后来收到微软的等待信,然后又是收到Thank You Letter,接着又被邀请去面试销售岗,我的微软面试总算是第五次划上了句号。</p>
<p>从大二开始,我用了近5年时间,得出了我不适合微软这个结论,请叫我微软五次郎。</p>
<h3 id="google追梦赤子心">Google:追梦赤子心</h3>
<p>开始找工作之前,我给自己定下的目标是:拿一个还行的offer,参加Google的面试。因为大概也知道自己不够努力,达不到Google的bar,所以只求能够面试一回,感受一下码农圣地的氛围。</p>
<h4 id="投简历">投简历</h4>
<p>投简历依然是找内推,开始找了一个准直系师兄,结果人家没有内推名额了,后来找了个远房师兄,总算是把简历推过去了。</p>
<p>然后就是等通知,大概9月中旬收到HR通知,恭喜我被内推,通过了简历筛选,让我注册参加9月下旬的在线笔试——我于是查了一下,%&这个在线笔试根本没有门槛的好吧…心想还不如寄个Thank You Letter自己报名参加得了;接着又发现第一次在线笔试正好跟我的亚马逊转正冲突,没有办法,只能国庆准备一下,参加第二轮在线笔试得了。</p>
<p>这里帖一下Google的校招流程,你们感受一下,我当时希望有多渺茫:</p>
<blockquote>
<p>Written Test → Phone
Interview (1-2 sessions) →
Onsite Interview (4-5 sessions) → Collect reference information and
other supporting documents (transcripts) → Hiring Committee Review
→ Offer Review → Offer Delivery</p>
</blockquote>
<h4 id="准备面试">准备面试</h4>
<p>出乎意料的是,等我完成亚马逊这边的转正,没过两天,又收到了Google HR的通知,说是决定直接跟我onsite。记得当时接完电话,我努力控制才没跳起来…</p>
<p>填完一堆表以后,我的前两轮onsite被约在了10月8日,也就是国庆假期结束以后。于是从亚马逊请完长假,整个国庆假期就被我用来准备Google的面试了,这次备战的目的——不给母校丢脸。</p>
<p>因为已经来不及从基本功开始巩固了,我选择了最粗暴额方式:刷题。而且刷不了学院派的XOJ或者实力派的TopCoder,只能刷最投机的leetcode。</p>
<p>这里推荐我收藏的两个leetcode答案:<a href="https://github.com/AnnieKim/LeetCode" title="比较推荐这个">https://github.com/AnnieKim/LeetCode</a>,和<a href="https://github.com/anson627/leetcode" title="这个也还行">https://github.com/anson627/leetcode</a>。</p>
<p>其实leetcode也不能干刷,得不断地优化、总结、讨论才能达到最好的效果。可惜我只有10天,没有办法,只能硬着头皮干刷,能够总结学习一点就学习总结一点吧。</p>
<p>因为我之前一直做的是Java的项目,但是刷leetcode的时候,我有意识地开始用C++,也是这段时间,才开始对STL有一点了解。可能这段准备Google的经历,是我C++ coding的一个巅峰了吧。</p>
<h4 id="前两轮onsite">前两轮onsite</h4>
<p>最后,前两轮onsite之前,我大概把<a href="https://docs.google.com/spreadsheet/pub?key=0Aqt--%20wSNYfuxdGxQWVFsOGdVVWxQRlNUVXZTdEpOeEE&output=html" title="挺赞的一个统计表">这个sheet</a>上的高频题(大于4星)都过了一遍,还做了一些其他的题目,不管有没有准备好,只能赶鸭子上架了。</p>
<p>到了onsite那天,被HR领到面试的会议室,我表面上还能故作镇定地到处观望,心里面已经是汹涌澎湃了。不过看到面试官后,稍微聊了一下,很快就进入正题,开始做题。</p>
<p>(因为NDA,我就不说具体题目了。)</p>
<p>第一轮我做了两道题,都是leetcode的原题或者变体(可惜我还没有做到这些题…),还好我也都写出了比较基本的解法,特别是第二道题,面试官真的可以说是谆谆善诱啊,感觉就要把优化方案直接说给我听了,还好我在他崩溃之前领悟了…</p>
<p>第二轮onsite就没那么好了,面试官给稍微多聊了一会儿,题目是跟几何有一点关系的。做题的时候分析了半天题意,先给出了brutal force,然后优化、优化,最后写的时候才发现原来这么简单——不过我竟然因为一个特殊用例的处理,卡壳了半天,直到面试完,这道题才抠完。后来知道,要是我提前看了CCTI,大概会少卡壳一点。</p>
<p>总之,面完Google的前两轮,自己的感觉就是肯定挂了(不是说要45分钟搞3道题吗,我90分钟才弄了3道…),但是对自己10天的强化训练还是挺满意的,当时就想要是这个水平去面微软,呵呵~~~</p>
<h4 id="终面之前">终面之前</h4>
<p>面完前两轮,我感觉自己的Google面试之旅已经结束了,不过也管不了那么多,回去先是好好洗了个澡。然后接下来的两天啥事儿也没做,看电影、看美剧彻底放松了一把,感觉自己可以去跟亚马逊签offer而没有遗憾了。</p>
<p>结果面完第二周收到HR的通知,说是前两轮反馈不错,但是也有没有表现好的地方,说是继续复习,好好准备后两轮。</p>
<p>于是,重复国庆七天的做题模式,终于在面试前4~5天,我把leetcode刷完了,暴力刷完了…</p>
<p>最后整理了一下leetcode的做题心得,又整体过了一下CCTI,做了其中几道题,到面试前几天,也就是看看系统设计的知识点,跟着CCTI过知识点,看看以前收藏的博客。突击得已经差不多,但是要真正完全准备好又差太远,最后的几天就是在不断的自我否定和自我鼓励中度过的。</p>
<p>不管怎么样,最后还是熬到了最后两轮onsite。</p>
<h4 id="最后两轮onsite">最后两轮onsite</h4>
<p>最后两轮onsite之前,HR说了,这两轮侧重考察系统设计(当然还是会coding),然后会有英文面试。</p>
<p>第三轮onsite是下午开始的,面试官是华人,也没有跟我英文。上来显示一个简单的设计题,先跟面试官确认了题目背景,然后开始设计,设计了一会儿发现我一开始的方向有问题,不满足题目的某些设定;在面试官的提示下,又重新考虑了一下,经过几轮优化,算是把这道问题解决了。</p>
<p>我没有计算那道设计题花了多久,虽然我的解题过程不顺利,但是跟面试官的沟通还是比较顺畅的,感觉面试官的提示都是很有作用的。当然在做设计的时候,你也要充分描述每一个设计你的选择理由,面试官在发现问题的时候,会及时提示,这种题一般保持良好的沟通。注意做选择的时候进行估算、场景分析,一般不会答不上来。</p>
<p>然后三面接下来就是coding的题目,居然是一道烂大街的树相关题目的变种。可惜烂大街那道题我已经烂熟于心,在想的时候,旧的解法总是萦绕我的心头。最终,这道题我只是说了一个大概的思路,面试的时间就结束了,这大概是我的挂点吧。</p>
<p>等了一个多小时又开始了第四轮的onsite,是个美国来的大叔,英语的沟通倒是没有什么问题,因为是英文面试的原因,题目难度其实也不大;大概是在完成一道coding、一道设计题以后,又把coding题翻回来放到multi-processors的环境重做一遍,这一回我没有答得特别好。</p>
<p>面完第三轮从楼上下到HR办公室等待面试的时候,我一下子就理出了那道卡住的的题目的思路,其实很简单,只怪自己心态确实不够好,也是因为实力不充分的原因。还好第四轮的美国大叔人很好,我调整好了状态。</p>
<p>最后的感觉是,能面完4轮,我已经可以没有遗憾地收拒信了。</p>
<h4 id="送成绩">送成绩</h4>
<p>大概是今年Google北京这边没有怎么卡人,可能是四轮onsite平均分过线就能送HC了,总之,我面完四轮以后大概又不到一周,就收到HR的通知,让我准备成绩单。</p>
<p>接下来的两天,我都是保持了高度的兴奋,准备成绩单,推荐信。周围的知道情况的同学都跟我说往年送到HC基本上就希望很大了,我也忘了自己真的没有面好,开始充满希望起来。</p>
<p>因为最后HR跟我确定的时候,我选择的是北美的职位,等HC通知的这几天,我都开始跟领导憧憬起北美的生活起来。还在想怎么弄签证、怎么给领导弄签证(那得结婚才好弄签证啊)、去美国了我工作来你读书啊~~~等等等等,感谢Google让我等了那么好几天,也做了好几天的梦。</p>
<h4 id="收拒信">收拒信</h4>
<p>后来我也在mitbbs上大概了解到,进了HC的淘汰率大概还是会有2/3,于是最后几天还是陷入了自我怀疑之中。</p>
<p>最后,终于在11月5日,收到了<strong><em>“An update from Google”</em></strong>,算是很委婉的拒信吧。</p>
<p>终于我的Google梦碎了,领导也跟着我空欢喜了一场,不过,我们都是乐观的人,很快就从伤痛(领导表示没有伤痛)中走了出来。</p>
<h3 id="百度">百度</h3>
<p>百度因为之前已经实习过,所以这次实习没有找百度。到了找工作的时候,因为比较熟的一个师兄在百度工作,部门还比较核心,于是让师兄推了一下,被推的部门是百度的商业知心,具体的是比较新的组,做教育相关的商业知心业务。</p>
<p>开始面试的时候是8月份,其实那段时间还没有准备好,之前也就在测试部门实习过,实习的时候就听说百度RD面试各种高强度,因此很忐忑,面试之前稍微准备了一下——争取不给师兄丢脸。</p>
<p>我面试之前,实验室已经有几个同学通过相同的内推渠道进行了面试了,大概知道百度的面试时间会很久,问题也会比较全面。</p>
<p>具体我的面试是早上8、9点开始的,进行了两面,总共大概3个小时吧。面试官的问题确实比较多,而且面很广,但是没有阿里面试时咄咄逼人的感觉,可能百度是我的福地吧,之前一次实习在百度的面试就感觉和面试官很合拍。</p>
<p>一面面试官的问题比较全面,具体coding的题目也有,项目讨论,编程语言都有涉及,还问到了函数式编程,整个面试下来感觉还行。</p>
<p>二面的面试官像是被临时叫来的,问问题之前要想半天,不过出的问题还是很“有水平”的。面试官似乎很喜欢从看似普通的问题考察,去考察比较底层的知识点。比如这道<a href="http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array" title="Why is processing a sorted array faster than an unsorted array?
">Stack Overflow上头的明星题</a>。我之前也没有准备过类似的题目,但是在百度我确实能够发挥比较好,所以那天面试官的题目都答上来了,面试官最后说<strong>“同学你基础很不错”</strong>,我唯一想到的就是阿里的面试经历。</p>
<p>本来百度是要三面的,但是我面试那天部门经理正好有事,所以三面被安排在了几天以后。本来我以为三面不会问技术问题,但是还是被问到了,而且我差点没有答上来,不过还好面试官很友好,最后我还是写出来了,具体面了什么题,已经忘记了,只知道三面跟前两面差别不大,只是多聊了一些职业发展的问题。</p>
<p>面完百度,内推的师兄告诉我反馈还不错,后来到了九月份百度就发了offer意向,然后又发了正式offer。</p>
<h3 id="阿里">阿里</h3>
<p>阿里的面试,满满的都是泪,感觉就是被大阿里调戏了,面试官我都挺喜欢的,可是面试官不喜欢我。</p>
<p>阿里一面的面试官给我了一些建议,我觉得比较中肯,其实对我后来谷歌的面试也有帮助。大致意思就是面对一个问题,从最基本的方法和技术开始讨论,不要故意使用比较复杂的技术手法。这其实指出了我思维和答题都有的缺点,我还是觉的获益匪浅的。</p>
<p>至于苦等了几个小时没有等上的笔试,早上八九点发短信通知10点的面试等等的,我就不吐槽了。</p>
<p>最后如愿以偿收到了阿里的拒信,其实我觉得阿里可以推一推“来往为校招最新状态获取唯一渠道”的,来往用户肯定大增。</p>
<h3 id="雅虎">雅虎</h3>
<p>雅虎的校招,依然走的内推,不过应该是被打为终极备胎了,在我都快忘了曾经参加过雅虎的笔试后。某天雅虎突然通知参加面试,电话里头通知说会有邮件确认,结果等了两天发现没有通知,在论坛被告知HR联系电话,自己讨来了一个“面试”。</p>
<p>雅虎额面试是周六下午进行的,不得不说雅虎的工程师很是敬业。我是下午4点才开始的面试,然后就是连续的三轮车轮战。不过面到7点我才知道,被轮的不是我,而是面试官。</p>
<p>面到最后一个面试官,显然他已经不能完全集中注意力了,最后一道题我说完思路,看他还涣散着眼神,我问是不是还能优化,他跟我说他记不得有更好的解了…</p>
<p>雅虎额面试难度浮动比较大,听说有人有问到需要多维DP的题目,我的难度属于比较平均的水平(简历上也就那样,人家不抱什么期望),没面一到两道coding(面试官企图两道的我也就写一道),有些题目说说思路也可以。然后也会问一些语言的、底层的东西,跟阿里、微软基本上是差不多的吧。</p>
<p>面完三面已是晚上七点多,HR跟我说面得不错,让我回去等消息,下周安排终面。</p>
<p>结果,我恁是把Google额拒信都等到了,才等到雅虎的终面通知。</p>
<p>雅虎的终面上,正好碰到了微软秋令营的营友,一问人家已经拿到网易游戏35+的offer了,来雅虎是想看看能不能混个户口。</p>
<p>虽然雅虎遇故人,但是我面得确实不咋地,面试官对我简历里头提到的<code class="language-plaintext highlighter-rouge">iptables</code>,<code class="language-plaintext highlighter-rouge">web framework</code>什么的理解程度比我要多很多。基本上我答完了要听面试官再给我梳理一下知识脉络。</p>
<p>面试官应该是比较高等级的经理了,还能有这么清晰的技术思路,确实令我十分佩服。最后面试官聊人生谈理想的时候,我不得不感慨自己虚度了研究生的光阴,为自己碌碌无为而悔恨。面试官安慰我说大环境就这样,不怪你…</p>
<p>至今我没有等到雅虎的结果,不过得知雅虎已经发了很多offer了,估计备胎轮上我也没有解决户口的希望了,遂作罢。</p>
<h3 id="斯伦贝谢">斯伦贝谢</h3>
<p>斯伦贝谢是我一系列找工作经历中比较非主流的经历。主要是因为之前认识一个里头工作的学姐,对斯伦贝谢的TFE项目比较有兴趣,于是拜托学姐进行了投递。</p>
<p>具体我投的是BGC,因为网上斯伦贝谢BGC的信息比较少,我当是贡献一点信息量吧。</p>
<p>斯伦贝谢又叫四轮贝谢,也就是经历四轮笔面试才能拿到offer的意思。</p>
<h4 id="第一轮笔试">第一轮:笔试</h4>
<p>笔试是在北大进行的机试,可以选择C++或者C#,我对C#已经忘记得差不多了,于是选了C++,一共是10来道选择+两道编程题。</p>
<p>选择题我看了一下,都是典型的C++笔试题,可惜我不太会C++,于是放弃了选择题,先做问答题。</p>
<p>问答题第一道是树有关的递推解题,第二道是一维DP问题,我花了太多时间试图写树的解序列化(其实我是去看fstream的接口去了…),后来发现题目给出的条件根本没有办法解序列化。坑爹的是我没有时间做选择题了,最后除了第一题全部选了C。</p>
<h4 id="第二轮-群面">第二轮: 群面</h4>
<p>斯伦贝谢过了笔试就通知群面,群面是HR和类似Technical Recruiter的人负责进行的。具体形式就是“无领导小组讨论”,有特色一点的是会让你进行英文的自我介绍或者用英文答题。</p>
<p>我觉得,群面主要是淘汰不太会沟通的,和太浮夸的人,只要表现得逻辑性强一点,英语不太差,群面还是能过的。</p>
<h4 id="第三轮技术面">第三轮:技术面</h4>
<p>BGC的技术面需要进行一天,上午是Presentation + 一轮一对一面试;下午是两轮一对一面试。</p>
<p>首先开始的是Presentation,会给你一个技术的topic,比如如何写单元测试啊之类的,要用英文做,直接在白板上进行板书就可以了。给题目以有30分钟准备,15分钟presentation + Q&A,回答问题可以用中文(有些是全英文的)。</p>
<p>三轮技术面大同小异,每轮大概45分钟。有的面试官可能会尝试用英文跟你讨论某一个问题。面试的过程基本上就是说项目,问一些设计模式,oo的问题,也会问有些算法的问题(说思路就可以,都是通用算法:递推、BFS/DFS,二分等等),考察面很灵活很广,但是遇到需要coding的题,都是说说思路,点到为止。</p>
<p>因为我简历上说了不熟悉C++,不太会C#,所以就问我的都是基本算法、面向对象设计这类的多一些,熟悉Java的面试官问了点Java的语法问题。</p>
<h4 id="第四轮群m共面">第四轮:群M共面</h4>
<p>虽然事先HR通知了是1V多,但是当我看到这个阵势的时候,还是被吓了一跳:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> m m m m m m m
---------------(桌子)
HR
HR
---------------(桌子)
me
</code></pre></div></div>
<p>m指的是各种manager,HR的,技术的,非技术的都有,所以问题也不一定是啥,上去首先是自我介绍,然后就是提一个简单的技术问题热身一下,然后就是各种风月了。为什么来?职业规划?别的offer?基本上是想到什么问什么,几乎每个M都会问。</p>
<p>建议是自我介绍、对BGC的认识,这两个问题肯定要准备的。</p>
<p>最后会让你问一个问题,然后就ok了,大家都很友好,不过那么多manager还是有点吓人,建议是问完问题你可以复述一遍确定一下,语速放慢一点。</p>
<p>我面试的时候全程英文,不会的单词我就问旁边的HR了。</p>
<p>因为我手头上的offer快到deadline了,所以BGC当天下午就发了口头offer。</p>
<h3 id="亚马逊">亚马逊</h3>
<p>亚马逊虽然之前已经早早拿到了口头转正offer,我大概也通过各种渠道打听到了亚马逊的package会比较有竞争力,但是直到最后签约之前,还是发生了一些小插曲,让我心情又开始跌宕起伏。</p>
<p>大概的情况就是原来转正的组没有了headcount,然后又说帮我尽力争取,然后又说争取有望,然后又发现我毕业太早,headcount拿不到…</p>
<p>最后我辗转被调到了现在签约的组,不过在跟新组的manager聊过以后,还是觉得挺有挑战的。最后确定了去向以后,终于拿到了亚马逊那边比较正式的offer。</p>
<h2 id="选择">选择</h2>
<p>到最后,因为无心去银行或者是国企,所以我的offer也就是在BGC,亚马逊和百度之前进行抉择了。</p>
<p>百度是最先发比较正式的offer的,但开始是由于Google,后来是由于亚马逊那边的变动,我一直没有给百度答复,到了最后百度承诺给到比较好的待遇了(甚至说尽量解决户口…不过HR的承诺你懂的),加上内推的学长跟我说这个组确实很有发展,我觉得去百度的技术发展应该会更快一些。</p>
<p>亚马逊这边我开始的时候比较担心技术发展问题,不过和新的manager聊过以后,他说了他对做技术的理解,感觉比较符合我的预期,加上这个组负责的业务发展很快,应该会有一定的发展空间。而且,亚马逊的待遇+户口期望值都还不错。</p>
<p>斯伦贝谢因为我原来比较中意的是TFE项目,这个项目后来被得知今年不在应届生中进行了,然后跟周围的同学、老师聊了一下,觉得我肯定更加适合互联网(亚马逊作为电商也算吧)企业一些,我也实在是舍不得放下以前接触的开源的那套东西,于是斯伦贝谢虽然最后offer+户口还算不错,也很快决定放弃了。</p>
<p>在确定亚马逊最终的小组去向之前,我还是比较犹豫百度和亚马逊的,但是后来跟新组的manager聊完,觉得在亚马逊不一定意味着技术挑战会少。而且读研这两年下来,我意识到如果要取得真正意义上的技术提升,需要的是在工作之外对技术的不断追求。如果只能被动学习,技术能力很难得到质的提升,HR或者是Manager承诺的发展并不是最重要的,个人的努力起的还是决定性作用(或许我几年后会觉得今天的想法太不成熟)。</p>
<p>另外,找工作之前和找工作的过程都在强化我对自己的一个认识:我可能更适合外企。这是我的第一份工作,头几年所谓的外企天花板效应大概没可能降落在我身上。所以我也就没有再多犹豫,选择了亚马逊。</p>
<p><strong><em>这篇文章是我写给自己纪念的,谢绝各种转载</em></strong></p>Ley又是六月天2013-06-04T13:45:00+00:002013-06-04T13:45:00+00:00https://blog.imley.net/2013/06/04/this-june<p>如果说写博客要有节操的话,我已经是一个相当没有节操的写博客的人了。</p>
<p>如果说这个博客还剩下一点节操的话,那就是
我每年的年末(或者可以说是年初)和年中,都会写<a href="http://blog.imley.net/archives.html">一篇博客</a>——我暂时还觉得这是很提升逼格的一个行为,况且坚持的代价实在不高,所以我坚持下来了。</p>
<p>说实在的,几年下来,我只是感受到了GFW不断的升级,一两年前,我觉得有些人再下作,也不可能吧Gmail。后来Gmail被半废了,那一天我发一个邮件给一个师兄,师兄QQ告诉我说Gmail不好上了,让我发他的QQ邮箱,我记得当时我感情很复杂。后来听到类似的话越来越多,我也就没啥感觉了。</p>
<p>最近看了两遍的<a href="http://movie.douban.com/subject/11529526/">中国合伙人</a>,电影最后哥儿几个居然承认当年<em>too young, too naive</em>了,第一次看的时候就觉得有些维和,第二次看到这个场景,依旧觉得不舒服——或许再过几年,这种感慨见多了,我就跟听到”我用QQ邮箱了”一样——不说习惯了,至少是会麻木了。</p>
<p>这几年,每年的今天,北京的天气似乎都不是很好,于是每年都有人拿这个做文章,我想领导们大概很恼火。</p>
<p>虽然6月的天,说变就变,但是领导们应该不喜欢不稳定的东西。如果哪年突然在6月人工干预起天气来,我大概也不会觉得惊奇了。</p>
<p>注定这又是一篇水文了。</p>Ley如果说写博客要有节操的话,我已经是一个相当没有节操的写博客的人了。April Jane上线2013-02-20T15:59:00+00:002013-02-20T15:59:00+00:00https://blog.imley.net/2013/02/20/april-jane<p><img src="/images/april-jane.png" alt="screen shot of april jane, the theme" />前段时间默默地把博客的主题上线了,这个主题是我给自己布置的寒假作业之一,也是我唯一勉强算完成了的寒假作业。</p>
<p>这个主题是一个简单的二栏的主题,其实这是一种很没有特点的页面布局方式,一开始我也没有定下来会用什么样的布局,写着写着就这样子了,我也不确定以后会不会修改布局,或许哪天我心血来潮,整个布局就变了。</p>
<p>写主题的时候参考了<a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/" title="notmyidea参考文章">not my idea</a>的布局,然后动手写的时候又学习了一下html5的知识,算是把这个主题html5化了。因为写这个主题的时候其实我上网很不方便,于是就按自己的理解写了一个tagcloud,感觉很是简陋,以后估计还会改的。</p>
<p>最佳的显示效果应该是在OSX下的Chrome,因为挺喜欢Helvetica这个字体,OSX下默认的Helvetica英文字体看起来很舒服,黑体也比微软雅黑看起来舒服。回头有时间的话,找找有没有什么开源的英文字体,可以至少统一了网站的英文字体风格。中文字体我就没有办法了。</p>
<p>还有一些bug,比如说是line-height设置了以后的行高还是不符合预期,因为我想用left-border做一下标题左边的提示符,如果显示有误会很难看。这个也就在Mac下的Chrome达到了我的预期,在不同的Win7上问题还表现得不一样。其它一些bug是我忘了一些css的hack~回头这些bug都得修复一下。</p>
<p>做的时候是从无CSS一步步改过来的,因为缺少必要的工具,也不好查色彩搭配的资料,整体的视觉风格以灰色为主,做完匆忙上线以后,看了几次觉得页面显得太紧凑了。这些都是后面要改的非bug问题,我希望能最后的成品是一个黄绿配色的,看起来没这么紧凑的主题。</p>
<p>另外,我在banner上放了一张图片,准备是放一些自己拍的照片切换的,但是整体视觉风格,感觉不是灰常搭调。艺术细胞还是比较欠缺啊。不过如果没有图片整体又太单调。这个不知道如何取舍。</p>
<p>本主题使用到的其他的开源项目有:</p>
<ul>
<li><a href="http://necolas.github.com/normalize.css/" title="normalize.css">normalize.css v2.1.0</a>: 统一各浏览器的视觉风格</li>
<li><a href="https://github.com/richleland/pygments-css" title="css files created from pygment's built-in styles">autumn.css</a>: pygment的代码高亮主题</li>
</ul>
<p><strong><em>最后</em></strong>,这个主题为什么要叫 <em>April Jane</em> 呢,因为这个主题是我在<strong>某个四月</strong>下决心要开始做的——那时我还在用WordPress,还挺熟悉前端的一些东东。而Jane呢,是我的那个<strong>她</strong>。</p>Ley前段时间默默地把博客的主题上线了,这个主题是我给自己布置的寒假作业之一,也是我唯一勉强算完成了的寒假作业。吐槽一下DISQUS的thread链接错误问题2013-01-03T10:23:00+00:002013-01-03T10:23:00+00:00https://blog.imley.net/2013/01/03/disqus-thread-url-issue<h2 id="背景">背景</h2>
<h3 id="没有信息量的背景">没有信息量的背景</h3>
<p>事情得从前段时间我把博客从<a href="http://imley.net/2012/12/25/bye-wordpress/" title="Bye WordPress">WordPress</a>换到<a href="http://blog.imley.net/2012/12/25/hello-pelican/" title="Hello, Pelican">Pelican</a>开始说起。</p>
<p>当时,一时头脑发热的我,告别了使用多年,人见人爱,花见花开的WordPress,转投比较小众的<a href="https://github.com/getpelican/pelican" title="ddd">Pelican</a>(我承认是受<a href="http://twitter.com/yegle" title="Yegle的博客">@yegle</a>的启发)。</p>
<h3 id="信息量来了">信息量来了</h3>
<p>Pelican是静态博客,如果需要评论的话,默认是用的<a href="http://disqus.com/" title="DISQUS">DISQUS</a>的评论服务。如果使用Pelican的notmyidea这个主题,在<code class="language-plaintext highlighter-rouge">pelicanconf.py</code>里头添上<code class="language-plaintext highlighter-rouge">DISQUS_SITENAME</code>字段,就可以使用DISQUS的评论服务了——很爽是吧。</p>
<p>一开始我都没有意识到这个问题,直到有一天我的博客被评论了——我一看DISQUS给我的邮件。里头评论那个链接怎么指向的是<code class="language-plaintext highlighter-rouge">http://localhost:8000/slug/</code>这样的测试地址啊,简直是不能忍啊。于是,为了解决这个问题,我开始了艰难的求索之路。</p>
<h2 id="失败的尝试">失败的尝试</h2>
<h3 id="试图修改url">试图修改URL</h3>
<p>不是URL错了嘛,我改就是,于是从DISQUS的用户的角度出发,我进入了DISQUS的后台。找到了<code class="language-plaintext highlighter-rouge">Tools->Migrate Threads</code>这个选项卡。总之,我在尝试了上头所列的三种方式(”Domain Migration Wizard”, “Upload a URL map”, “Recirect Crawler”)之后,都无果…</p>
<p>另外,这期间我认为DISQUS可能修改数据会有延时,等了好几天。总之,最后的结论就是,通过管理界面的工具,不靠谱。</p>
<h3 id="试图调用disqus的api">试图调用DISQUS的API</h3>
<p>在第一次尝试失败以后,我本着计算机系学生“应该写代码解决问题”的精神,展开了阅读DISQUS API并尝试写脚本解决该问题的工作。</p>
<p>还好的是,<a href="http://disqus.com/api/docs/" title="DISQUS api docs">DISQUS的API文档</a>还算完善,也有<a href="https://github.com/disqus/disqus-python" title="DISQUS API bindings for Python">Python的API bindings</a>,事情的痛苦指数降低了一半。</p>
<p>在艰难地获取了token以后,我开始写脚本并进行测试了。我用的是<code class="language-plaintext highlighter-rouge">Threads</code>对象的<code class="language-plaintext highlighter-rouge">update</code>方法,虽然<a href="http://disqus.com/api/docs/threads/update/" title="DISQUS thread update api">文档页面</a>上头写明了:</p>
<blockquote>
<p><strong>this method is currently under development and subject to change.</strong></p>
</blockquote>
<p>我还是义无反顾,抱着既然走到这一步。就继续走下去的信息,走了下去。</p>
<p>事情从这个时候似乎开始柳暗花明了,很快,我写了一个脚本,找到哪些Threads的URL是错误的,然后<code class="language-plaintext highlighter-rouge">update</code>它们(提示:<strong>下面这段脚本只是为了说明我如何“尝试”解决问题,千万不要指望它能解决问题</strong>):</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>:::python
from disqusapi import DisqusAPI
secret_key = 'your_secret_key'
public_key = 'your_public_key'
token = 'your_token'
wrong_url = 'localhost:8000'
disqus = DisqusAPI(secret_key, public_key)
# perhaps you should use a Paginator
threads = disqus.threads.list(forum='your_site')
for thread in threads:
link = thread['link']
print link
if link is None:
continue
if link.find(wrong_url) >= 0:
link = link.replace(wrong_url, 'blog.imley.net')
try:
result = disqus.threads.update(thread=thread['id'],
url=link,
access_token=token)
print "id:%s now with url:%s" % (result['id'],
result['link'])
except(Exception) as e:
print e
</code></pre></div></div>
<p>因为我十分怀疑自己对DISQUS API的理解,所以我打印了处理结果。结果我<strong>欣喜</strong>地发现,API返回回来的URL地址正确了!</p>
<p>但是我还是十分怀疑我是不是调用错了API,于是我再用API查了一次。结果刚刚更新的<code class="language-plaintext highlighter-rouge">link</code>字段,还是令人憋屈的<code class="language-plaintext highlighter-rouge">localhost:8000</code>打头的地址——我还是以为有延时,于是等了一天——一天以后,我再次用API去查,还尼玛是<code class="language-plaintext highlighter-rouge">localhost:8000</code>。于是,我的第二轮,宣告尝试。</p>
<p>这一轮,最让我感觉到憋屈的是。尼玛要不就别给我返回,咋返回了期望的response还不给人家处理。不过DISQUS也可以说,这个页面上头一个大大的告示,就是告诉你这个API方法不可靠嘛~</p>
<h2 id="解决问题">解决问题</h2>
<h3 id="能解决吗">能解决吗</h3>
<p>我几乎快要放弃了,但每每欲放弃,不爽之情油然而生。于是我只能硬着头皮弄下去了,在这么多次尝试无果以后,我终于开始怀疑——<em>“这个URL字段是不是能改”</em>了,于是我又去DISQUS的官方帮助里头找,终于,让我找到了<a href="http://help.disqus.com/customer/portal/articles/735170-how-can-i-update-discussion-urls" title="how to update disqus url">这个页面</a>,上头说到:</p>
<blockquote>
<p>Thread URLs cannot be updated by passing <code class="language-plaintext highlighter-rouge">disqus_url</code> after a thread has been created. <code class="language-plaintext highlighter-rouge">disqus_url</code> can only be set once, upon thread creation.</p>
</blockquote>
<p>尼玛啊~~根本就不能改啊!尼玛…尼玛怎么就不在<code class="language-plaintext highlighter-rouge">Threds->update</code>的<a href="http://disqus.com/api/docs/threads/update/" title="DISQUS thread update api">API页面</a>稍微提一下呢,尼玛真是浪费感情啊!</p>
<p>于是,这个问题终于被我最终判定为不可解决了,我几乎感觉不会再爱了。</p>
<p><em>P.S. 这个问题也不是完全无解,你可以把文章链接改了,重新导入,或者迁移一次threads,但是我情感上真的接受不了</em></p>
<h3 id="问题的源头">问题的源头</h3>
<p>如果这个问题真的不能解决,那么,我还能做的,就只有预防它了。所以,我终于开始仔细思考造成这个问题的原因了。</p>
<p>找啊找啊找朋友,找到一个好朋友,终于让我找到了这个问题的<a href="http://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables#disqus-url" title="DISQUS对初始化一个Threads的各个变量的解释">官方解释</a>,原来,在threads被初始化的时候<code class="language-plaintext highlighter-rouge">disqus_url</code>这个参数被设置了,而且不会了。而这个参数如果没有被在页面中显式地声明,那么就会通过<code class="language-plaintext highlighter-rouge">window.location.href</code>获取。</p>
<p>就算再不熟悉js,我也知道了,这就是<strong>万恶之源</strong>啊。</p>
<p><em>回头想想,为啥讨论这个问题的人少,大概是大家不会在本地预览一下博客,而是直接上传到服务器吧。</em></p>
<h3 id="避免问题">避免问题</h3>
<p>既然问题的原因一清二楚了,那么剩下的事情就好办了,看了一下Pelican的代码,找到主题对应DISQUS threads调用的这段API,然后一顿修改,测试,问题解决了,人民群众表示情绪很稳定。</p>
<p>最后,抱着回馈大众的指导思想,我将自己写的三行代码commit,并且提交了生平第一个<a href="https://github.com/getpelican/pelican/pull/669" title="我提交的Pull Request">pull request</a>。不过事情过去这么多天了,大家一点反应也没有,大概是我的英文太烂,抑或是这个实现实在是太暴力了…</p>
<h3 id="回头想想">回头想想</h3>
<p>现在想想,如果我一开始就对造成问题的原因寻根问底,也许就不用走这么多弯路,浪费这么多感情了。归根结底,还是解决问题的态度不端正啊。</p>
<h2 id="后记">后记</h2>
<p>我之所以会花这么长的时间,为这个根本不复杂的问题,写这么一篇日志,只是因为,<strong>我用过情</strong>。</p>Ley背景