在过去5年中,我面试了数百名IT工程师,我认为很值得把我的面试IT工程师的经验同大家分享。这能够:
●帮助人们为他们的下一个面试准备
●帮助IT工程师找到合适的工作。
●帮助IT工程师创造更好的环境。
我们通过两个方面面试IT工程师:
●技术技能:包括理论和实践技能以及经验等。
●非技术技能:性格,沟通技巧,是否能够融入我们的文化环境。
第1部分中,我将主要从技能部分讲述。
1、一个IT工程师应该具有的技能
我认为实用技能包含3个方面,如图1所示:

图1
这些都是很重要的:
●编码:你必须能够在限定时间内编写出高质量的代码。
●经验:具有相关经验表明你对该行业的热情,并能够在一开始就进入工作状态。
●理论:理论知识是IT工程师的基础,好的理论知识能够让你快速解决新出现的问题。
而准备工作面试的过程是一个提升自己各种能力的绝佳机会。
1、提高你的理论知识
(1)学习C语言
C语言是编程的基础。因此,学习C语言能为我们了解高层概念打下坚实的基础学习C语言的基础知识并不会花太长时间,只需要几个星期的时间一般就能够掌握。C没有太多的抽象封装,这就使得C语言相对简单,和其他人一样我学习C语言是看《C Programming Language》这本书(我们可以看谭浩强的书)。
一旦你能够真正理解C语言中的指针和内存管理,C就会变成一门有趣的语言,因为它将帮助我们从处理器层面(底层硬件)来理解语言,而这正是其他大多数的高级语言所不具备的。同时了解这些概念,也将有助于你了解更高层次的语言工作。
(2)了解数据结构和算法
虽然在网站/应用程序开发中编写复杂的算法和数据结构比较少见,但是数据结构和算法在我们编写复杂系统的时候将会影响我们的思维。即使你不需要编写自己的数据结构,你也可能会在编程中使用到他,因此,了解基本的选择是至关重要的。
我推荐这本书,《算法导论》。由于这本书是很长,如果你没有时间把他读完,那也要学习其中的排序,哈希表,二叉树,字符串匹配部分。
一旦你很好的掌握了数据结构和算法,你会发现这些概念将只是将你做的每件事都总结成问题而已。
2、比较编程语言
一开始,你会经常接触多中编程语言。你可能还需要快速学习新的语言和概念。
为了加快学习,学习不同语言有助于我们了解他们的概念以及他们的相似及不同之处。
最好的办法是在下面每种风格的语言中学一门语言:
●底层:C语言。
●面向对象:JAVA,C++等。
●动态语言,高层次的语言:python, ruby 等
●功能语言: Lisp, Erlang, Haskell等
3、至少精通某一种语言和一种框架
这能够说明:
●你既然能在一个领域成为专家,就表明你同样能在其他领域做得一样好。
●你理解这些语言/框架的细节可以让你根据不同技术的优缺点来做出决定。
●你有激情去深究一个项目并且深入语言的最底层。
想要成为专家需要花一定的时间和经历。这里有一些建议:
●尝试做不同的项目,这样能够帮助你理解编程语言。
●阅读其他人的技术博客。Hacker News是一个很好的技术博客。
●为开源社区做出自己的贡献,例如在GitHub上能够查到你的代码。
4、提高实际编码能力
在这里我们在面试时主要通过3中方法来测试工程师的编码能力:
●你贡献到开源社区的代码(例如,在GitHub上)
●现场编写一段代码
●连续2小时编写代码的挑战
一个工程师的编码能力的质量和速度是重要的,而这只能来自于实践经验。
另外,使用合适的语言和框架对于一个项目也是很有帮助的。例如用Python和Ruby等脚本语言可以比使用像Java、C++这类静态语言的许多情况下更快。因为我们知道一个求职者可能在动态脚本语言方面没有太多经验,所以我们面试的时候并没有将其作为重点。
做一些有挑战的编程测试可以磨练你的技能。网上可以找到了大量的资源,这也可以测试你的编程速度,从而让你可以进一步提升你编写代码的速度。Google Code Jam上面有一些不错的题目。
5、提高您的相关技术经验
有一些相关工作经验是很重要的:
●这表明你对编程有一定的激情
●你的开发经验可以引导公司里的其他人
●你将会在工作中一鸣惊人。
●你有能力可以探究更多的现代技术,并有一个更加全面的视角
你可以从你以前的公司里或者其他项目中学到这些经验。
6、结论
当然,在技术方面仅仅是一个硬币的一面。第2部分中,我将探讨非技术方面。
(翻译并不一定完全准确,但是满足基本的阅读应该没问题)
原文地址:http://stdout.heyzap.com/2012/07/25/how-to-ace-a-startup-engineering-interview-part-1/
分享到:
相关推荐
编程是一项需要持续学习和实践的技能,无论是新手还是...总的来说,成为一个编程高手并非一蹴而就,它需要时间、毅力和不断的学习。新手应遵循这些原则,培养良好的编程习惯,逐步积累经验,才能在编程道路上稳步前行。
### 编程修养:成为编程高手的必备良品 在探讨如何成为一名优秀的程序员时,很多人可能会立即联想到掌握大量的技术细节、精通底层...因此,培养和提升编程修养,是每一个程序员追求卓越、成长为编程高手的必经之路。
成为一个PC编程高手,不仅要求有坚实的技术基础,更要有创新思维、解决问题的能力以及坚持不懈的精神。本文将深入探讨工控行业中成为PC编程高手的八个法则,希望能为致力于提升自身编程技能的工程师们提供一些启发和...
### 成为编程高手的秘诀 在当今社会,随着信息技术的快速发展,编程已成为一项非常重要的技能。无论是对于学生还是职场人士来说,掌握编程技术都显得尤为重要。本文将从多个角度出发,为大家提供一些实用的建议与...
本书全面覆盖了VC编程的核心概念、关键技术和实践应用,旨在帮助读者提升编程技能,成为一名真正的VC编程高手。 在VC编程中,首要掌握的是MFC(Microsoft Foundation Classes)库。MFC是微软提供的一个C++类库,它...
总的来说,“编程高手箴言-源码”是一个宝贵的资源,通过深入研究和学习,我们可以汲取高手的经验,提高自己的编程技能,从而成为更好的开发者。无论是初学者还是经验丰富的程序员,都应该珍视这样的学习机会。
### 成为编程高手的八大奥秘 #### 一、扎实的基础 编程高手之所以能够在众多程序员中脱颖而出,很大程度上归功于他们坚实的基础知识。数据结构、离散数学、编译原理等基础知识是计算机科学的核心,也是高效编程的...
这本书的核心在于提供编程的智慧与经验,帮助读者提升编程技能,成为一名真正的编程高手。以下是书中涵盖的一些关键知识点: 1. **程序设计思想**:编程不仅仅是写代码,更重要的是理解问题并找到解决问题的最佳...
### 如何成为编程高手 在IT领域,特别是编程方向,成为一名真正的高手是许多人的追求目标。本文将基于提供的部分信息,深入探讨如何成为一个优秀的程序员,包括掌握基础技能、熟悉平台特性、理解系统架构等多个方面...
总的来说,这份"编程高手--必看读物"的压缩包很可能是一个综合性的学习资源,旨在全面提升编程者的技能,不仅限于技术层面,还包括对整个软件开发过程的理解和掌握。通过深入学习和应用这些知识,你将逐步迈向编程...
编程高手们经常强调,要成为一个优秀的程序员,必须时刻保持开放的心态,不断更新自己的知识库。 2. "编程高手箴言-019.jpg":这可能关乎代码的可读性和可维护性。编写清晰、简洁且结构良好的代码是每个程序员的...
《编程高手箴言》是一部汇集了众多编程经验与智慧结晶的书籍,以CHM(Microsoft Compiled HTML Help)格式封装在名为"编程高手...通过深入学习和实践书中的箴言,你将不断提升自己的编程能力,成为一名真正的编程高手。
10. **学习与成长**:最后,作为一个编程高手,梁肇新可能会分享自己的学习方法和成长经验,如何持续跟进技术发展,提升自我学习效率。 《编程高手箴言》的PDF文件,无疑为我们提供了一个全面了解和学习编程之道的...
综上所述,“世界第一高手编程”虽然只是一个形象的说法,但其背后蕴含了丰富的编程知识和技术要点。要想成为顶尖的程序员,不仅需要扎实的基础知识、精通高级技术,还需要具备强大的软技能,这样才能在不断变化的...
《编程高手箴言》是梁兆新先生的作品,这本书旨在帮助读者提升编程思维,通过深入浅出的方式分享了他的编程经验和见解。梁兆新先生作为超级解霸的作者,他在IT界有着丰富的实战经验,他的书因此备受推崇,尤其适合...
《编程高手箴言》是一本全面总结编程技术和经验的书籍,作者梁新通过对多年编程实践的梳理,分享了在编程领域中的各种技术和理念,旨在帮助程序员构建扎实的知识基础,并向编程高手的境界迈进。本书内容丰富,从基础...
2. **MFC(Microsoft Foundation Classes)库**:MFC是Visual C++的一个重要组成部分,它为Windows应用程序开发提供了一套面向对象的API。通过MFC,开发者可以轻松地访问Windows API,实现窗口、对话框、控件等元素...
### 编程高手之路知识点概览 #### 一、VB编程基础 - **学习VB的基础:** 这一部分...以上内容构成了《编程高手之路》的核心知识点,旨在帮助读者从基础知识入手,逐步深入学习编程技能,最终成为一名合格的编程高手。
在编程的世界里,每个程序员都渴望成为高手,不断探索、学习和实践是提升技能的关键。"编程高手箴言"这个资源...对于想要成为编程高手的人来说,这是一个不可多得的宝藏,通过深入研读和实践,可以加速自己的成长步伐。