



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华为若干有趣的笔试题分类:用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)A:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365) UL。写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。A:#define MIN(A,B)(A)= (B) ? (A): (B)。预处理器标识#error的目的是什么?A:保证程序是按照你所设想的那样进行编译。关键字static的作用是什么?A:在C语言中,关键字static有三个作用:在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变;在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量;在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用,这就是这个函数被限制在声明它的模块的本地范围内使用。关键字volatile有什么含意?并给出三个不同的例子。A:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:并行设备的硬件寄存器(如:状态寄存器);一个中断服务子程序中会访问到的非自动变量(Non-automatic variables);多线程应用中被几个任务共享的变量。进程间的通讯方式-interprocess communication (IPC)A:a.管道(Pipe)(包括命名管道(named pipe)、匿名管道(anonymous pipe)):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;b.信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持Unix早期信号语义函数signal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);c.消息队列(Message Queue):消息队列是消息的链接表,包括Posix消息队列systemV消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。d.共享内存(Shared memory):使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。e.信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。f.套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。g.内存映射文件(memory-mapped file):在多个进程之间共享数据。h.广播式通信(Mailslots):Server进程可以产生Mailslots,任何Client进程可以写数据进去,但是只有Server进程可以取数据。i.信箱通信(Mailbox):当一个进程希望与另一进程通信时,就创建一个链接两个进程的信箱,发送进程把信件投入信箱,而接收进程可以在任何时刻取走信件。j.远程过程调用(Remote Procedure Calls,即RPC):为组件提供一种相互通信的方式,使这些组件之间能够相互发出请求并传递这些请求的结果。线程同步的几种方法?线程间通讯的几种方法?A:常用的同步方法有:临界区(CriticalSection)、互斥器(Mutex)、信号量(Semaphore)、事件(Event)、Interlocked Variable。常用的通讯方法有:使用全局变量进行通信,用volatile 修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变;使用自定义消息,在一个线程的执行函数中向另一个线程发送自定义的消息来达到通信的目的,利用Windows操作系统的消息驱动机制,当一个线程发出一条消息时,操作系统首先接收到该消息,然后把该消息转发给目标线程,接收消息的线程必须已经建立了消息循环。C+的类和C里面的struct有什么区别?A:默认的访问权限不同,C+是private,C是public。全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?A:全局变量和局部变量的区别主要在于生存周期不同,全局变量在整个程序生成期间可见,局部变量在自己的作用域内可见。全局变量的内存分配是静态的,位于PE文件在数据区,在main()前由C、C+运行期函数初始化,如果没有初值,会被初始化为0。局部变量的内存分配是动态的,位于线程堆栈中。如果没有初始化的,初始值视当前内存内的值而定。全局变量在程序运行期间长驻内存,直到程序运行结束,而局部变量动态分配内存。析构函数和虚函数的用法和作用?A:析构函数是在对象生存期结束时系统自动调用的函数,用来释放在构造函数分配的内存;虚函数是指被关键字virtual说明的函数,作用是使用C+语言的多态特性,为防止父类和子类中的相同函数名而完成不同(或相似)功能的函数造成调用时的二义性。交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?A:交换机属于OSI第二层即数据链路层设备。它根据MAC地址寻址,通过站表选择路由,站表的建立和维护由交换机自动进行。路由器属于OSI第三层即网络层设备,它根据IP地址进行寻址,通过路由表路由协议产生。交换机最大的好处是快速,路由器最大的好处是控制能力强。1到40的整数,选取其中四个作为天平的砝码重量,这四个砝码的组合可以称出1到40的任意整数重量,这四个数字是什么?A:把砝码放在一端的话,至少需要6个砝码:1,2,4,8,16,32砝码允许放在两端的话,至少需要4个砝码:1,3,9,27情况类似的原因,只解释一下第二种情况:称出1克需要一个1个的砝码,同样2克也需要一个2克的砝码,1克、2克的砝码则可以称出1、2、3,同样1克、3克可以称出1克、(3-1)克(放在两端)、3克、(3+1)克,再添加一个9克的则可以称出1克到13克的任意整数克,推广的话:用1,3,32,3n-1克可以称出从1克到(1+3+32+3n-1)即1/2(3n-1)克中的任意一切整数克。当量程给定时,要确定最少必备的砝码,只需把最大的克数化为进位数,在求各位数码时余数只许是1,0或-1即可。更为准确的表达是:要称出1克到n克中的任意整数克数,再只允许放在一端情况下的关键是把:1+x+x2+xn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急安全技术培训中心课件
- 新解读《DL-T 790.461-2010采用配电线载波的配电自动化 第4-61部分:数据通信协议 网络层 无连接协议》
- 2025年公务员考试《常识》练习题及参考答案详解1套
- 2024年电工考前冲刺测试卷附答案详解【B卷】
- 2024年执业药师常考点试卷附参考答案详解【培优A卷】
- 花岗石合同(标准版)
- 物业开发合同(标准版)
- 信息系统项目管理师(高级)学习笔记
- 吉林省临江市北师大版7年级数学上册期中强化训练(有一套)附答案详解
- 2025年教育行业数字化教材开发与教师培训模式研究报告
- 农业现代化种植技术培训课件
- 2025版煤矿安全规程宣贯培训课件
- 新课标(水平三)体育与健康《篮球》大单元教学计划及配套教案(18课时)
- 《幼儿园保育教育质量评估指南》知识专题培训
- 材料化学纳米材料市公开课一等奖省名师优质课赛课一等奖课件
- 从初高中物理教学衔接角度谈初中物理教学课件
- 安全学原理第2版-ppt课件(完整版)
- DB32-T 3751-2020公共建筑能源审计标准-(高清现行)
- 建设工程施工合同最新版(示范文本)(GF—2021—0201)
- 苹果电脑的发展史ppt课件
- 北京中考英语词汇表1600词汇+词组
评论
0/150
提交评论