热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在技术面试中脱颖而出(上)

原文地址:http:blog.jobbole.com24937在过去5年中,我面试了数百名IT工程师,我认为很值得把我的面试IT工程师的经验同大家分享。这能够:●帮

       原文地址:http://blog.jobbole.com/24937/


在过去5年中,我面试了数百名IT工程师,我认为很值得把我的面试IT工程师的经验同大家分享。这能够:

●帮助人们为他们的下一个面试准备

●帮助IT工程师找到合适的工作。

●帮助IT工程师创造更好的环境。

我们通过两个方面面试IT工程师:

●技术技能:包括理论和实践技能以及经验等。

●非技术技能:性格,沟通技巧,是否能够融入我们的文化环境。

 

第1部分中,我将主要从技能部分讲述。

1、一个IT工程师应该具有的技能

我认为实用技能包含3个方面,如图1所示:

如何在创业公司的技术面试中脱颖而出(第1部分)

图1

这些都是很重要的:

●编码:你必须能够在限定时间内编写出高质量的代码。

●经验:具有相关经验表明你对该行业的热情,并能够在一开始就进入工作状态。

●理论:理论知识是IT工程师的基础,好的理论知识能够让你快速解决新出现的问题。

 

而准备工作面试的过程是一个提升自己各种能力的绝佳机会。

1、提高你的理论知识

(1)学习C语言

C语言是编程的基础。因此,学习C语言能为我们了解高层概念打下坚实的基础学习C语言的基础知识并不会花太长时间,只需要几个星期的时间一般就能够掌握。C没有太多的抽象封装,这就使得C语言相对简单,和其他人一样我学习C语言是看《C程序设计语言》这本书。

一旦你能够真正理解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/



推荐阅读
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 单片机编程为何偏爱C语言
    尽管现代有许多高级编程语言如Java、Python等,但单片机编程依然广泛使用C语言。本文将探讨C语言在单片机编程中的优势及其原因。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • 事件是程序各部分之间的一种通信方式,也是异步编程的一种实现形式。本文将详细介绍EventTarget接口及其相关方法,以及如何使用监听函数处理事件。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • C语言中如何使用break语句强制跳出for循环及函数 ... [详细]
  • 经过两天的努力,终于成功解决了半平面交模板题POJ3335的问题。原来是在`OnLeft`函数中漏掉了关键的等于号。通过这次训练,不仅加深了对半平面交算法的理解,还提升了调试和代码实现的能力。未来将继续深入研究计算几何的其他核心问题,进一步巩固和拓展相关知识。 ... [详细]
author-avatar
猪宝宝的事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有