1.开发类职位
开发类职位主要包括程序员、高级程序员、高级软件工程师等。
1)程序员
程序员职位分布较广,一般由如下几部分组成: (1)C/C++程序员:根据公司类型差异,不同职位的考点大相径庭。一般来说,偏“硬”的公司会对C++的位制转换、指针用法、数据结构考得比较多;偏“软”的公司会对多态继承、设计模式、模板着重一些;因特网类公司对搜索引擎、海量算法会有所涉及。作为求职者,在笔试前应首先搞清楚应聘公司的基本情况。 (2)Java程序员:根据公司类型差异,考试侧重点各有不同。一般来说,手机研发公司较欢迎精通J2ME的人才;纯软件开发公司更侧重对J2EE、数据结构等技术的考核;因特网类公司则看中Hibernate、Spring等Java应用。 (3)网络程序员:在Internet时代,很多职位更多地与网络相关,主要包括网站动态页面编码与设计。其所用的工具一般为ASP、JSP、PHP、JavaScript、Ajax及CSS等,相关的职位一般有Web前端设计工程师、PHP程序员及ASP工程师等。 一般来说,程序员的职位要求如下: (1)熟悉计算机基础,例如,数据结构、离散数学、微机原理、软件工程、设计模式及计算机网络等(不同的职位,要求各有侧重)。 (2)熟悉所需要的编程语言(C/C++、Java、PHP及JavaScript等)。 (3)熟悉一种数据库技术(SQL Server、My SQL等)。 (4)由于很多公司的操作平台都是Unix/Linux,需要理解Unix/Linux命令。求职建议: 应聘此类职位一般以大学应届毕业生或初入此领域的求职者为主。因此,公司除了对项目经验略作询问外,主要考查求职者的基本能力,包括计算机基础、数据结构常识、网络体系架构、编程风格、赋值语句、递归条件、类型转换和模板函数等程序设计的基本概念。求职者在应聘之前,需对所掌握的程序概念知识有所复习,尤其是对各种细节的考点要加以重视。当涉及语言时,要小心代码规范及编程细节。
2)高级程序员
高级程序员一般被用于开发大型的应用项目。高级程序员的职位要求如下: (1)有1~3年的工作经验或研究生以上学历。 (2)在精通所需要编程语言的同时,还要精通一门数据库技术。(3)具备Unix/Linux开发经验。 求职建议: 此类职位应聘侧重于两个方面,一个是以往的工作项目经验,另一个是团队合作精神,这两个方面可以分别在简历和面试中体现出来。
3)高级软件工程师
对于这个层次的职位来说,已经不会简单地要求精通某种计算机语言。高级软件工程师的职位要求如下: (1)具有3年以上工作经验并全程参与过大型项目开发、设计及构架。 (2)精通UML设计模式。 特别要注意的是,由于要面对客户领域需求或领导团队进行开发,因此该层次的职位对求职者的沟通和协调能力要求较高。 求职建议: 简历中需体现在你带领下开发项目的规模、种类及数量,而在面试中将主要考核求职者的沟通和团队组织能力。 2.测试类职位
测试类职位主要包括软件测试工程师、高级软件测试工程师等。
1)软件测试工程师
这里所说的软件测试工程师一般是指黑盒测试,对语言的要求没有开发工程师那么高,软件测试工程师的职位要求如下: (1)需要懂得一些基本的算法和逻辑。 (2)熟悉常见的测试方法和技术。 (3)熟悉各类开发文档的写作与阅读。 软件测试工程师的基本任务如下: (1)参与软件项目的需求分析、测试计划制定,并能预先评估项目的风险。 (2)负责测试用例设计,执行项目测试,包括构建测试环境,集成测试和回归测试等。 (3)执行软件项目的性能测试和分析,预测系统性能瓶颈、风险和安全隐患。 求职建议: 由于软件测试是绝对不容马虎的,所以求职者需要在面试中体现自己思维缜密、态度严谨。
2)高级软件测试工程师
高级软件测试工程师一般被用于大型应用项目的测试,一般来说,高级软件测试工程师的职位要求如下: (1)有1~3年的工作经验或研究生以上学历。 (2)精通测试过程设计和用例设计方法,至少在性能测试、自动化测试和白盒测试中有一项专长。 (3)具备Unix/Linux测试经验,熟悉Linux或Unix操作系统,熟悉常用脚本语言(Unix Shell、Perl和Python等)。 高级软件测试工程师的基本任务如下:
(1)参与软件项目的需求分析,关注项目需求的可测性,并能预先评估项目的风险。 (2)负责软件项目的测试方案制定和评审,帮助测试工程师提高测试分析和用例设计水平。 (3)负责重大项目的测试组织,保持和项目组员的有效沟通,协调问题和缺陷的有效解决。 (4)通过总结、对外交流、技术钻研和培训,进行测试过程和测试方法的持续改进。 求职建议: 此类职位应聘侧重于两个方面,一个是以往的工作项目经验,另一个是团队合作精神,这两个方面可以分别在简历和面试中体现出来。
3.数据库类职位
数据库类职位主要包括数据库管理员(DBA,Database Administrator)和数据库开发工程师等。
1)初级数据库管理员
作为初级数据库管理员,其基本任务如下: (1)安装数据库组件。远程/自动/手动安装数据库版本和需要的安装环境(硬件、操作系统和网络协议等)。 (2)备份/恢复。需要的知识包括恢复模型,备份/恢复工具和相应的SQL语句,以使恢复计划适应商业需求。
(3)安全,角色/登录/用户账号。需要的知识包括审计模式、角色类型、怎样管理安全账号、分配/取消访问数据的权限和怎样做一个安全计划以适应商业需求。 (4)SQL编程。T-SQL是一个重要工具,它能使DBA通过将日常任务,例如,审计、备份/恢复及性能调优等编写成脚本来实现对数据库的管理。
2)中级数据库管理员
作为中级数据库管理员,其基本任务如下: (1)数据库架构实现。 (2)逻辑/物理模型的知识。 (3)专门的建模工具。好的数据模型能提升应用程序的性能,并且能减少数据库的维护。 (4)性能调优。需要的知识包括表/索引结构。索引选择/建立、服务器/数据库/会话选项、执行计划、使用事件探查器来优化和审计SQL语句。
3)高级数据库管理员
作为高级数据库管理员,更多的时间用在与客户做需求分析,给其他组的成员提供软件技能指导,并在时间管理、沟通、谈判中,扮演比技术技能更重要的角色。作为高级数据库管理员,要有广阔的视野,在电子商务时代,更多的商业依赖于在数据的基础上做出决定和行动,这给所有的数据库管理员、特别是高级数据库管理员更多的机会,在数据价值链的每一阶段去有创造性的操作数据,包括从数据收集、处理、挖掘到报表、分类和存储等。
4)数据库开发工程师
数据库开发工程师主要从事数据库开发和维护工作,在招聘时,公司对国际水平认证比较看重,同时,对经验要求较高,一般都需要面向主流数据库,例如,Oracle、SQL Server、Sybase和DB2等。数据库开发工程师的职位要求如下: (1)精通一种数据库技术。 (2)有1年左右的数据库项目工作经验。 (3)由于数据库涉及公司生存,因此数据库相关的职位对求职者的文档能力和流程规范化习惯要求很高,并要求求职者具有一定的需求分析和独立、快速解决问题的能力。 (4)熟悉数据库所处的操作系统及应用该数据库的编程语。