2022年程序员面试宝典第二部分 .pdf

上传人:H****o 文档编号:32514112 上传时间:2022-08-09 格式:PDF 页数:8 大小:1.21MB
返回 下载 相关 举报
2022年程序员面试宝典第二部分 .pdf_第1页
第1页 / 共8页
2022年程序员面试宝典第二部分 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年程序员面试宝典第二部分 .pdf》由会员分享,可在线阅读,更多相关《2022年程序员面试宝典第二部分 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1. 关于 printf 答案: printf 函数中不会对参数做强制类型转换2. unsigned short int unsigned short int a=0; couta-1;/ 65535 NOTE: short int 16 位 , 2 的 16 次方为 65536 3. 中断服务子程序ISR 解析:存在的问题如下1)ISR不能有返回值;2)ISR不能传递参数;3)ISR应该是短而高效的,在ISR中做浮点运算是不明智的;4)ISR中不应该有重入和性能上的问题,因此不应该使用pintf() 函数。裸奔的系统: 硬件中断响应程序的运行插入时机是随机的,程序中不存在这样的调用语句:“v

2、alue=interrupter( )”, 所以,即使有返回值也不知返回给谁。同理,如果中断函数有形参,但因没有调名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 用者,也就没有实参对形参赋值。所以,不可能有参数传递。裸奔系统中,中断程序由硬件触发执行。这意味着中断函数没有具体的调用者,所以,中断函数无法将值返回给任何对象非裸奔系统: 操作系统需要进行各种调度安排,所以接管了中断的入、出口;另外,还增加了许多软件中断。这些中断函数

3、的运行插入时机已经不再是随机了。一个中断申请发生后, 其运行时机取决于操作系统的确定安排和调用。也就是说,有了调用者,所以可以有返回值和参数传递。4. volatile问题嵌入式程序员:硬件中断RTOS 5. 大端小端n little-endian systems, what is the result of following C program? 1.typedefstruct bitstruct 2.int b1:5; 3.int :2; 4.int b2:2; 5.bitstruct; 6.void main() 7.bitstruct b; 8.memcpy(&b, ” EMC EX

4、AMINATION”, sizeof(b); 9.printf(“ %d,%dn”, b.b1, b.b2); 10. 解析:1. b 的大小只有 4 字节,且 b 只用了里面的9 个 bit。memcpy 实际拷贝了 EMC (带空格)四个char 进入b。只有前 9 个 bit 有用,即 EM 两个 char 有用。2. 为 b1 分配 5 位,这里优先分配的应该是低5 位,也就是第一个字节的低5 位。继而分配 b2 的 2 个字节,也就是第1 个字节中紧接着的2 位。最后分配 b3 的 3 位,按照规则 1、2,b3 还是紧接着存放的,b3 的最低位是第一个字节的最高位,高两位为第 2

5、个字节的低两位。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 在一个字节中:高位低位(将 b3 想象成一个环) 3. b.b1 转换为 00101 且因其为 int,以最高位扩展,为000000000000101 ,即值显示为5b.b2 将转换为 10,以最高位符号位扩展为11111111111111110,即-2 的补码,显示为 -2;6. 数据溢出问题解析:注意一点char 的范围为 -128127,(unsigned c

6、har 范围为 0255),题目中会引起char 溢出, 0-127 再加一就会溢出变为-128,就会引起无限循环问题名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 7. Struct位域问题 sizeof #include usingnamespace std ; 1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof 大小,则后面的字段将紧邻前一个字段存储,直到不容纳为止;2) 如果相邻位域字段的类型相同,但其

7、位宽之和大于类型的sizeof 大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;注意:这里的位宽之和与类型的比较中,类型的大小指的是位数,比如 int 为32, char 为8, short int为16 struct chara1:2; chara2:4; chara3:2; A; /1 struct chara1:6; chara2:4; chara3:2; B ; /2 struct inta1:2; inta2:4; inta3:2; C ; /4 3) 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异, VC6采取不压缩方式,Dev-C+采取压缩方式;s

8、truct chara1:6; inta2:4; chara3:2; D ; /12 4) 如果位域字段之间穿插着非位域字段,则不进行压缩;struct chara1:6; inta2; chara3:2; E ; /12 5) 整个结构体的总大小为最宽基本类型成员大小的整数倍。struct chara1:6; doublea2; chara3:2; F ; /24 voidmain( void ) cout sizeof ( A) ; cout sizeof ( B) ; cout sizeof ( C) ; cout sizeof ( D) ; cout sizeof ( E) ; cou

9、t sizeof ( F) endl ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 8. 死锁产生的四个必要条件:死锁:是指两个或两个以上的进程在执行过程中,因为争夺资源而造成的一种互相等待的现象。1) 互斥条件:一个资源一次只能被一个进程使用该条件无法破坏2) 请求与保持条件:一个进程因为请求资源而阻塞,对已获得的资源保持不放3) 不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺4) 循环等待条件:若干进程之间形

10、成一种头尾相接的循环资源关系银行家算法什么是死锁,如何避免死锁?线程 A 需要资源X, 而线程 B 需要资源 Y,而双方都掌握有对方所要的资源,这种情况称为死锁 (deadlock),或死亡拥抱( the deadly embrace)。在并发程序设计中,死锁(deadlock) 是一种十分常见的逻辑错误。通过采用正确的编程方式,死锁的发生不难避免。死锁的四个必要条件在计算机专业的本科教材中,通常都会介绍死锁的四个必要条件。这四个条件缺一不可,或者说只要破坏了其中任何一个条件,死锁就不可能发生。我们来复习一下,这四个条件是:1)互斥( Mutual exclusion ) :存在这样一种资源,

11、它在某个时刻只能被分配给一个执行绪(也称为线程)使用;2)持有( Hold and wait ) :当请求的资源已被占用从而导致执行绪阻塞时,资源占用者不但无需释放该资源,而且还可以继续请求更多资源;3)不可剥夺( No preemption ) :执行绪获得到的互斥资源不可被强行剥夺,换句话说,只有资源占用者自己才能释放资源;4)环形等待( Circular wait) :若干执行绪以不同的次序获取互斥资源,从而形成环形等待的局面,想象在由多个执行绪组成的环形链中,每个执行绪都在等待下一个执行绪释放它持有的资源。解除死锁的必要条件不难看出, 在死锁的四个必要条件中,第二、 三和四项条件比较容

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

13、放 A, 放 B 这样的顺序来进行锁操作看上去有些怪异,但是只要大家都按先A 后 B 的顺序上锁,便不会导致死锁。解决方法:1 使用事务时,尽量缩短事务的逻辑处理过程,及早提交或回滚事务;( 细化处理逻辑,执行一段逻辑后便回滚或者提交,然后再执行其它逻辑,直到事物执行完毕提交) 2 设置死锁超时参数为合理范围,如:3 分钟 -10分种;超过时间,自动放弃本次操作,避免进程悬挂;3 优化程序,检查并避免死锁现象出现;4 . 对所有的脚本和SP 都要仔细测试,在正是版本之前。5 所有的 SP 都要有错误处理(通过error)6 一般不要修改SQL SERVER事务的默认级别。不推荐强行加锁名师资料

14、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 答案:C 1包含 EXE 文件的目录,2进程的当前工作目录,3Windows系统目录,4Windows目录,5列在 Path 环境变量中的一系列目录9. 网络答案:B C A B B服务访问点就是邻层实体之间的逻辑接口.从物理层开始,每一层都向上层提供服务访问点. 物理层的服务访问点就是网卡接口(RJ45 接口或 BNC 接口 ), 数据链路层的服务访问点是MAC 地址 , 网络层的服务访

15、问点是IP 地址 , 传输层的服务访问点是端口号, 应用层提供的服务访问点是用户界面. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 解析:子网掩码为255.255.10000000.00000000,40.15.00000000.0000000040.15.10000000.00000000所以答案为:D 解析:210. 27. 48 .0001 0101255.255.255.11111100 子网掩码所以为210.27.

16、48.20(00), 210.27.48.21(01), 210.27.48.22(10), 210.27.48.23(11) 同时第一个地址的主机号为00,代表 multicast(多播 )地址最后一个地址的主机号为11,主机号每位都为1 表示广播 (broadcast)地址所以只有中间的两个可以给host 使用解析:ICMP 是” internet control message protocol ” (internet 控制消息协议 ),属于 tcp/ip 协议的一个子协议,用于在ip主机,路由器之间传递控制消息。控制消息是指网络通不通,主机是否可达,路由是否可用等网络本身的消名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 息,这些控制消息不传送用户数据(ping 命令, tracert 命令)三次握手四次挥手常用的协议 arp icmp snmp p2p名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁