中文:陈庆霆
链接:http://blog.csdn.net/qingtingchen1987/article/details/7796643
面试IT工程师的两个方面:
-
技术技能:包括理论和实践技能以及经验等。
-
非技术技能:性格,沟通技巧,是否能够融入我们的文化环境。
本章将主要从技能部分讲述。
1、一个IT工程师应该具有的技能
如图1所示:
作为一名IT工程师,这三方面都是很重要的:
-
编码:你必须能够在限定时间内编写出高质量的代码,这对IT工程师的整体技能是很具要求的。
-
经验:具有相关经验表明了你对该行业的热情,工作年限也侧面代表了你的项目经验程度。并能够在一开始就进入工作状态,这是一个优势。
-
理论:理论知识是IT工程师的基础,好的理论知识能够让你快速解决新出现的问题。
而准备工作面试的过程不仅是在为自己谋划一个新的工作,也是一个提升自己各种能力的绝佳机会。
1、提高你的理论知识
(1)学习C语言
C语言是编程的基础。因此,学习C语言能为我们了解高层概念打下坚实的基础,而且学习C语言并不会花太长时间,一般来说只需要几个星期的时间就能够掌握。它没有太多的抽象封装,这就使得C语言相对简单,最经典的入门手册是《C程序设计语言》这本书。而在这个过程中,你需要真正理解的是C语言中的指针和内存管理,它会是很多技术方面的一个基础,因为它将帮助我们从处理器层面(底层硬件)来理解语言,而这正是其他大多数的高级语言所不具备的。同时了解这些概念,也将有助于你了解更高层次的语言工作。
(2)了解数据结构和算法
虽然在网站/应用程序开发中编写复杂的算法和数据结构比较少见,但是数据结构和算法在我们编写复杂系统的时候将会影响我们的思维。即使你不需要编写自己的数据结构,你也可能会在编程中使用到它。
一旦你很好的掌握了数据结构和算法,你会发现这些概念将只是将你做的每件事都总结成问题而已。
我推荐这本书——《算法导论》。虽然这本书很长,如果你没有时间把他读完,那也要学习其中的排序,哈希表,二叉树,字符串匹配部分。当然,《数据结构》这本书也是很适合你简单学习该模块的,里面同样包括哈希表,二叉树等经典部分。
2、比较编程语言
一开始,你会经常接触多中编程语言。你可能还需要快速学习新的语言和概念。
为了加快学习,学习不同语言有助于我们了解他们的概念以及他们的相似及不同之处。
最好的办法是在下面每种风格的语言中学一门语言:
-
底层:C语言。
-
面向对象:JAVA,C++等。
-
动态语言,高层次的语言:python, ruby 等
-
函数式语言: Lisp, Erlang, Haskell等
-
现在比较热门的语言:HTML5/PHP等
具体相应语言大家尽可能的多了解一下,这不是坏处,还可能是你面试中的加分项呢!
3、至少精通某一种语言和一种框架
为什么需要如此呢?
因为,这能够说明:
1.你既然能在一个领域成为专家,就表明你同样能在其他领域做得一样好。
2.你理解这些语言/框架的细节可以让你根据不同技术的优缺点来做出决定。
3.你有激情去深究一个项目并且深入语言的最底层。
想要成为专家需要花一定的时间和经历。这里有一些建议:
Tip1:尝试做不同的项目,这样能够帮助你理解编程语言。
Tip2: 阅读其他人的技术博客。?Hacker News是一个很好的技术博客。
Tip3: 为开源社区做出自己的贡献,例如在GitHub上能够查到你的代码。
4、提高实际编码能力
面试时面试官主要通过3种方法来测试工程师的编码能力:
你贡献到开源社区的代码(例如,在GitHub上)
现场编写一段代码
连续2小时编写代码的挑战
一个工程师的编码能力的质量和速度是重要的,而这只能来自于实践经验。
此外,选择合适的语言和框架对于一个项目的质量是很有帮助的。例如用Python和Ruby等脚本语言可以比使用像Java、C++这类静态语言的许多情况下更快。因为我们知道一个求职者可能在动态脚本语言方面没有太多经验,所以我们面试的时候并没有将其作为重点。
做一些有挑战的编程测试可以磨练你的技能。网上可以找到了大量的资源,这也可以测试你的编程速度,从而让你可以进一步提升你编写代码的速度。Google Code Jam上面有一些不错的题目。
5、提高您的相关技术经验
有一些相关工作经验是很重要的:
-
这表明你对编程有一定的激情
-
你的开发经验可以引导公司里的其他人
-
你将会在工作中一鸣惊人。
-
你有能力可以探究更多的现代技术,并有一个更加全面的视角
-
你可以从你以前的公司里或者其他项目中学到这些经验。
(翻译并不一定完全准确,但是满足基本的阅读应该没问题)