坚持编程:如何找到一份工程师工作

标签: 编程 找到 工程师 | 发表时间:2013-05-26 23:02 | 作者:cometwo
出处:http://blog.csdn.net

说实话,你是一位优秀的工程师候选人吗?你怎么评价自己?你面试过多少家公司?你拿到offer的比率是多少?试一下用以下的公式来计算。

  
  1. x = number of companies interviewed with onsite  
  2. y = number of offers received  
  3.  
  4. value = 100 * log(x) * y / x 

如果你的计算结果小于90,请仔细阅读这篇文章;如果大于120,那你并不需要这篇文章。

我是谁?

我没有高中学历。我19岁从芝加哥前往南加州开始编程。我把所有东西装进了我的轿车里,身上只有400美金和一个offer,4万美金年薪的高级程序员。那是在12年前,当然又是另外一个故事了。

从那以后,我曾在   Double HelixNamco BandaiGoogle, Obvious and  Square等公司工作过。也收到过来自 Naughty DogActivisionRiot GamesBlizzardPinterestGoldman Sachs等公司的offer。正由于此,用前面提到的公司算出我的得分是132。

我至少面试过500位工程师求职者,他们之中大概10%会收到offer,3%我认为是”rockstar”求职者,他们留给我的印象尤为深刻。

我想告诉你,绝对没有万无一失的方法保证你被录用。因为这里面存在太多的不确定因素,特别是像Google这样的公司,你将会面对5-7个随机挑选出来的工程师,他们会选择一套他们认为合适的问题来进行面试,通常会包括“白板编码”。但是有一些工程师是很差劲的面试官,他们会问一些不公平的问题并作出武断的判断。但是没关系,这对我们来说正好,因为求职者通常会允许搞砸多轮面试中的其中一轮。

我可以做的就是告诉你怎样做好充分的准备,下面是我提供的一些建议:

技术建议:

1 坚持编程:

很简单,程序写得越多,你的收获越多。通过编程,你不断的练习。不过,最好的练习是有目标的练习。在脑海里有一个目标,开拓新的领域,和挑战自我。经过一段时间后,你需要给你完成的和未完成的项目建立一个主页。Github是一个非常好的用来建立项目主页的地方。

2 掌握至少一门编程语言

掌握一门编程语言会让你拥有敏锐的洞察力。为此,你必须编写大量的代码,阅读大量的代码,同时要学习代码里的最佳实践。理论上,一门语言会有一个很活跃的社区,和大量的产品代码提供学习。可选的编程语言包括C#、C++、java、PHP、Python和Ruby。

在C++面试里,有一个经常被问到的问题:“你给自己的C++知识打多少分,从1分到10分?”。我非常厌恶这样的问题。愿上帝帮助那些给自己打了 9-10分的人,因为他们很快会露出马脚。Bjourne Stroustrap给自己打了8分或者更少。这门语言真的太复杂,太丰富,而且随着时间的过去,演进了太多次。离题了:)。

3 理解复杂度

阅读这篇文章(  Read this cheat sheet)。明确自己清楚复杂度的含义。然后实现一些常用的算法,比如Dijkstra’s, Floyd-Warshall, Traveling Salesman, A*, bloom filter, breadth-first iterative search, binary search, k-way merge, bubble/selection/insertion sort, in-place quick sort, bucket/radix sort, closest pair 等。再次重复,坚持编程!

4 重复发明轮子

你应该使用你常用的语言来实现一些常用的数据结构。不要依赖于库。实现以下的数据结构并为其编写测试用例:vector (dynamic array), linked list, stack, queue, circular queue, hash map, set, priority queue, binary search tree等。你应该能够很快的编写完成。

5 解决问题

不要在google上这样搜索  like this。这都是一些基础的编程概念。你要做的是,至少花费40小时编写解决各种问题的代码。其中最好的资源是TopCoder( Read this),然后尝试去解决更多的问题。挑一些问题来测试你实现recursive, pattern-matching, greedy, dynamic programming, and graph problems的能力。浏览一下这些归档的问题( archived problems)。

这或许是我被Google聘请的首要原因,我有2个星期的时间沉迷在Topcode里。在那以后,我可以在闭上眼睛绑起一条手臂的情况下,编好 Dijkstra算法。我可以解决几乎所有的和图相关的问题。这都是在重复解答问题的步骤而已。Eric Schmidt说过“重复并不会使得祈祷没有意义”。

6 使编程简单

至少,使其看起来更加简单。随着时间的过去,我了解到,编程是工程师工作中最直接和最简单的部分。我常常用一个词组“a simple matter of programming”,因为我相信更复杂的部分是在编程之前和之后。例如,设计好你所要编写的代码和确保你编写的代码能够发布。让你的面试官了解你清楚的知道,编程只是到达目的的一种手段。

注意,在别人面前编码可能会让你感到害怕。自己找方法去练习白板编程和结对编程。Google基本上都是白板编程,而Square都是结对编程。我的朋友和同时Dan写了一篇关于这个的文章(  Read this)。

其他建议:

在这里,我不能自称专家。事实上,有些人会说我甚至不善于和别人相处。但是我还是应该说一些非技术的建议,其中有一些还是非常明显的。

1 知道为什么你在那里

如果你在面试一家公司的时候,完全不明白为什么他们在这,他们是谁,他们在做什么,那么请不要去面试。

2 激情

如果你不在意,那么其他人也不会。对某些事情充满激情。可能是编程,或者别的。你会热衷于利用业余时间编写一个编译器吗?你会自己动手制造一个遥控直升机吗?只要你有激情,都没关系,你会使其变得有趣。

3 不要做任何假设

如果不确定,就询问。如果他们问了你一个问题,你不是100%的肯定问题是什么,那么请他们再问一次。我见过许许多多的求职者从不询问任何问题,结果浪费大量时间解答了错的问题。

4 微笑

兴奋,开心和积极。但不要过度。正如我前面提到的,人们会作出快速的判断。确保你留给别人的第一印象是好的。微笑是能够传染的,我常常带着糟糕的心情走进面试的房间,但是求职者一个合适的微笑会让我快速的恢复过来。

正如我之前所说,没有银弹能够让你被雇佣。但是,作为一个工程师,你能尽你最大努力做的是 ABC: Always Be Coding. – 坚持编程。

作者:cometwo 发表于2013-5-26 23:02:36 原文链接
阅读:148 评论:0 查看评论

相关 [编程 找到 工程师] 推荐:

坚持编程:如何找到一份工程师工作

- - CSDN博客移动开发推荐文章
说实话,你是一位优秀的工程师候选人吗. 如果你的计算结果小于90,请仔细阅读这篇文章;如果大于120,那你并不需要这篇文章. 我19岁从芝加哥前往南加州开始编程. 我把所有东西装进了我的轿车里,身上只有400美金和一个offer,4万美金年薪的高级程序员. 那是在12年前,当然又是另外一个故事了. 从那以后,我曾在   Double Helix,  Namco Bandai,  Google, Obvious and  Square等公司工作过.

web前端研发工程师编程能力成长之路 [转]

- han - 博客园-首页原创精华区
如果你是刚进入WEB前端研发领域,想试试这潭水有多深,看这篇文章吧;. 如果你是做了两三年WEB产品前端研发,迷茫找不着提高之路,看这篇文章吧;. 如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧;. WEB前端研发工程师,在国内是一个朝阳职业,自07-08年正式有这个职业以来,也不过三四年的时间.

个人对全栈工程师和JVM编程语言的一些理解

- - 灰狐博客
我个人对全栈工程师和JVM编程语言的一些理解,大家有不同看法的,我们一起交流梳理下. 全栈工程师从我的视角来看,是熟练使用多种编程语言,满足前后端各种业务、技术需求的服务和应用开发. 因为语言都有自己的特点、独特性和应用领域,没有能解决所有问题的最佳语言,所以未来混合编程会很普遍,这对开发者也提出了更高要求,需要了解、掌握和使用多种语言.

GuruDigger – 帮助靠谱的互联网工程师找到志同道合的技术合作伙伴

- wangofjian - 36氪
编者按:本来由GuruDigger创始人Mike Cai撰写,GuruDigger帮助靠谱的互联网工程师找到志同道合的技术合作伙伴,激励他们做出自己喜欢的互联网产品. 1、现有问题 – 互联网工程师很难找到志同道合的技术合作伙伴. 有很多优秀的互联网工程师,大家有至少一个产品想法一直以来想去实现,其实一个人勉勉强强也能做,但是无论心理上还是生理上面,大家都需要一个志同道合的技术合作伙伴.

遭遇工程师

- Chrisoul - 槽边往事
谢谢大家的关心,几个小时前Google Plus恢复了我的帐号,看来暂时我还不用离开. 因为前一篇Blog的缘故,有些网友猜测是因为博文而使得我获释. 虚荣心让我想立即承认这一点,但是对不起,真的不是这样的,我的Blog并没有那么大影响力,尤其是在英文世界里. 而且,因为我上次张贴了一张人类进化谱系的漫画,我在国外驻京记者圈里成功赢得了“种族主义者”这一臭名昭著的称号,大概没有什么人愿意帮助一个黄种人中的“种族主义者”.

工程师效率

- - 后端技术 by Tim Yang
很好奇程序员这个群体这些年效率是变低了还高了,在社交媒体中,各个阶层的兴趣圈都有自己的段子手及内容帐号,段子手发的内容会让你笑cry,内容帐号发的内容可让你享受阅读的快感,这些快感会比写代码见效快. 写完一个模块的代码通常要一整天或者几天时间,代码调通运行没有问题才会体验到愉悦,而社交媒体只需要一些碎片时间就可以达到高潮.

知乎招募工程师

- oxygen - 知乎的博客
Python工程师  有两年以上软件开发经验. 至少一年 Python 开发经验. 对开源技术有强烈的兴趣和爱好,参与或向开发者提交过bug和patch. 热爱探索和钻研,熟悉文本挖掘、自然语言处理相关知识能使用C/C++独立实现复杂的算法结构熟悉开源搜索项目(Lucene,Sphinx等)极强的逻辑分析能力对开源技术有强烈的兴趣和爱好,参与或向开发者提交过bug和patch认为自己是技术geek有极强的责任感.

浅谈技术工程师的进步

- belltoy - caoz的和谐blog
本来发微博的,越说越多,算了,发篇博客把,说点工程师如何取得进步的问题,. 1:描述和记录问题要精确,数字化,“负载很高,连接很多,速度很卡”这种描述都是不对的,负载uptime值多少,连接数具体有多少,平时正常多少,高峰多少,访问延迟有多大,全部要数字化,而且要有问题状况下和平时的对比,养成这样的习惯,技术分析能力才会有进步.

工程师与会计 [幽默笑话]

- Liqun - 经典网文_来福岛爆笑娱乐网
  有三个工程师和三个会计一起去外地开会,上火车时三个会计买了三张车票,而三个工程师却只买了一张票,会计很不解,工程师说:“上了车你们就知道了”.   火车刚一开动三个工程师就挤进了一个厕所,列车员开始检票最后走到了厕所外边,她敲了一下门说:“检票”. 然后门开了一个小缝,从里面递出一张车票.   在外地开完会后在返回的时候会计们觉得工程师们的方法很不错于是也只买了一张车票,而这次工程师一张票也没有买,会计们又很不解,工程师还是说:“上了车你们就明白了”.

[北京]python工程师 - 创新工场

- Ken - python.cn.jobs
创新工场旗下旅游SNS网站团队招聘python工程师. 职位要求:1、两年以上软件开发经验.                     2、一年以上python开发经验.                     3、有强烈的责任感,对开源技术有强烈的兴趣和爱好,有创业兴趣.                     4、算法强大,有大规模数据处理经验优先.