前 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进行处理,非常感谢!