程序员面试宝典第二部分_第1页
程序员面试宝典第二部分_第2页
程序员面试宝典第二部分_第3页
程序员面试宝典第二部分_第4页
程序员面试宝典第二部分_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 关于 printf面试例題i:求f列程序的输出结果:。【艾国臬幷名计詆机硬件公司iw试題#include<stdio.h> int main()printf(w%fwr5); printf(w%d"f5.01);答案:printf函数屮不会对参数做强制类型转换解析:由先泰数5为int型.32位平台中为4字节,因ft/£ stack中分配4字节的内存. 用干存放舉数5然后printf根据说明符“广.认为参数应该是个double ® (在printf険数中,float会门 动转换成double),因此从stack中读了 8个字节。很垃然.内存访问越界

2、.会发生什么情况不可预料。如陳ze printf或者scanf中指定了 u%r,那么在后面的参数列农中也应该指定个浮点数、或者一个指向浮点变锻的指针, 否则不应加载支持浮点数的函数c干是(”匚5)右何题.而(”匚5.0)则可行.答案:第个答案足0.000000。第二个答案是一个大数。2. unsigned short intunsigned short int a=0;cout«a-l;/65535note: short int 16 位,2 的 16 次方为 655363.中断服务子程序isr面试例题 1: interrupts are an important part of e

3、mbedded systems. consequently, many compilervendors offer an extension to standard c to support interrupts. typically, the keyword is interrupt. the following routine(isr). point out the errors in the code.(中断是嵌入式系统中重要的组成 部分,这导致了很多编译开发商提供-种扩展让标准c支持中断。其代表事实是,产生 了一个新的关键字nterrupto诸看下血的程序(个中断服务p稈序isr),请

4、指出这段代 码的错误。)中国台湾某芳名cpu生产公司2005年面试题interrupt double compute area (double radius)printf (hnarea®%f area); return area;double area- pi radiusradius;解析:存在的问题如下1) isr不能冇返回值;2) isr不能传递参数;3) isr应该是短而高效的,在isr中做浮点运算是不明智的;4) isr中不应该冇匝入和性能上的问题,因此不应该使用pintf()函数。裸奔的系统:硬件中断响应稈序的运行插入时机是随机的,程序中不存在这样的调用语句: uval

5、ue=interrupter()",所以,即使有返回值也不知返回给谁。同理,如果中断函数有形参,但因没有调 用者,也就没有实参对形参赋值。所以,不可能有参数传递。裸奔系统中,中断程序由硬件触发执行。 这意味着中断函数没有具体的调用者,所以,中断函数无法将值返回给任何对象 罪裸奔系统:操作系统需要进行各种调度安排,所以接管了屮断的入、出口;另外,还增加了许多软件屮 断。这些中断函数的运行插入时机已经不再是随机了。一个中断申请发生后,其运行时机取决于操作系统 的确定安排和调用。也就是说,有了调用者,所以可以有返回值和参数传递。4. volatile 问题嵌入式程序员:硬件中断rtos答案

6、:一个定义为volatile的变於是说这变秋町能会被住想不到地改变.这样.编译器就不会人假设这个变联的fft f.桔确地说就是.优化器在用到这个变锻时必须毎次祁小心地爾新读取这个变績的值,而不是便用保存在寄存器电的备份卜怖是volatile变欤的儿个例心 并行设笛的硬件寄存器(如状态寄存器). 个中断服务f程序中会访问到的白动变就(non-automatic variables) 多线程应用中被几个任务共第的变狀5. 大端小端n little-endian systems, what is the result of following c program?1. typedef struct

7、bitstruct2. int bl:5;3. int :2;4 int b2:2;5. bitstruct;6. void main()7. bitstruct b;18 memepy(&b,"emc examination,sizeof(b);9. printfbbl, bb2);|10. 解析:b的大小只有4字节,fib只用了里面的9个bit。memepy实际拷贝了 'emc'(带空格)四个char进入 bo只有前9个bit有用,即em两个char有用。2.为b1分配5位,这里优先分配的应该是低5位,也就是第一个字节的低5位。继而分配b2的2个字节,也就

8、是第1个字节中紧接着的2位。最后分配b3的3位,按照规则1、2, b3还是紧接着存放的,b3的最低位是第一个字节的最高位,高两 位为第2个字节的低两位。在一个字节中:高位低位内存分配图如卜所示:b3低一位第1个字节x第2个字节x第3、4个字节一低地址高地址字符e二进制为"00 0101/?符m的二进制为0100 1101,在内存中存放如下所示:低地址高地址0100010101001101memcpy为按位拷贝的,所以两片内存区可以直接对应上,得到bl的二进制形式为:00101 ,高位为0,止数,5b2的二进制形式为:10 ,爲位为1,负数,取反加1,添加符号,2b3的二进制形式为:b

9、3的最低一位是6高位为01,拼接后为010, lk数,2(将b3想彖成一个环)3.b.b1转换为00101 因其为int,以最高位扩展,为000000000000101,即值显示为5b.b2将转换为10,以最高位符号位扩展为11111111111111110,即2的补码,显示为6. 数据溢出问题#include <iostream> using namespace std;/* 将 <=变成< */for (ch-0; ch <max; ch*)1 define max 255tpch«ch; cout « ch « m n ;mai

10、n() "在此添加 旬:给数组磁 个元索p255赋值*/ pch 二 ch;char pmax+l;cout « ch « 11 w ;/ 修改 ch 为 unsigned char unsignedchar ch;)解析:注意一点char的范围为-128-127,(unsigned char范围为0255),题目中会引起char溢出.0j27再加-就会溢出变为j2乩 就 会引起无限循环问题7. struct 位域问题一sizeofcollt«sizeof(a)«cout«sizeof(b)«cout«sizeof

11、(c)« cout«sizeof(d)« cout«sizeof(e)« collt«sizeof(f)«endl;structchar al:6;double a2;char a3:2;f ;/24void main(void)#includc <iostreani>using namespace std;1)如果相邻位域字段的类型相同,且其位宽z和小于类型的 sizeof大小,则后面的字段将紧邻前一个字段存储,直到不容纳 为i:;2)如果相邻位域字段的类型相同,但其位宽之和大丁-类型的 sizeof大小,则后

12、面的字段将从新的存储单元开始,其偏移量为 其类型大小的整数倍;注意:这里的位宽之和与类型的比较中,类型的大小指的是位数, 比如int为32, char为8, short int为 16structchar al:2;char a2:4;char a3:2;)a;/1structchar al:6;char a2:4;char a3:2;b ;/2structint ai:2;int a2:4;int a3:2;)c ;/43)如果和邻的位域字段的类型不同,则各编译器的具体实现有 差异,vc6采取不压缩方式,dcv-c+4-釆取压缩方式;structchar al:6;int a2:4;char

13、 a3:2;d ;/124)如果位域字段z间穿插着非位域字段,则不进行压缩; structchar al:6;int a2;char a3:2;e ;/125)整个结构体的总人小为最宽基本类型成员人小的整数倍。.死锁产生的四个必要条件:死锁:是指两个或两个以上的进程在执行过程中,因为争夺资源而造成的一种互相等待的现彖。1)互斥条件:一个资源一次只能被一个进程使用今该条件无法破坏2)请求与保持条件:-个进程因为请求资源而阻塞,对已获得的资源保持不放3)不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺4)循环等待条件:若干进程z间形成一种头尾相接的循环资源关系银行家算法什么是死锁,如何避免

14、死锁?线程a需要资源x,而线程b需要资源y,而双方都掌握有对方所要的资源,这种情况称为死锁(deadlock), 或死亡拥抱(the deadly embrace)。在并发程序设计中,死锁(deadlock)是一种十分常见的逻辑错误。通过采用正确的编程方式,死锁的发生不难 避免。死锁的四个必要条件 在计算机专业的木科教材中,通常都会介绍死锁的四个必要条件。这四个条件缺一不可,或者说只要破坏了其中任 何一个条件,死锁就不可能发生。我们來复习一下,这四个条件是:1)互斥(mutual exclusion):存在这样一种资源,它在某个时刻只能被分配给一个执行绪(也称为线程)使用;2)持有(hold

15、and wait):当请求的资源已被占用从而导致执行绪阻塞时,资源占用者不但无需释放该资源,而且 还可以继续请求更多资源;3)不可剥夺(no preemption):执行绪获得到的互斥资源不可被强行剥夺,换旬话说,只有资源占用者白己才能释 放资源;4)环形等待(circular wait):若干执行绪以不同的次序获取互斥资源,从阳形成环形等待的局面,想彖在由多个执 行绪组成的环形链屮,每个执行绪都在等待下一个执行绪釋放它持有的资源。解除死锁的必要条件不难看出,在死锁的四个必要条件中,第二、三和川项条件比较容易消除。通过引入事务机制,往往可以消除第二、 三两项条件,方法是将所冇上锁操作均作为事务

16、对待,一旦开始上锁,即确保全部操作均可回退,同时通过锁管理 器检测死锁,并剥夺资源(凹退事务)。这种做法有时会造成鮫大开销,而几也需耍对上锁模式进行较多改动。消除第四项条件是比较容易且代价较低的办法。具体来说这种方法约定:上锁的顺序必须一致。具体来说,我们人 为地给锁指定一种类似“水位”的方向性属性。无论已持有任何锁,该执行绪所有的上锁操作,必须按照一致的先后 顺序从低到高(或从高到低)进行,且在一个系统中,只允许使用一种先后次序。请注意,放锁的顺序并不会导致死锁。也就是说,尽管按照锁a,锁b,放a,放b这样的顺序來进行锁操作看上 去有些怪界,但是只耍大家都按先a后b的顺序上锁,便不会导致死锁

17、。解决方法:1使用事务时,尽量缩短事务的逻辑处理过程,及早提交或回滚事务;(细化处理逻辑,执行一段逻辑后便回滚或 者提交,然后再执行其它逻辑,直到事物执行完毕提交)2设置死锁超时参数为合理范围,如:3分钟10分种;超过时间,自动放弃木次操作,避免进程悬挂;3优化程序,检查并避免死锁现彖出现;4 .对所有的脚木和sp都要仔细测试,在正是版木之询。5所有的sp都要有错误处理(通过error)6 -般不要修改sql server事务的默认级別。不推荐强行加锁面试例题3: windows将遵循卜面的哪种搜索來左位dll?1进程的当前工作h录2包含exe文件的日录3列/i: path环境变量中的一系列目

18、录4 windows系统目录5 windows h 录a. 12453 b. 12543 c 21453 d 21345答案:c1. 包含exe文件的目录,2. 进程的当前工作fl录,3. windows系统目录,4. windows 目录,5. 列在path环境变量小的一系列目录9.网络面试例题1:任osi参鼎模型中.物理层的作用是(1) °对等实体在一次交互作用中传送的信 息单位称対它包括_(2l两部分。上下层实体之间的接口称为服务访问点(sap),网络 衣的服务访问点也称为(4),通常分为(5)两部分。中国某者名综合软件公2005年面试题(1) a.建立和释放连接b.透明的传输

19、比特流c.在物理实体间传送数据祯d.发送和按收用户数据(2) a.接口数据单无b.服务数据单元c.协议数据单元d.交互数据单元(3) a.控制信息和用户数据b.接口信息和用户数据c.接口信息和控制信息d.控制信息和校验信息(4) a.用户地址b.网络地址c.端口地址d.网卡地址(5) a.网络号和端口号b.网络号和左机地址c.超网号和(网号d.超网号和端口地址答案:b c a b b月良务访问点就是邻层实体z间的逻辑接口.从物理层开始,每一层都向上层提供服务访问点物理层的服务访问点就是网卡接口(rj45接口或bnc接口),数据链路层的服务访问点是mac地址,网络层的服务访问点是ip地址,传输层

20、的服务访问点是端口号,应用层提供的服务访问点是用户界而.面试例题 1: if we divide the network 40.15.0.0 into two subnets, and the first one is 40.15.0.0/17,then the second subnet will be.(如果把个网络40.15.0.0分为两个f网,第个网是40.15.0.0/17,那么第二个(网将会是j 中国台湾某弁名杀淞轶件公司2005年10丿面试®ja. 405.1.0/17b. 405.2.0/16c 40.15 100.0/17d. 40.152&0/17解析:子网掩码为 255.255./()00000().()()()()()()()(),40. 5.(m)()00()()0.()()()0()()()040.15.10000000.00000000所以答案为:d面试例题1:在子网210.27.48.21/30中有多少个町用地址,分别是什么?中美合资某著名通信 企业面域题解析:210. 27. 48 .0001 0101255.255.255.11111100 子网掩码所以为 210.27.48.20(00),210.27.48.21(01),210

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论