面试经验分享平台

将近几年的名企精品面试汇总、筛选、整理,再分享给大家
经验详情
成为软件工程师之前 你必须了解这些

编者按:所谓知己知彼,方能百战不殆。无论是面临就业的大学生,还是考虑再择业的职场人,都离不开一个清晰的职场目标并为之不懈的努力。

 

软件工程师篇:

 

软件工程师的工作在最近几年变得尤为紧俏,那么,如果想成为一名软件工程师,需要具备什么素质?同时,如何进行自我学习?

  【一】软件工程师解读

  【二】软件工程师的三个进阶

  【三】Google前工程经理王忻:如何准备软件工程师的面试

  【四】想当一名软件工程师要学什么呢?

  【五】软件工程师就业前景分析

 

 【一】软件工程师解读

  何谓软件工程师,软件工程师是通过学习和训练,掌握软件技术的理论知识和操作技能的软件技术人员。软件工程师能够从事计算机软件、网站的设计、开发、维护和测试工作。

  具体来说,我们可以从企业技术部的岗位体系中作一些了解。企业(或政府)信息化过程中需要以下四种人:

 

  1、企业信息化管理:负责信息化建设中的目标与方案决策,信息化建设、升级、更新;

  2、工程技术人员:负责软件系统的分析、设计、开发、数据库、使用、维护和升级;

  3、运行维护岗位:负责软件开发代码的编写以及基本的开发和测试;

  4、操作应用人员:主要应用软件进行日常的管理工作。

  一般来说,IT企业的IT技术职位根据职能可以分为管理岗位:企业信息主管CIO、总监、IT经理、项目经理等;工程技术岗位:规划设计师、网络工程师、 系统工程师、软件工程师和数据库工程师等;运行维护岗位:数据库管理员、系统管理员、程序员等;操作岗位:办公文员、CAD设计员、网页制作员、多媒体制 作员等。

  根据企业规模大小,规模较小的企业,一个岗位可能涵盖几个岗位的内容,系统管理员既要负责系统管理,又要承担网络管理;大企业则会分的比较专业,有软件设计师、系统集成工程师、网络工程师、程序员和系统测试工程师等。

  【二】软件工程师的三个进阶

 

  软件工程师职业规划过程主要有以下几步:

  两年以上的小型企业→四年左右的中型企业→大型企业或跨国集团公司

  软件工程师职业规划过程主要有以下几步:

  两年以上的小型企业→四年左右的中型企业→大型企业或跨国集团公司

  第一步,小企业的软件开发设计编程人员;

  第二步,进入大中型企业,同样的软件开发设计编程工作,工资就可能完全不同了,一般都在3000元以上。做了部门经理时,还可以高达5000元或以上;

  第三步,学习更全面的知识成为普通的软件工程师工资就高达3500元以上;

  第四步,学习更全面的知识成为专业的软件工程师,如软件设计工程师,系统分析工程师的工资就可以达8000元以上,做大型企业或专业软件公司IT经理的工资就更高了,基本在万元以上。

  【三】Google前工程经理王忻:如何准备软件工程师的面试

  原文作者王忻,Google前工程经理,2003年月加入Google,是Google Lively背后的主导力量,是Google Desktop的重要贡献人,并在Google招聘委员会任职。2008年11月从Google离职,现是Trackville.com的创始人。 2010年10月12日王忻在博客中透露,她已是Minted.com的CTO。(注:此文写于2006年6月。)

 

  想跟大家来谈谈如何准备软件工程师的面试?假设,现在您的杀手简历 (killer resume)已经吸引了某大公司的注意并约你面试。那么接下来该如何准备呢?

  我在 Google(以前是微软)工作期间面试了不下 300人,其中某些应聘者确实表现非凡,但有些却显得准备不足。当然许多面试准备不足的人最后依然获得了录用通知,因为他们本身确实才华出众。但如果应聘 者能提前准备妥当,那么面试过程将更为保险和轻松。以下所列出的就是我根据多年经验总结得出的建议:

  1.使用相同的工具(如铅笔和纸张)和时间限制(例如半个小时)模拟面试训练

  Google 和微软都会让应聘者在白板上手工解答编程问题,但通常大部分的应聘者都是习惯于在电脑上利用编程工具系统编写程序。因此面试的时候,某些应聘者离开了熟悉 的电脑光标,站在白板前感觉手足无措不知该如何起行。又或者他们不习惯在编程之时旁边有人观看,这会让他们感到紧张而无法正常思考。

  在现实生活中,如果你想要横渡英吉利海峡,自然不能总是在室内游泳池练习。你必须投身大海在波涛之中训练,在准备面试的时候也是如此。

  在面试开始之前你最好向招聘单位询问面试形式和面试问题。如果招聘单位让你在某个房间考试且仅提供没有汇编程序的编辑器,那么就应该在家中按照这种 情 景进行练习。如果招聘公司单位让你在白板上回答问题并会安排考官在旁监督,那么你就要找一位软件工程师来扮演考官配合你练习。即使找来的考官经验不如你也 没有关系,他们依然能帮助你消除在他人面前出错所带来的紧张感,这样可以让你适应有人在旁边盯着看的面试氛围。

  如果你恰巧认识我并希望由我来帮你联系,那我的条件就是必须请我吃饭:如果你已经工作了就吃日本寿司大餐;如果你还是学生,那么吃比萨饼也可以。

  2.在面试过程中不要对细小错误耿耿于怀

  我曾不止一次的在面试过程中碰到这种情况:当应聘者知道编程问题后,他马上就想到了最佳的方案、确定了边界条件,然后开始编写程序。但在编写过程 中, 应聘者犯了诸如首先检查是不是操作顺序错误或忘记设定某变量等无关大局的小错误,当我指出其错误之后,应聘者立刻变得十分紧张,这种焦虑情绪影响了他在后 面环节的正常发挥。

  其实这种恐惧心理完全不必要。一名优秀的程序员在编程过程中出现错误也是很正常的,就像是小提琴手在演奏高难度的巴赫交响乐时也会偶尔失误。音乐会的听众可能会觉察到这些错误,但是听众绝对不会因为这种细小失误就把出色的小提琴手看作是门外汉。

  即便应聘者彻底搞砸了某个编程问题,面试考官也可能会提出不同的问题并会容忍应聘者在某个问题上的失误。再退一步说,就算某次面试彻底失败,你也有机会在其它面试上补救。

  我的一位同事(一个项目的技术负责人)最近面试了一个人,在开始面试时他觉得面试者的交流方式存在问题,因此开始表现的相当不友好。但经过了整个面 试 过程后,面试者证明了自身的能力,而我的那位同事也成了那位面试者最坚定的支持者。在过去的一年中,我从未见过这位同事如此强烈的支持哪位面试者。

  所以,因此就算面试进展不顺,也务必坚持到底不要放弃。

  3.在面试过程中不要失礼

  这似乎是不用说的问题,但在面试过程中我确实碰到过影响很不好的失礼行为。曾有一位前来应聘软件工程师的人看到我就说:“哇,我真不敢相信你这么年 轻!你看上去好小!我觉得你才18 岁!”我看了他的简历才搞清楚原来是来应聘的,在开始的时候我却忍不住想:“这个人是来面试我的吧?!”

  面试者的这种言行实在要不得。

  面试者也要注意不要说出诸如此类的话:“哇,你真的就是考官吗?你看上去好老!”“哇,你真的是来面试我的,你看上去好胖!”(相信应该不会有人说这样的话)。

  在我的另外一次面试中,应聘者的手机在面试开始 15 分钟之后就响了,她没有理会,手机连续响了 20 秒,这样不免会对面试造成影响。5 分钟之后,她的手机又响了,她依然没有理会;5分钟之后,手机第三次响起。最后她终于抓过手提包在里面翻出了手机。我想:“是时候关掉手机了,她在进来之 前就应该把手机关掉。”但是她在手提包中拿出手机之后却旁若无人的打起电话来,而且就在面试过程中间!

  这种情况唯一可接受的理由就是他有什么非常紧急的事,但是即便情况如此,那么他也应该在面试开始之时就讲清楚,让面试官有所准备。

  4.不要在面试中喧宾夺主

  我曾经面试过几个应聘者,他们好像铁了心肠一定要告诉我他们最近的“超级项目”。当我开始发话他们就立刻打断:“我想让你了解我们近期处理的超级项目,10年之前当这个项目开始之时还默默无闻……”,然后接下来的5分钟时间都在那里滔滔不绝唾沫横飞。

  有时应聘者好像打定主意要给每个考官详细描述其引以为豪的项目,然后一整天都在那里翻来覆去的说这个项目。

  记住:面试官在面试过程中有具体的问题需要询问。但是如果应聘者喧宾夺主,那么考官就可能无法获得充分的信息来做出判断,同时这种行为也会让考官觉得应聘者很难共事。

  如果你确实想谈论自己的项目,那么就应询问面试官:“我觉得最近的某某项目能充分体现我的能力,我能不能用 10分钟的时间来描述一下具体情况?”这样就会给面试官空间来调整面试过程,由此也避免毫无征兆就让面试离题万里。

  5.在回答需要具体答案的问题之时,记得首先要有总括性的发言

  有时我会问一个答案可以很简练的问题,例如:“在你的那个成功项目中总共有多少人参与?”但应聘者往往会就此打开话匣:“恩,张三参与了这个项目, 他 负责 UI部分,当然我也会给他一些指导。李四也在项目中,她在宾州远程工作,负责后端服务器。两年之后我们又有新人王五加入……”

  在应聘者滔滔不绝的讲了三分钟之后,我还是不知道这个项目到底有多少人参与。

  因此首先要简练的回答问题,然后再展开描述:“在我接手项目时有三个人,但当我离开项目时人数已经增加到12人。”

  当然如果能简练的回答问题,然后征询意见之后再展开论述那就更好了:“在我接手项目时有三个人,但当我离开项目时人数已经增加到 12 人。我可以讲一下各人在项目中的具体分工吗?”

  6.(不是特别重要)在面试中要衣着得体,舒适的商务便装是最佳的选择

  人们有时候会为衣着犯愁。但是最重要的是要让自己感觉舒适。如果需要具体的建议,那么我建议穿衬衫甚至T恤衫。对于某些公司(例如 Google),西装革履显然是太隆重了。

  这条建议不必太看中,因为面试官不会管应聘者穿什么。最好应该询问人事招聘部门穿什么合适,因为不同国家有不同习俗,就算美国东海岸和西海岸的公司 着 装文化也会有差别。像 Google 这样的公司在着装方面更加随意,因此如果你穿着“三件套”的经典西服去 Google 面试,考官可能会有异样的感觉。因此如果你真的具备软件工程的本领,穿什么其实并不重要。某个应聘者曾经穿着皱巴巴脏兮兮的T恤就跑来面试,他的T恤衫上 还有着许多破洞。但最后他还是拿到了录取通知(当然我绝不建议如此穿着)。

  【四】想当一名软件工程师要学什么呢?

  首先让我们来看一下软件工程师考试(高级)要求:

  (1)理解软件工程管理的概念和任务;

  (2)理解软件生存期过程;

  (3)理解软件工程标准;

  (4)掌握需求分析、测试、维护基本技术;

  (5)掌握软件度量、软件配置管理方法;

  (6)理解软件复用概念;

  (7)理解软件质量保证的手段;

  (8)理解软件项目对人员的需求;

  (9)理解软件知识产权的基本知识。

  通过本级水平考试的合格人员具有从事软件系统分析与工程系统分析员、工程管理员的实际工作能力和业务水平。

  不过目前最好的软件工程师证书就是软考得中级工程师(软件设计师)很权威,那么软件工程师要学什么课程呢?

  1:数据结构 数据结构可以说是编程的灵魂,它不是一门语言所以没有关键字。它只是给程序开发人员一个开发思路而已,讲的主要是已经成熟的编程思想和算法,而且几乎适用 于所有开发语言。就好像学习英语一样,学习编程语言让你会说英语,记住很多英语单词,熟悉英语的很多语法。而学习数据结构能让你编出很漂亮的英语文章。

  2:操作系统(第三版),主要从资源管理的角度来分析系统功能的实现。假设你要设计一个新的操作系统,如何实现它?操作系统理论就是向读者逐步介绍和解释。重点是五大管理职能的实现及其原理。

  3:计算机网络(第三版),要学习ISO/OSIRM七层的划分以及各种协议的功能。传输理论、互联设备、Internet知识,和参考模型理论

  4:数学,数学是基础,你暂时不太能体会它的作用,但是以后会非常有用。所有的计算原理都要数学作为指导。

  5:计算机专业英语,不是软件考试特有的,是专业知识+英语水平,考前不需专业准备,平时有意识地上网读点英文专业资料

  6:软件工程(第二版) 要熟悉数据流图和流程图

  7:数据库理论.这要求熟悉SQL的语言.几乎所有的编程语言都要和数据库打交道的。

  8:C语言或者VB语言应该掌握,不过目前JAVA和.net是当前比较火的两个编程语言。

  想当一个软件工程师,最后要学习统一建模语言UML,它代表了软件工程的发展趋势,目前是可视化建模的事实上的工业标准。

  【五】软件工程师就业前景分析

  软件行业成为目前最热的行业之一,3G工程师、嵌入式工程师、Java软件工程师、.net软件工程师的开发前景怎么样,下面就从这四个方面分析软件开发工程师的就业前景。

3G工程师就业前景分析:

  中国被世界公认为全球最大的3G移动市场,但是,3G相关的人才却严重失调。专业从事3G应用软件开发从业人员不足千人,据工信部预测,仅2010年,中国3G人才市场缺口就在100万以上,其中3G软件工程师缺口就在50万左右。

  3G 人才短缺现状,使得3G行业已经成为新的高薪行业,基于3G软件开发人员变得格外抢手。人力资源专家表示,3G软件开发是未来几年最热门和最受欢迎的职业 之一。根据前程无忧网发布的薪资报告,具有10年工作经验的高级嵌入式软件工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也在 5000元左右,中高级的嵌入式软件工程师月薪平均已超过万元,而且随着3G应用的进一步深入发展,3G软件研发人才的薪水还会进一步水涨船高!

嵌入式工程师就业前景分析:

  嵌入式领域较新,目前发展非常快,很多软硬件技术出现的时间都不太长(如ARM处理器、嵌入式操作系统、LINUX操作系统),大多数人没有条件接触或进入嵌入式行业,更谈不上能有机会接受专业人士的指导。因此,踏进这个行业的难度比较大,嵌入式人才稀缺。

  权威部门统计,我国嵌入式人才缺口每年50万人左右。根据相关的的调查报告称,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,具有10年工作经验的 高级嵌入式工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也达到了3000—5000元,中高级的嵌入式工程师月薪平均超过 10000元。

Java软件工程师就业前景分析:

  目 前,虽然Java人才的薪水很高,但是对该类人才需求旺盛的IT企业却很难招聘到合格的Java软件工程师。其中,最根本的原因就是许多计算机专业的毕业 生在读期间没有掌握实用的技能与经验,距离企业的实际用人要求有较大的差距。因此,计算机专业的大学生欲成为Java软件工程师,最便捷的一条路就是参加 以实战项目为主要教学方法的Java职业技能培训,从而有效地缩短同企业具体用人要求之间的差距。

.net软件工程师就业前景分析:

  据有关权威部门统计,未来几年内我国软件行业的从业机会十分庞大,每年对软件人才的需求将达到 80万 -100 万人,而现有行业从业人员只有 50 万人左右,专业开发人员不到25万,目前大部分院校出来的应届计算机系学生,真正能当年进入软件公司工作的只有10%~20%左右,缺口很大。

  .Net 作为新一代的程序开发语言其中的一员,同样也具有很多的优势,并且弥补了前一代语言的缺点,因而更加受到人们的喜爱。.Net具有很多明显的优点,可以提 高开发人员的效率,减少bug,加快应用开发并简化使用。IT人员对.Net保持了应有的警惕,因为它毕竟还是个新事物,需要有一个比较艰难的学习曲线。 但是对于大多数组织而言,其优点远远多于缺点。有了.Net,可以在未来的开发项目中赢得更高的生产力。