0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样找到一份工程师工作

工程师人生 来源:网络整理 作者:工程师吴畏 2018-11-27 15:33 次阅读

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

x = 现场面试的次数

y = 拿到的 offer 数量

value = 100 * log(x) * y / x

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

我是谁?

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

从那以后,我曾在 Double Helix、 Namco Bandai、 Google、Obvious 和 Square等公司工作过。也收到过来自Naughty Dog、 Activision、 Riot Games、 Blizzard、 Pinterest、 Goldman 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. – 坚持编程。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1559

    浏览量

    68268
收藏 人收藏

    评论

    相关推荐

    正是拼的年纪|65岁电子工程师上班VLOG #65岁退休 #电子工程师 #搞笑 #上班vlog

    电子工程师
    安泰小课堂
    发布于 :2024年07月25日 11:31:02

    请求一份CS1237 的应用应用原理图和软件代码

    芯海老师好,我是小家电公司的工程师,准备做个电子称在产品中。我初次应用CS1237,有问题赐教。第1,请提供一份CS1237 的应用原理图和软件代码。第2,我们的主控单片是8位的,请问与CS1237连接通信有没有问题。原理图和
    发表于 06-23 09:39

    嵌入式软件工程师和硬件工程师的区别?

    和通信协议,以及熟练掌握种或多种编程语言和开发工具。 主要负责的任务和领域 嵌入式软件工程师工作涉及到各种任务,主要包括: * 系统设计:包括确定系统功能、分配资源、优化性能等。 * 软件编程:包括编程
    发表于 05-16 11:00

    大厂电子工程师常见面试题#电子工程师 #硬件工程师 #电路知识 #面试题

    电子工程师电路
    安泰小课堂
    发布于 :2024年04月30日 17:33:15

    个电源工程师的成长路径

    即将走马上任电源工程师这个岗位,请问各位大佬,这个岗位的职业路径般是怎样的?
    发表于 04-08 14:19

    如何搞崩个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    #人工智能 #FPGA 怎么成为个合格的FPGA工程师

    fpga工程师
    明德扬助教小易老师
    发布于 :2023年12月18日 21:19:01

    电子工程师天上班就暴揍师傅。。。#科普 #示波器 #电子工程师 #打工日记

    电子工程师示波器
    安泰小课堂
    发布于 :2023年12月18日 17:36:12

    FPGA工程师需要具备哪些技能?

    ,需要具备系列的技能,才能胜任日益复杂的设计工作。因此,本文将从设计思路、硬件语言、EDA工具、数字信号处理、通信协议、测试验证等多个方面,探讨FPGA工程师需要具备哪些技能。
    发表于 11-09 11:03