如何成为软件工程师?Facebook 面试官给你列了一份技能清单!

前 Facebook 技术面试官

硬件:你的核心竞争力

要参加软件工程师职位的面试,你必须得掌握以下这些东西:

01. 精通(注意是“精通”)一门编程语言

你至少需要精通一门编程语言。当面试官丢给你一段复杂的代码,你需要能快速地理解它并在大脑中 “运行” 一遍。同时你也要能够用这门语言编写代码来处理一些复杂的情形。

02. 会求解算法问题

算法本身是一个博大精深的领域。你需要掌握一些基本的算法,如果了解一些问题求解的基本思路就更有优势了。

在软件工程师面试中,上面两项往往组成了 50% – 75% 的面试内容。除此之外,你还要掌握:

03. 系统设计

对于有一定工作经验的程序员来说,这方面的知识极为重要。你需要能够:

  • 掌握一个系统的需求。

  • 设计拓展性强(包括纵向拓展和横向拓展)、容错性高的系统。

  • 04. 其他基础知识

    下述所列基础知识并非必需,但掌握了一定能增强你的求职竞争力。

  • 操作系统:线程和进程;线程同步(信 量和互斥锁);内存管理(分页和交换技术)。

  • 数据库:查询关系型数据库;索引;主键和外键;范式;内部存储。

  • 络: 络层次;TCP 和 UDP;TCP 包结构;路由算法;子 。

  • Web:Cookie;Session 管理;缓存;HTTP / HTTPS。

  • 软件:临场发挥

    在你准备充分以后,下面这些建议或许能帮助你在实际的面试中做得更好。

    01. 避免误解

    很多候选人在编程面试中发挥不佳,因为他们从一开始就理解错了问题的意图。一定要花上 2-5 分钟向面试官询问一些边缘情况,以确保你对问题的理解与面试官一致。同时,对边缘情况的把握也能保证你的解法是无懈可击的。

    02. 思考代码结构

    这不只是对面试有用。花一点时间思考如何更好地组织代码,能够节省你很多编程和调试的时间。

    03. 注重沟通

    你要能够将自己的想法清楚地传达给面试官。整个面试过程(尤其是系统设计方向)主要就是在不同的想法之间跳跃,并将你的思考过程解释给面试官听。

    04. 借助面试了解你与这家公司契合度

    在事先好好研究一下你所要申请的公司很重要。绝大多数公司都想招到对他们在做的事情抱有激情的候选人。不要问一些你在 Google 上就能找到答案的问题,而是思考你能为这家公司的产品或是服务带来怎样激动人心的改变。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2017年8月1日
    下一篇 2017年8月1日

    相关推荐