第一篇:C/C++软件工程师岗位职责
1.设计并实现高效的算法和数据结构。
2.开发一个或多个关键软件组件并且负责它们的接口定义,实现优化调试和维护。
3.与本地和海外的项目组成员交流。
第二篇:c++软件工程师
职位解析
1、按照公司产品开发计划完成软件设计工作;
2、根据设计报告,进行编码,并参与代码的评审测试工作;
3、相关软件的维护完善和升级工作;
4、具有通信核心网相关经验,熟悉通信系统协议软件开发原理和流程,熟悉WCDMA/TD-SCDMA协议或H.248、BICC、SIGTRAN协议者优先;
5、负责产品新版本完成后对其进行功能测试,异常测试,性能测试以及系统测试等工作。从业要求
1、计算机、通信相关专业本科及以上学历,2年以上相关工作经验;
2、精通C、C++等开发语言,熟练掌握和使用C++Builder工具,具有1-2年的使用时间;熟悉INFOMIX、Oracle、SQL Server等主流数据库技术,SNMP、CORBA等网管协议,Solaris操作系统;
3、具备嵌入式实时系统开发经验或网管软件开发经验;
4、具备移动通信无线接入网操作维护开发经验;熟悉通信系统协议软件开发原理和流程及WCDMA/TD-SCDMA协议者优先;
5、良好的团队合作能力;
6、良好的英语水平。
薪资分析
C/C++软件工程师的月薪范围一般在3500-10000元之间。一般而言,刚刚毕业的大学生以及拥有1-3年的工作经验者的月薪通常在3500-4500元左右,拥有3-5年工作经验者的月薪通常在5000-7000元之间,拥有更丰富的工作经验且跟过大型开发项目的高级C/C++软件工程师的月薪有时可高达万元;从学历角度看,拥有硕士学历的起薪多在3000-4000元之间,拥有本科学历的起薪多在3000元左右,拥有大专学历的起薪多在2000元左右;从地域上面来看,北京、上海等大城市的起薪多在3500元以上,其他中等城市的起薪则会低些。职位规划
C++软件工程师-C++高级软件工程师
职位充电
C、C++开发语言、C++Builder工具、主流数据库技术、SNMP、CORBA等网管协议、Solaris操作系统等
编辑本段就业前景
权威部门统计,我国目前C/C++软件开发人才缺口每年为10万人左右,未来随着信息化、数据化不断提速,这一数字还将成倍增长.,如果这一问题得不到解决,软件产业未来将面临危机。因为C/C++软件人才的严重稀缺,C/C++软件工程师的薪资水平正有逐年递增的趋势。
据调查,初、中级C/C++软件开发工程师的年薪目前为5万-15万元,高级软件工程师则高达15万-30万元。市场最紧缺的C/C++技术总监或项目总监年薪更高。C/C++软件工程师的年薪与JAVA软件工程师和.NET软件工程师的年薪相比一般平均要高于2-3万。据专家预测,C/C++软件工程师是未来几年最热门和最受欢迎的职业之一。
参考资料:
1.C++软件工程师的就业优势
http:///index.php/article/144/3984
第三篇:软件工程师岗位职责(软件)
1.完成软件系统代码的实现,编写代码注释和开发文档。
2.辅助进行系统的功能定义、程序设计。
3.根据设计文档或需求说明完成代码编写、调试、测试和维护。
4.分析并解决软件开发过程中的问题。
5.协助测试工程师制订测试计划,定位发现的问题。
6.配合项目经理完成相关任务目标。
第四篇:项目经理(C/C++)岗位职责
1.参与软件架构设计工作,负责系统设计。
2.协助软件架构师实现影响系统架构的关键用例。
3.负责核心模块的编码工作。
4.指导开发员的编码工作。
第五篇:C、C++总结
1、类:类是一种抽象的数据结构,用来描述对象的属性,是将不同数据类型的数据以及与这些数据相关的操作封装在一起的集合体。(封装性)
一个类的对象所占空间的大小由它的数据成员所占据的空间总和决定;当类有virtual函数时,再加上4个字节的大小。
2、面向过程与面向对象程序设计的不同:
(1)过程是基于算法的,而对象是基于类的;
(2)过程是以函数(过程)的设计来实现的,而对象是以类的设计来实现的;
(3)过程通过数据流图(流程图)来体现的,而对象是通过类图(用例图)来体现的;(4)过程需要将步骤一步一步的具体化,而对象则只注重类的设计,不管实现方法。
3、面向对象的四大特点:抽象、封装、继承、多态
4、访问控制权限:
(1)public公有型:外部可以访问
(2)protected 保护型:除了本类、子类与友元可访问外其它的都不能访问(3)private 私有型:除了本类外,外部的都不能访问
5、类与对象的区别:
(1)二者的定义不同:类是不同类型数据及其相关操作的集合,对象则是类的实例化(2)类是个类型,不占空间,但对象占空间。
(3)类是类型而不是数据对象,每个类的对象都是该类数据成员的拷贝
6、继承与派生的目的:(1)实现代码的重用
(2)使已存在的类不需修改地适应新应用 7.继承的特点:
(1)每个派生类代表基类的特定版本
(2)基类的属性和方法,派生类必须拥有(构造与析构不会被继承)8.继承的3种方式:public,private,protected
9、多态:是指发出同样的消息被不同类型的对象接收后导致完全不同的行为(1)多态的条件:
○1有两个是父子关系的类 ○2有同名的虚函数
○3有父类指针或引用调用子类对象(2)多态的实现:
函数的重载 运算符重载 虚函数
1、static有什么用途?(请至少说明两种)关键字static的作用是什么?
定义静态变量 1.限制变量的作用域 2.设置变量的存储域
C和C++中static用法(1)C中:
○1当一个变量被定义成static型时,表明该变量是一个静态变量,存储在静态存储区中,只能被定义初始化一次;特别的当全局变量被定义成static型时,还表明该变量不能被外部文件所引用
○2当一个函数被声明为static型时,表明该函数是一个静态函数,不能被外部文件所调用
1(2)C++的类中:
○1当类的数据成员被声明为static型时,表明该成员是一个能被所有对象共享的数据成员,不与任何具体对象挂勾
○2 当类的成员函数被声明为static型时,表明该成员是静态成员函数。
2、引用与指针有什么区别? 1)引用必须被初始化,指针不必。
2)引用初始化以后不能被改变,指针可以改变所指的对象。2)不存在指向空值的引用,但是存在指向空值的指针。
3、描述实时系统的基本特性
在特定时间内完成特定的任务,实时性与可靠性
4、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈 5 什么是平衡二叉树?
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1
6、堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源
7、什么函数不能声明为虚函数? constructor 8 冒泡排序算法的时间复杂度是什么? O(n^2)
9、Internet采用哪种网络协议?该协议的主要层次结构? tcp/ip 应用层/传输层/网络层/数据链路层
10、Internet物理地址和IP地址转换采用什么协议? ARP(Address Resolution Protocol)(地址解析協議)
11、.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
12、分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)
BOOL型变量:if(!var)int型变量: if(var==0)float型变量:
const float EPSINON = 0.00001;
if((x >=-EPSINON)&&(x <= EPSINON)
指针变量:
if(var==NULL)
13、不能做switch()的参数类型是: switch的参数不能为实型/
14、局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用“::” /
15、如何引用一个已经定义过的全局变量? 答:extern
16、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。
17、语句for(;1 ;)有什么问题?它是什么意思?
答:和while(1)相同。
18、do„„while和while„„do有什么区别?
答:前一个循环一遍再判断,后一个判断以后再循环
18、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。
程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。
19、sizeof(...)是运算符,它的功能是:获得保证能容纳实现所建立的最大对象的字节大小;strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。它的功能是:返回字符串的长度。20、队列和栈有什么区别? 队列先进先出,栈后进先出
21、在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么?
函数名: atol 功 能: 把字符串转换成长整型数
用 法: long atol(const char *nptr);
22、对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? c用宏定义,c++用inline
25、直接链接两个信令点的一组链路称作什么? PPP点到点连接
26、软件测试都有那些种类? 黑盒:针对系统功能的测试
白合:测试函数功能,各函数接口
27.确定模块的功能和模块的接口是在软件设计的那个队段完成的? 概要设计阶段
28/TCP/IP通信建立的过程怎样,端口有什么作用? 三次握手,确定是哪个应用程序使用该协议 29/进程和线程的差别。
线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。30、测试方法
人工测试:个人复查、抽查和会审
机器测试:黑盒测试和白盒测试
31、Heap与stack的差别。Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
1、软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。流程:1.软件测试流程 :需求了解--测试计划--测试设计--测试用例编写--测试执行--bug管理跟踪--测试报告生成
2.bug就是测试过程中发现的程序缺陷,可以指需求上的,也可以指功能、性能上的
3.bug提交有多种方式,可以通过测试管理工具来管理bug,比如QC等 4.bug的生命周期: 发现bug(open)--修复bug(fixed)--关闭bug(closed)4.软件测试方法:是指测试软件性能的方法。包括有:白盒测试、黑盒测试、动态测试(单元测试、集成测试、系统测试、验收测试、回归测试等。)
5.测试工具:三类软件测试工具: Mercury测试工具,Rational测试工具,Segue测试工具,qtp自动化测试工具和AutoRunner工具
6.测试内容:负载压力、功能测试、白盒测试、测试管理、测试辅助。
2、算法(Algorithm)是一系列解决问题的清晰指令,即能够对一定规范的输入,在有限时间内获得所要求的输出。图像处理算法工程师
1、一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
2、一个算法应该具有以下五个重要的特征: 有穷性、确定性、输入、输出、可行性。
3、冒泡排序(BubbleSort)一次比较两个元素,如果他们的顺序错误就把他们交换过来。基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
4快速排序:基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个程序的空间复杂度是指运行完一个程序所需内存的大小。