代码改变世界

赴美工作常识(Part 6 - 绿卡排队)

2016-05-19 08:28 by Cat Chen, 871 阅读, 收藏, 编辑
摘要: 上一篇《赴美工作常识(Part 5 - 绿卡优先级)》解释完排队的优先级是怎么确定的,以及 PERM 和 I–140 表的意义,接下来就要解释一下队具体是怎么排的以及排到之后的 I–485 表申请。这里必须要有免责声名。因为我不是移民律师,所以我只是说我的理解,法律问题还是需要咨询律师的。 I–48阅读全文

赴美工作常识(Part 5 - 绿卡优先级)

2016-04-19 12:17 by Cat Chen, 1543 阅读, 收藏, 编辑
摘要: 这个系列的第一篇《赴美工作常识(Part 1 - 签证)》是三年前写的,过了这么久这个系列终于要继续下去了。接下来当然时讨论绿卡的事情了。跟讨论签证一样,这里必须要有免责声名。因为我不是移民律师,所以我只是说我的理解,法律问题还是需要咨询律师的。 由于绿卡涉及到排队,所以必须解释优先级。这个优先级就阅读全文

如何捕获和分析 JavaScript Error

2014-03-17 05:58 by Cat Chen, 5361 阅读, 收藏, 编辑
摘要: 前端工程师都知道 JavaScript 有基本的异常处理能力。我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常。但估计绝大多数前端工程师都没考虑过收集这些异常信息。反正只要 JavaScript 出错后刷新不复现,那用户就可以通过刷新解决问题,浏览器不会崩溃,当没有发生过好了。这种假设在 Single Page App 流行之前还是成立的。现在的 Single Page App 运行一段时间后状态复杂无比,用户可能进行了若干输入操作才来到这里的,说刷新就刷新啊?之前的操作岂不要完全重做?所以我们还是有必要捕获和分析这些异常信息的,然后我们就可以修改代码阅读全文

Facebook 发布「流程」

2014-03-13 08:38 by Cat Chen, 3031 阅读, 收藏, 编辑
摘要: 时不时就会在面试过程中碰到有候选人问 Facebook 是否采用 Scrum 之类的敏捷方法,偶尔也会有中国的朋友问及 Facebook 上线流程。我通常会简单说几句,然后说「如果你真感兴趣的话,去搜索 Chuck Rossi 在 Velocity 2012 San Fancisco 演讲的视频」。无论从 Scrum 的角度来看,还是大多数中国公司的上线流程来看,Facebook 的发布流程都显得很不一样,但其实又非常合理,看完那个视频你就明白了。尽管里面提到的内部工具都没有在 Facebook 的 GitHub 上开源,但那些截图已经足够清晰说明其功能和用途了。工具固然是重要的一方面,但我觉阅读全文

Ping!

2014-01-31 15:20 by Cat Chen, 1588 阅读, 收藏, 编辑
摘要: 我知道我很久没有更新这个博客了,所以特意来更新一下,骚扰一下各位订户。我有几年没有写过很具体跟技术相关的文章了,而跟职业发展相关的文章也半年没更新了,所以最近准备开始写写技术文章。在此之前,我要先完结我手上的一个游记系列。考虑到我所有的游记都不会发到这个博客来,所以在此进发几张照片几个链接诱惑大家去订阅我的另一个博客。Death ValleyDeath Valley 四日露营 [1 2]:到美国后的第一个圣诞节,没有什么过节的传统,正好有几个朋友说要去 Death Valley 露营,然后就跟着去了。这是我第一次去露营,发现在有足够现代化装备的情况下其实露营也不是那么的困难。 Death V.阅读全文

赴美工作常识(Part 4 - 面试)

2013-09-25 09:31 by Cat Chen, 5734 阅读, 收藏, 编辑
摘要: 最近跟同事讨论面试的事情比较多,所以就综合大家所说的列举几条面试建议吧。这些建议是针对中国候选人应聘美国职位而写的,但适用范围可能更广。假若你实际的实力是 X,面试官感知到你的实力是 Y,这些建议既不能让你实力暴增(X++),也不能让你展现超乎实际的实力(Y > X),只能帮助你避免由于沟通问题而造成的实力不被发现(Y < X)。当做讨论而非考试尽管面试有个「试」字,但在真正好的技术面试其实不是一问一答的考试,更多是如同同事之间的技术讨论一样,从比较糟糕的解决方案开始做优化,直到做到大家都可以接受的程度为之。这个观点在《理想的技术面试过程》中也提到过,在这里就说一下具体应该怎么做。阅读全文

赴美工作常识(Part 3 - 英语)

2013-08-05 09:20 by Cat Chen, 10348 阅读, 收藏, 编辑
摘要: 在《Part 2 - 申请》的评论中有人问英语要达到何种水平,以及如何提高。其实英语也不是我的强项,只是刚刚好做到能够沟通而已。由于我在知乎上回到过一个类似问题,我就基于那个答案简单说一下吧。Aa首先,你要能脱离中文和翻译,纯粹地使用英语来思考。很多英语单词短语是没有对应中文翻译的,就如同很多中文字词是没有对应英文翻译一样,然而这不妨碍你在使用中文时使用这些字词传达意思。同理,很多英文单词短语你不须要知道他们对应的中文翻译,只要你能够使用它们传达意思就行了。有时候你只需要感知一个词汇所传达的形象或者是感觉就可以了,你甚至不需要能够解释清楚它是什么意思。例如说,中文里面常见的「屌丝」和「hold阅读全文

50 年前的黑客黑什么?

2013-07-22 08:00 by Cat Chen, 5138 阅读, 收藏, 编辑
摘要: 19 世纪 60 年代,个人电脑还没有出现,两位 Steve 还没有把苹果电脑发明出来,那当时的黑客黑什么呢?黑电话网络。其中最著名的例子应该是两位 Steve 发明的蓝盒子了——只要用它来拨号,就能免费拨打长途。那到底蓝盒子的原理是什么?如果你好奇心足够重,就应该去看一本叫做《Exploding the Phone》的书。这本书先介绍了一下 AT&T 的简史。在贝尔发面电话之前,垄断美国的网络是西联电报。当时电报存在一个技术难题,就是一条线路只能走一个信道。由于想要发电报的人越来越多,而扩建线路的成本并不低,所以西联电报尝试研究信道复用技术。当时研究信道复用的人很多,大家都认为谁先研阅读全文

孩子王?有孩子气才能为王?

2013-07-19 14:15 by Cat Chen, 3934 阅读, 收藏, 编辑
摘要: 以最快的速度看完了 Facebook 第 51 号员工的回忆录《The Boy Kings》。尽管是关于 Facebook 成长的故事,说的却不是跟技术或者投资相关的事情,这是因为作者 Katherine Losse 并不是一名工程师,而是一位英文硕士。她最初加入 Facebook 时是一位客服,后来负责过 Facebook 的国际化工作,最后成为 Mark Zuckerberg 的代笔写手,估计是离 Mark Zuckerberg 最近的非高管了。这种经历使得作者陈述故事的角度如此的与众不同,让读者也必须跟着反思「难道高科技公司就必须做得如此孩子气才能成功?」作者最初加入 Facebook 阅读全文

赴美工作常识(Part 2 - 申请)

2013-07-10 09:24 by Cat Chen, 6046 阅读, 收藏, 编辑
摘要: 在《Part 1 - 签证》的评论中有人提到,说我还没说如何申请职位就说签证的事情了。一方面,签证的周期决定了你申请职位的时间,错过关键时间点的话就可能错过重要的机会。另一方面,传统意义上的「申请」其实不是我的强项,而我个人的做法可能对大多数人来说是不容易实践的。首先需要说明的是,我在找工作时有两件事情是绝对不做的:大量投简历给众多公司为面试做任何应试准备我找工作基本上靠内部推荐,所以我是不会投简历给众多公司的。这不仅仅是因为内部推荐会使得公司更重视,还因为我需要了解一家公司是否适合我。一家公司如果没办法吸引到我身边跟我志同道合的好友,那么它对我的吸引力也相对有限。(我选择豌豆荚的时候就是因为阅读全文

赴美工作常识(Part 1 - 签证)

2013-05-27 08:31 by Cat Chen, 9303 阅读, 收藏, 编辑
摘要: 在《面试体验:Facebook 篇》的最后,我提到了我会写文章来介绍一下如何申请美国职位,以及拿到 offer 后入职前后都需要做些什么,那我们就先从到美国工作所必须的签证说起吧。说到签证,还是要先免责声明一下的,因为我不是移民律师,所以我只是按自己的理解来说,如果真的碰上了法律问题你还是要去咨询律师的。能够让你到美国工作的主要签证无非就是那几种:H、L、O。对于想要从中国直接应聘美国职位,那最常见的就是通过 H 签证了,其中只有 H–1B 是跟你有关系的。由于 H–1B 的配额是跟美国的财年挂钩的,所以我们必须先了解美国财年是如何计算的。美国的财年都是从上一自然年的 10 月开始算的,所以 阅读全文

面试体验:Facebook 篇

2012-11-05 08:20 by Cat Chen, 33018 阅读, 收藏, 编辑
摘要: Google、Microsoft 和 Yahoo 都是去年的事情了,接下来说说今年的吧。其实我在豌豆荚非常爽,跟身边的设计师和工程师合作都很愉快,所以唯一能够诱惑我去面试的就只有 Facebook 了。最初接受 Facebook 面试邀请的原因并不是追求它的 offer,而是我就想了解一下 Facebook 是怎么面试的,有什么是值得豌豆荚招聘借鉴的。过去在百度做面试官,只是面试而已,公司招不招得到人我没什么感觉。我觉得公司招不到人就招不到人咯,我们没必要扩张得那么快啊,先专注于做好手头上的项目再说嘛。豌豆荚其实不是着急要招前端工程师,我们还是坚持只招一流人才,只不过长期发不出 offer 还阅读全文

面试体验:Yahoo 篇

2012-08-21 09:10 by Cat Chen, 20393 阅读, 收藏, 编辑
摘要: 前面两篇文章提到了 Google 和 Microsoft 的面试体验,可惜都没有 offer,接下来说说有 offer 的。考虑到我已经在 Google 和 Microsoft 的招聘流程当中了,于是我也让 Yahoo 的同学帮我内部推荐一下,试试 Yahoo 的面试如何。本来没想着很正经地面,不过最后拿到了 offer,所以才有了我之前那篇文章所说的「越是放松越能成功」。Yahoo 一开始并没有什么 HR 沟通和预约,某一天我从百度下班回家正准备做饭就接到面试官电话。我开头以为他想要跟我约时间,结果他问我是否方便进行面试。我当时毫无准备不是很想面试,不过既然室友可以做饭那面试一下也没什么所谓阅读全文

面试体验:Microsoft 篇

2012-08-14 08:49 by Cat Chen, 22508 阅读, 收藏, 编辑
摘要: 在上一篇《面试体验:Google 篇》中说到,我对猎头的标准回复是「有美国或者香港的职位吗?」在进入 Google 招聘流程后,Microsoft 有一位 HR 打电话来跟我说有一个北京的职位跟美国总部会有密切的合作,问我有没有兴趣。我当时想的是,如果加入美国公司的中国分公司,或许将来有机会 rel...阅读全文

面试体验:Google 篇

2012-08-08 11:06 by Cat Chen, 44966 阅读, 收藏, 编辑
摘要: 尝试在自己的博客上搜索点东西,结果发现 4 年多以前还在博客上写过一系列的 recruiting events,把大四时候参加过的各种笔试面试都记录下来了。我从去年准备离开百度开始,到现在总过面试过 4 家公司:Google、Microsoft、Yahoo、Facebook,原本去年也想把面试经验写一写的,结果一拖就拖到现在。我不想写面试经验,因为我个人不喜欢漏题和背题的做法。我自己作为面试官,知道要设计出来一道好用的题目有多难,所以我希望面试者都是如实表现自己解题能力的。我更喜欢写面试体验,就是在整个面试过程中一家公司给人的印象是怎样的,HR 和面试官是否专业,能否让人信服这是一家值得长期工阅读全文

HTTP 状态码详解

2012-06-19 09:04 by Cat Chen, 9662 阅读, 收藏, 编辑
摘要: 最近看《REST in Practice》,发现 HTTP 如此之多的状态码都有各自的含义,要准确使用并不难,但现实当中很少人能够做得到。大多数人熟悉的状态码就那几个,平时也不会去阅读 RFC 2616,结果反复使用的也就是那几个状态码。其实很多 REST 中可能遇到的情况,在 HTTP 状态码中都已经有考虑到,不需要自己去发明新的状态码,也不需要在 header 或者 body 自定义错误信息。在说状态码之前,首先建议大家还是先阅读一下 RFC 2616 中的相关章节,看看已有的状态码描述都是什么。我相信有部分状态码是你看了描述也不知道用来干什么的,这时候就需要有更具体的例子来告诉你怎么用了阅读全文

理想的技术面试过程

2012-06-06 06:36 by Cat Chen, 13612 阅读, 收藏, 编辑
摘要: 作为面试官从在大学里面试社团大一新生,到加入百度后帮公司面试候选人,我觉得我对面试这件事一直不得要领。百度提供面试培训,也允许参考或使用题库,但我还是觉得不知道如何判断给不给一名候选人通过我这关。偶尔我会遇到非常优秀的实习生候选人,我能十分确定我要给他过,甚至想方设法确保他能来。其它时候,我觉得我的判断随机性太大,或许还不如一枚硬币做得好。在百度做二面的时候,我往往会问一些组合问题,就是候选人需要有扎实的基础加上一定的解题能力才能做出来的。我假设一面的面试官已经问过基础问题,所以我不会再问基础问题。结果通常是,候选人的基础不够扎实,会作出一些错误的假设,甚至面对组合问题就无从下手,不知道如何分阅读全文

三藩市湾区一周游

2012-06-04 16:33 by Cat Chen, 6863 阅读, 收藏, 编辑
摘要: 上个星期四一早从广州飞往三藩市,到这周三中午返回,大约一周时间,在三藩市湾区充满拜访了多位好友,也参观了几家互联网公司。还记得两年前去三藩市湾区,遇上暴风雨,不仅景色没看到,还让人担心自驾安全。这次旅行途中南湾阳光明媚,就算是三藩市也只是有雾而已,没有遇到下雨的情况,感觉好多了。5/24因为 Delta 取消了广州到东京的航线,所以尽管这次还是经东京转机,但飞的是 ANA 和 United。到达三藩市机场后,我做的第一件事情是把手机掏出来搜索机场免费 Wi-Fi。两年前的三藩市机场好像是没有免费 Wi-Fi 的,但我很确信现在是有的。找到 Wi-Fi 后先用 Foursquare check-阅读全文

怎么样才算是 RESTful?读 REST in Practice

2012-05-09 22:08 by Cat Chen, 6995 阅读, 收藏, 编辑
摘要: 最近 O’Reilly 搞活动,我就半价买了一本《REST in Practice》(Kindle 版链接)。对于 O’Reilly 的书,我通常会对比 O’Reilly 打折后的价钱和 Kindle 版的价格,通常是那家更便宜就在那家买,但图表或代码比较多的我就会坚持买 O’Reilly 的版本,因为 PDF 能够最好地保存这些格式。回到 REST 的话题上。尽管这个概念 2000 年就被提出来了,2007 年成为了一个热词,随后越来越多的服务都宣称自己是 RESTful 的,但是到底真么做才是真正的 REST 我从来没有自习学习过。由于 2007 年的时候 Ruby on Rails 也十阅读全文

Covariant(协变)与 Contravariant(逆变)

2012-01-13 09:26 by Cat Chen, 2972 阅读, 收藏, 编辑
摘要: 今天为了解释某个问题而提到协变和逆变,发现每次解释这两个概念都会忘掉它们的本质,然后要重新看看定义,重新消化一下才能说明白。所以我决定把自己对协变和逆变的理解写下来,以免将来再次忘掉。我知道 .NET 的用户喜欢用 delegate TResult Func<in T, out TResult>(T arg); 来解释协变逆变,我则喜欢把 Func 的签名简写为 Haskell 签名形式。也就是说,把 Func<T, TResult> 写成 f :: a -> b 的形式;把 Func<T1, T2, Result> 写成 f :: a -> b阅读全文

世界顶级黑客自传:Ghost in the Wires

2012-01-08 21:55 by Cat Chen, 8880 阅读, 收藏, 编辑
摘要: 上个星期终于把 Ghost in the Wires 看完了,现在就抽时间来写写书评吧。尽管我一向懒得写书评,不过这本书真的是超级推荐!最初我是在 Audible 上面买了这本书的有声读物,然后发现朗读得超级好,尤其是 Kevin 知道危险逼近时心中的独白——「Fuuuuuuuck!」朗读的语气掌握得非常好。后来我决定买 Kindle 版来仔细读一下,因为有声读物不会专心听,只能把我到大意。随后我边听边读把整本书看完了。这本书整体上分为 4 大部分。第 1 部分讲述 Kevin Mitnick 是如何入行的——他父亲和叔叔都是商人,这使得他很小的时候就意识到通过言语可以驱使他人做一些对自己有利阅读全文

前端工程师的职业发展路线在哪?

2011-12-14 08:40 by Cat Chen, 11860 阅读, 收藏, 编辑
摘要: 我猜想国内很多前端工程师都想过这个问题吧。前端工程师往往属于产品研发团队,但却很容易被边缘化——后端工程师觉得自己才是主力,没有后端工程师产品就不存在了,但没有前端工程师产品还能有,只是界面非常糟糕而已。这时候前端工程师就开始感觉自己像是个外包似的,只是来帮别人完成一些任务而已,对产品没有归宿感。这时候前端工程师的职业发展路线在哪?成为一个更好的外包吗?要做关键任务我觉得,要别人重视你的工作,不仅仅是你做得好就行了,还要求你的工作对别人来说足够重要。这跟产品定位有关——例如说对搜索引擎来说,前端对产品的影响不会非常大,用户只要能搜索到自己想要的结果就行了。搜索引擎最复杂的交互可能就是搜索框的自阅读全文

看对的书 (Part 1 - Tribal Leadership)

2011-12-13 09:27 by Cat Chen, 6315 阅读, 收藏, 编辑
摘要: 很久很久之前(准确来说是两年前),我开始了一个系列叫做「看对的书」,然后只写了一篇 intro 就没有写下去。背后的原因包括,我确实越来越懒了,同时写书评也不容易——剧透太多了,大家觉得没必要去看原书;剧透太少了,大家觉得看不出书的吸引力在哪里。如何把握剧透多少,怎么剧透才能吸引大家取看原书,我还没有想好,不过我可以先尝试着写。我今天想要推荐的书是《Tribal Leadership》,也就是《部落领导力》,不过这本书暂时没有中文版。尽管这是一本讲「领导力」的书,但里面说的并不是你要做什么事情才能拥有领导力。书中说得更多的是部落——只有在你理解到部落的 5 个阶段后,你才能够使用你的能力把你的阅读全文

工具:开发者使用,企业埋单

2011-12-04 21:18 by Cat Chen, 2121 阅读, 收藏, 编辑
摘要: 我喜欢写一些小工具来简化我的工作,通常是一些小组件。利用这些小工具我可以提高自己代码的可读性,同时维持我的 DRY (Don't Repeat Yourself) 洁癖。工具对我来说很重要,因为时间对我来说很宝贵。能够用工具自动化完成的事情绝对不手工反复操作,能够用工具避免人为错误的地方一定让工具来确保质量。使用工具节省下来的时间用于玩游戏的话,绝对是值得的!过去我主要做工具给自己用,或者是给自己所在的团队使用,所以觉得自己就是用户,自己设计产品给自己用肯定是没问题的。然而做工具给更多人用呢?看起来就不那么容易了。之前在百度经历过 Tangram 的需求分析与设计阶段,每个产品线都派出阅读全文

「云端 JavaScript 漫游指南」

2011-08-09 00:00 by Cat Chen, 3558 阅读, 收藏, 编辑
摘要: 7 月 30 日在 w3ctech 的 JavaScript 活动广州场 讲了一节「云端 JavaScript 漫游指南」,实质上就是 Node.js 入门讲座。希望通过这一节讲座,让原本熟悉 JavaScript 的前端工程师尝试使用 Node.js 开发一些应用,探索 Node.js 为 Web 开发带来的可能性。这场讲座上主要使用了两个小 demo 来解释 Node.js 的一些基础概念,并且展示了如何把自己的应用部署到云端。需要使用 Node.js ,最起码你要知道 CommonJS Modules 的概念,然后你才能在一个 js 文件里面使用另一个 js 文件实现的功能。这是通过 r阅读全文