ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:32.53KB ,
资源ID:8541419      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8541419.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全近几年科大讯飞软件笔试题目.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

全近几年科大讯飞软件笔试题目.docx

1、全近几年科大讯飞软件笔试题目2009讯飞软件开发笔试题目C+A卷1、4分用变量a给出下面的定义a) 一个整型数;b一个指向整型数的指针;c一个指向指针的指针,它指向的指针是指向一个整型数;d一个有10个整型的数组;e一个有10个指针的数组,该指针是指向一个整型数;f一个指向有10个整型数数组的指针;g一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数答案:a)int ab)int *a;c)int *a;d)int a10;e)int*a 10;f) int a10, *p=a;g)int (*a)(in

2、t)h) int( *a10)(int)2、4分请写出以下语句的输出结果:Int i=43;Int j=5;Double f=25.45181;a)printf(“i=%d,j=%d,f=%3.2f,i,j,f);b)printf(“i=%x,j=%06d,i/j=%d,i,j,i/j);答案:Ai=43,j=5,f=25.45Bi=2b ,j=00005,i/j=8 (%x显示的是一个无符号的0x 16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)3、(2分)请完成以下宏定义:a用预处理指令#define 声明一个常数,用以说明1年中有多少个秒

3、忽略闰年问题b写一个“标准宏MIN,这个宏输入两个参数并返回较小的一个答案:a#define seconds365*24*60*60b)#define MIN(a,b) (a)(b)(a):(b) ABS宏 #define ABS (x)0)?(x):(-(x)4、6分以下为32为windows下的c+程序,请计算:achar str=hello;char *p=str;请计算:sizeof(str)=sizeof(p)=strlen(p)=答案:6,4,5b)void func(char str100)Void *p=malloc(100);请计算:sizeof(str)=101sizeof

4、 (p)=4c)int a3=1,2,3;int b=sizeof(a)/sizeof(a0);请计算:b=35、2分 设有定义:int n=0,*p=&n,*q=&p; 那么以下选项中,正确的赋值语句是dap=1; b)*q=2; c)q=p; d)*p=5;6、2分const关键字的用途?至少说明两种答案:1可以定义 const 常量2const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的强健性。7、2分typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。也可以用以预处理器做类似的事情。例如:#de

5、fine dps struct s*Typedef struct s *tps;以上两种情况的意图都是要定义dps和tps作为一个指向构造s指针。哪种方法更好一些呢?如果有的话为什么?Typedef更好一些,因为define只是简单的替换,比方声明dps a,b等价于struct *a,b;所以这样声明是错误的,而Typedef却不会这样。8、8分 以下是一组有关内存知识的问题,请仔细看题,答复:Void GetMemory(char *p)P=(char *)malloc(100);Void Test(void)Char *str=Null;GetMemory(str);Strcpy(str

6、,hello world);Printf(str);请问运行Test函数会有什么样的结果?a)_会出错,不能传递动态分配的内存,str一直为空char *GetMemory(void)Char p=hello world);Return p;Void Test(void)Char *str=NULL;Str=GetMemory();Printf(str);请问运行Test函数会有什么结果?b_会产生错误,不能返回子函数的局部变量值,因为在函数退出时,局部变量的值也清空。void GetMemory2(char *p,int num)*p=(char *)malloc(num);Void Tes

7、t(void)Char *str=NULL;GetMemory(&str,100);Strcpy(str,hello);Printf(str);请问运行Test函数会有什么结果?c)_hello。void Test(void)Char *str=(char *)malloc(100);Strcpy(str,hello);Free(str);If(str!=NULL)Strcpy(str,world);Printf(str);请问运行test函数会有什么样的结果?虽然能拷贝成功,但是这样使用很不平安,free(str)后,str成为悬浮指针。9、6分请写出以下程序的输出结果:Class APub

8、lic:A() Printf(“A constructed.n);VirtualA()printf(“A deconstructed.n);Virtual void Fn()printf(“A fn called.n);Class B:public APublic: B() printf(“B constructed.n);VirtualB() printf(“B deconstructed.n);Virtual void Fn()printf(“B fn called.n);Class C:public BPublic: C() printf(“C constructed.n);Virtua

9、l C() printf(“C deconstructed.n);Virtual void Fn() printf(“C fn called.n);Void main(int argc,char* grgv) A *pA=new B;If(pA!=NULL) pA-fn(); B *pB=static_cast(pA);If(pB!=NULL) pB-fn();C *pC=static_cast(pA);If(pC!=NULL) pC-fn();delete pA;A constructed.B constructedB fn called.B fn called.B fn called.B

10、deconstructed.A deconstructed.10.(2分)以下说法错误的选项是:bA指针和引用作为函数参数都可以改变实参B指针和引用都可以在定义后任意的改变指向C引用必须在创立的时候初始化,而指针那么不需要D不能空引用,但是可以有空指针11、2分 以下关于多态的描述,错误的选项是cAC+语言的多态性分为编译时的多态和运行时的多态性B编译时的多态性可以通过函数重载来实现C运行时的多态性可以通过模板和虚函数来实现D实现运行时多态性的机制称动态绑定12、2分 运算符的重载形式有两种,重载为_类的成员函数_和_类的友元函数_13、2分 main主函数执行完毕后,是否可能会再执行一段代码

11、?请说明理由?答:可以,可以用_onexit()注册一个函数,在main完毕之后调用f1,f2,f3,f4。14、2分C+中的空类,默认产生那些类成员函数?答:默认构造函数、析构函数、默认拷贝函数和赋值操作符15、4分简述STL库的功能,并给出遍历一个包含一组整型数的vector的代码。答:标准模板库是一个基于模板的容器类库,包括链表、列表、队列和堆栈。标准模板库还包含许多常用的算法,包括排序和查找。标准模板库的目的是提供对常用需求重新开发的一种替代方法。标准模板库已经经过测试和调试,具有很高的性能并且是免费的。最重要的是,标准模板库是可重用的,当你知道如何使用一个标准模板库的容器后,就可以在

12、所有的程序中使用它而不需要重新开发了。容器是包容其他对象的对象。标准C+库提供了一系列的容器类,它们都是强有力的工具,可以帮助C+开发人员处理一些常见的编程任务。标准模板库容器类有两种类型,分别为顺序和关联。顺序容器可以提供对其成员的顺序访问和随机访问,关联容器那么经过优化类的键值访问它们的元素。标准模板库在不同操作系统是可移植的。#include#includeusing namespace std;int sum(vector vec) int result=0; vector:iterator p=vec.begin(); while(p!=vec.end() cout*p ; resu

13、lt+=*p+; return result;int main() vector v1(100); coutv1.size()endl;/100 coutsum(v1)endl;/0 v1.push_back(23); coutv1.size()endl;/101 coutsum(v1)endl;/23 v1.reserve(1000); v1900=900; coutv1900endl; coutv1.front()endl; coutv1.back()endl; v1.pop_back(); coutv1.back()0,(i=1,2,n) ,那么对任一事件B(P(B)0)有:17、5分进

14、程和线程的区别和联系?进程和线程的关系:1一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。2资源分配给进程,同一进程的所有线程共享该进程的所有资源。3处理机分给线程,即真正在处理机上运行的是线程。4线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的方法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的根本单位,进程作为拥有资源的根本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资

15、源.(4) 系统开销:在创立或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创立或撤消线程时的开销。但是进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序强健,但在进程切换时,消耗资源较大,效率要差一些18、10分 请不用任何c runtime函数实现以下函数:Inter trim_str(char *pstr)函数功能如下:1)滤掉字符串头尾的空格、回车、tab2)输出字符串通过输入字符串指针

16、返回3)如果成功那么返回0否那么返回非0#includeusing namespace std;#define ERR -1;int trim_str(char *pstr) char *p=pstr; char *m; if(p=NULL) return ERR; while(*p!=0) if(*p= )|(*p=n)|(*p=t) m=p; while(*m!=0) *m=*(m+1); m+; else p+; return 0;int main() char s=ab de edeasd ; int i=trim_str(s); if(i=0) cout成功endl; else co

17、ut失败endl; coutsendl; return 0;19、10分有N个大小不等的自然数1,2,3,.N请将它们从小到大排列。算法要求:时间复杂度为On,空间复杂度为O1。请简要说明你采用的排序算法并写出c的伪代码。#includeusing namespace std;const int MAX=1000;int dataMAX;void paixu(int *p,int m) int k=0; for(int i=0;iMAX;i+) datai=0; for(int j=0;jm;j+) data*(p+j)+; for(i=0;iMAX;i+) if(datai!=0) for(

18、j=0;jdatai;j+) *(p+k)=i; k+; int main() int a=1,3,1,27,13,2,4,80,43,23,18,46; int len; len=sizeof(a)/sizeof(int); paixu(a,len); for(int i=0;ilen;i+) coutai ; return 0;20、10分 用文字和图示类图描述你所知道的除单件模式和简单工厂之外的一种设计模式,并用c+实现单例模式:类图:Singletonsingleton:Singleton *GetInstance()Singleton()class Singletonpublic:

19、static Singleton* GetInstance();private: Singleton() Singleton() static Singleton *singleton;Singleton* Singleton:singleton=NULL;Singleton* Singleton:GetInstance() if(singleton=NULL) singleton=new Singleton(); return singleton;21、10分请在以下三题中任选一题作答A什么是内存的垃圾回收集算法,其作用是什么?据你所知,有那些开发语言中提供了垃圾收集机制?答:一种自动内存管

20、理的策略,就是自动垃圾回收机制。既然是自动垃圾回收,那么平台肯定得采取一种方式发现垃圾,然后去除。这就是垃圾收集算法所关注的问题。垃圾收集算法的任务就是将活动的对象和已经死掉的对象分别出来,然后将死掉的对象的内存回收,而且为了更好的利用内存,有的算法还会对内存碎片进展压缩。JAVA,C#B现在非常多的用户都在谈SOA,根据Gartner的预测,2008年,企业80%应用都将通过使用SOA来实现,你理解SOA是什么?SOA的关键特点有哪些?SOA带来什么?答:面向效劳的体系构造 面向效劳的体系构造Service-Oriented Architecture,SOA是一个组件模型,它将应用程序的不同

21、功能单元称为效劳通过这些效劳之间定义良好的接口和契约联系起来。接口是采用中立的方式进展定义的,它应该独立于实现效劳的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的效劳可以一种统一和通用的方式进展交互。C随着互联网的普及,很多新兴的、传统的软件厂商都在探讨SAAS的前景,甚至很多行业观点认为SAAS是软件行业的未来趋势。你是怎么理解SAAS的,你怎么对待这种趋势?SAAs和更早之前的ASP感念有什么异同?答:SaaSSoftware-as-a-service的意思是软件即效劳,SaaS的中文名称为软营或软件运营。SaaS是基于互联网提供软件效劳的软件应用模式。作为一种在21世纪开场

22、兴起的创新的软件应用模式,SaaS是软件科技开展的最新趋势 SaaS提供商为企业搭建信息化所需要的所有网络根底设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列效劳,企业无需购置软硬件、建立机房、招聘IT人员,即可通过互联网使用信息系统。就像翻开自来水龙头就能用水一样,企业根据实际需要,从SaaS提供商租赁软件效劳。13、指针和引用的一样点和不同点:一样点:都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;而引用那么是某块内存的别名。不同点:指针是一个实体,而引用仅是个别名;引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终,指针可以“见异思迁;引用没

23、有const,指针有const,const的指针不可变;引用不能为空,指针可以为空;“sizeof 引用得到的是所指向的变量(对象)的大小,而“sizeof 指针得到的是指针本身的大小;指针和引用的自增(+)运算意义不一样;引用是类型平安的,而指针不是 (引用比指针多了类型检查14 、多线程问题为什么多线程会比单线程更耗时呢?其原因就在于,线程启停以及线程上下文切换都会引起额外的开销,所以消耗的时间比单线程多。为什么加锁后的三线程比两线程还慢呢?其原因也很简单,那把读写锁就是罪魁祸首。实际情况并不是并行执行,反而成了串行执行,在采用多线程方法设计程序时,如果产生的额外开销大于线程的工作任务,就

24、没有并行的必要。线程并不是越多越好,软件线程的数量尽量能与硬件线程的数量相匹配。最好根据实际的需要,通过不断的调优,来确定线程数量的最正确值。15、什么是虚拟存储器?虚拟存储器的特点是什么?虚拟存储器:在具有层次构造存储器的计算机系统中,自动实现局部装入和局部替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址构造和可用磁盘容量。特点:屡次性、对换性、虚拟性。屡次性是指一个作业被分成屡次调入内存运行,亦即在作业运行时没有必要将其全部装入,只需将当前要运行的那局部程序和数据装入内存即可;以后每当要运行到尚未调入的那局

25、部程序时,再将它调入。对换性是指允许在作业的运行过程中进展换进、换出,亦即,在进程运行期间,允许将那些暂不使用的程序和数据,从内存调至外村的对换区换出,待以后需要时再将它们从外存调至内存换进。虚拟性是指能够从逻辑上扩大内存容量,使用户所看到的内存容量远大于实际内存容量。16、什么是this指针?其主要功能是什么? this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象的地址。全局仅有一个this指针,当一个对象被创立时,this指针就指向对象数据的首地址。一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用return *thi

26、s;另外一种情况是当参数与成员变量名一样时使用this指针,如this-n = n 不能写成n= n17、C+常见的内存错误:1. 内存泄露:指应用程序未释放动态申请的且不再使用的内存,原因可能是程序员疏忽或者错误造成程序异常。在C/C+中,动态申请的内存是在堆上的。如果发送此类的内存泄露,函数每执行一次就丧失一块内存。长时间运行改程序可能引起系统内存耗尽。2. 野指针:未初始化的指针称为野指针。通常的防止方法就是在指针定义的时候就初始化,初始为NULL或者一个有意义的内存地址。对于动态申请的内存地址,在该内存释放之后,对应指针最好立即赋值为NULL。并在具体使用指针的时候判断指针的值是否为N

27、ULL。3. 内存越界访问:内存越界访问通常发生在数组、字符串或者连续内存的访问。有两种情况:读越界,即读了非有效的数据。如果所读的内存地址是无效的,程序会立即崩溃。如果所读内存地址是有效的,读入的时候不会有错误,但是读入的数据是随机的,可能会产生不可控制的后果。举个简单的例子,字符串输出,如果没有完毕符,会输出一堆乱码也可能输出正常,也就是说结果是不可控的。写越界,亦称为缓冲区溢出,通常写越界会发生错误。内存写越界造成的后果是非常严重的。例如访问数组越界可能会修改访问数组的循环变量,造成死循环。4. 返回指向临时变量的指针char * getString()char b = Hello, T

28、ocy!; return b;5. 试图修改常量6. 内存未分配成功,但已经使用7. 内存分配成功,但没有初始化附加:goto语句有没有必要存在程序设计语言中答案:构造程序设计是防止使用GOTO语句的一种程序设计;构造程序设计是自顶向下的程序设计;构造程序设计是一种组织和编制程序的方法,利用它编制的程序易于理解、易于修改;程序构造化的一个主要功能是使程序正确性的证明容易实现;构造程序设计对设计过程中的每一步去验证其正确性,这样便自动导致自我说明和自我保卫的程序设计风格;2012年科大讯飞软件笔试题一、单项选择题1、64变形的外角和是多少A是360度A、1*360 B、1*180 C、64*360 D、64*1802、有一盆衣服已经洗过了,需要漂洗,请问在漂洗次数固定的情况下如何分配水才能把衣服洗得最干净C A、从少到多 B、从多到少 C、平均分配,是求函数极值问题 D、随便洗3

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1