版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UnixC面试题及详细答案(实战版)一、Unix基础与编译链接1、简述Unix系统中用户态与内核态的区别,为什么需要区分两种状态?参考答案:用户态是应用程序运行的普通权限状态,权限受限,不能直接操作硬件、修改系统内核数据、访问受保护的内存空间。我们编写的普通C代码,默认都运行在用户态。内核态是操作系统内核运行的高权限状态,拥有最高权限,可以直接操作硬件、管理进程、内存、文件、网络等系统资源。用户态想要使用系统资源,必须通过系统调用陷入内核态,由内核代为完成操作。区分意义:隔离用户程序与系统内核,防止恶意或异常的用户代码破坏系统核心资源,保障系统稳定、安全,实现多进程安全调度。2、静态链接和动态链接的区别,各自优缺点?参考答案:静态链接:编译时将库文件(.a)的代码直接拷贝到可执行文件中,打包成完整程序。优点:运行时不依赖外部库文件,移植性强,启动速度略快;缺点:可执行文件体积大,占用磁盘和内存空间,库升级后需要重新编译程序。动态链接:编译时仅记录库函数的符号表,运行时加载动态库(.so)并链接函数。优点:程序体积小,多个进程可共享同一份库文件,节省内存,库升级无需重新编译;缺点:运行环境必须配备对应版本的动态库,否则程序无法运行,启动有轻微加载耗时。3、gcc编译的四个阶段是什么?分别做什么工作?参考答案:1.预处理:处理宏定义、头文件包含、条件编译,删除注释,生成.i文件;2.编译:语法、语义检查,将C代码翻译成汇编代码,生成.s文件;3.汇编:将汇编指令转为机器码,生成二进制目标文件.o;4.链接:合并多个目标文件、解析符号引用、链接库函数,生成可执行文件。二、文件IO与系统调用4、标准IO(fopen/fread)和系统IO(open/read)的区别?参考答案:1.层级不同:open/read是Unix系统调用,属于内核层级;fopen/fread是C标准库函数,封装了系统调用。2.缓冲区不同:标准IO自带用户态缓冲区,减少系统调用次数,效率更高;系统IO无用户缓冲区,每次读写都会触发系统调用,频繁操作效率低。3.适用场景:普通文件读写、频繁小数据读写用标准IO;硬件设备、网络文件、实时读写、大数据批量读写用系统IO。4.文件标识不同:标准IO用FILE*结构体,系统IO用文件描述符fd(整型数字)。5、什么是文件描述符?0、1、2分别代表什么?参考答案:文件描述符是进程打开文件后,内核分配给进程的非负整数标识,用于进程操作对应文件、设备、管道、套接字。进程通过fd向内核发起读写、关闭等操作。默认固定fd:0:标准输入stdin1:标准输出stdout2:标准错误stderr6、read函数返回值有几种情况,分别代表什么?参考答案:1.大于0:成功读取的字节数;2.等于0:读到文件末尾EOF,对管道、套接字而言代表对端关闭;3.小于0(-1):读取出错,可通过errno判断具体错误,常见如中断、文件损坏、权限不足。三、进程管理7、进程和线程的区别?参考答案:1.资源归属:进程是资源分配的最小单位,每个进程有独立的地址空间、文件描述符、内存资源;线程是调度执行的最小单位,同一进程内的线程共享进程资源。2.开销不同:创建、销毁进程开销大,需要申请独立内存资源;线程开销极小,仅创建栈和寄存器资源。3.通信方式:进程间通信复杂,需要管道、消息队列、共享内存等IPC方式;线程间直接读写全局变量即可通信。4.独立性:进程相互独立,一个进程崩溃不影响其他进程;一个线程崩溃会导致整个进程退出。8、fork函数的工作原理,父子进程的区别?参考答案:fork()用于创建子进程,调用一次返回两次:父进程返回子进程PID,子进程返回0,出错返回-1。内核会复制父进程的地址空间、文件描述符、寄存器信息,早期是完全拷贝,现代系统采用写时复制(COW),只有数据被修改时才会单独拷贝,提升效率。父子进程区别:PID不同、PPID不同、fork返回值不同、未决信号和文件锁不继承、进程运行计时清零。其余数据、代码、文件状态初始完全一致。9、什么是僵尸进程、孤儿进程?如何处理僵尸进程?参考答案:孤儿进程:父进程先退出,子进程被init进程(PID=1)收养,无危害,会正常回收资源。僵尸进程:子进程退出,父进程未调用wait/waitpid获取子进程退出状态,子进程PCB资源无法释放,残留系统中占用PID资源,大量僵尸进程会导致系统无法创建新进程。解决方式:1.父进程主动调用wait()/waitpid()回收子进程;2.父进程注册SIGCHLD信号处理函数,子进程退出触发信号后自动回收;3.父进程退出,init进程自动回收所有僵尸子进程。10、wait和waitpid的区别?参考答案:1.wait()只能阻塞等待任意一个子进程退出,无法指定进程,不支持非阻塞;2.waitpid()可以指定等待特定PID的子进程,支持非阻塞轮询,可回收指定组的子进程,功能更灵活,实际开发使用更多。四、信号处理11、Unix信号的作用是什么?常见信号有哪些?参考答案:信号是系统提供的异步通信机制,用于内核或进程向目标进程发送通知,告知进程发生了特定事件,进程可捕获、忽略或默认处理。常见信号:SIGINT(2):键盘Ctrl+C中断进程;SIGKILL(9):强制杀死进程,不可捕获、不可忽略;SIGSEGV(11):段错误,非法访问内存;SIGCHLD(17):子进程退出通知父进程;SIGQUIT(3):Ctrl+\退出并生成core文件。12、signal和sigaction的区别?参考答案:signal是老旧的信号注册函数,接口简单,但跨平台兼容性差,信号处理期间会重置信号默认行为,容易丢失信号。sigaction是官方推荐的新标准函数,支持精细配置信号属性,可设置信号屏蔽字、处理方式、标志位,信号处理期间不会丢失同类型信号,稳定性更强,工程开发统一使用sigaction。五、进程间通信(IPC)13、常见的UnixIPC方式有哪些?各自特点?参考答案:1.管道:匿名管道仅支持父子进程通信,半双工,单向传输,简单高效;命名管道支持无亲缘关系进程通信。2.信号:异步通知,传递信息量极少,仅用于事件通知,不支持数据传输。3.共享内存:速度最快,直接读写内存,无需数据拷贝,但需要配合互斥锁、信号量保证同步。4.消息队列:支持消息类型区分、异步收发,自带缓冲,可离线通信,速度低于共享内存。5.信号量:主要用于进程、线程间同步与互斥,不传输业务数据。6.套接字:支持本地和跨网络进程通信,通用性最强。14、匿名管道的使用限制?参考答案:1.只能用于有亲缘关系的进程(父子、兄弟进程);2.半双工通信,数据只能单向流动,需要双向通信需创建两个管道;3.管道数据存在内存中,进程退出后数据丢失,无法持久化;4.数据读写流式传输,无消息边界。六、内存与程序运行15、32位进程的虚拟地址空间分布?参考答案:32位系统进程虚拟内存总空间4G,分布如下:1.用户空间(0~3G):代码段、数据段、BSS段、堆、栈、共享库映射区;2.内核空间(3G~4G):存放内核代码、内核数据、页表等,所有进程共享内核空间,用户态无法直接访问。16、堆和栈的区别?参考答案:1.管理方式:栈由系统自动分配、自动释放;堆由程序员手动malloc/free申请释放。2.空间大小:栈空间小,默认几MB;堆空间大,可使用系统大部分空闲内存。3.生长方向:栈从高地址向低地址生长;堆从低地址向高地址生长。4.生命周期:栈变量随函数调用结束销毁;堆内存生命周期由程序员控制,不主动释放会造成内存泄漏。17、什么是内存泄漏?如何避免?参考答案:内存泄漏是指程序动态申请堆内存后,未主动释放,且程序丢失该内存的指针,导致系统无法回收这部分内存,长期运行会造成内存占用持续升高,最终导致程序崩溃、系统卡顿。避免方式:1.malloc和free成对使用;2.函数异常分支、提前退出时,统一释放已申请内存;3.使用valgrind工具检测内存泄漏;4.全局堆内存程序退出前统一释放。七、网络基础(UnixSocket)18、TCP和UDP的区别?参考答案:1.可靠性:TCP面向连接、可靠传输,有序、无丢包、无重复;UDP无连接、不可靠,可能丢包、乱序。2.效率:TCP有确认、重传、拥塞控制机制,开销大、速度稍慢;UDP开销小、传输速度快。3.适用场景:TCP适用于文件传输、网页、登录等对可靠性要求高的场景;UDP适用于直播、游戏、语音视频等对实时性要求高、可容忍少量丢包的场景。19、简述TCP三次握手、四次挥手过程?参考答案:三次握手(建立连接):1.客户端发送SYN报文,请求建立连接;2.服务端收到SYN,回复SYN+ACK,同意连接并确认客户端请求;3.客户端收到确认,发送ACK,连接建立。四次挥手(断开连接):1.主动方发送FIN,告知对方不再发送数据;2.被动方回复ACK,确认关闭,此时被动方仍可发送剩余数据;3.被动方数据发送完毕,发送FIN,告知主动方可以关闭;4.主动方回复ACK,双方连接彻底断开。八、实操真题(代码问答)20、简述fork后父子进程的执行顺序,能否控制执行顺序?参考答案:fork创建子进程后,父子进程的执行顺序由操作系统调度器决定,顺序不确定,随机抢占执行。无法直接固定顺序,可通过睡
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广西梧州岑溪市第二幼儿园教师招聘考试备考题库及答案解析
- 2026年社会公共安全设备及器材制造行业发展趋势及投资前景报告及未来五至十年新兴市场与增量突破
- 2026年家用视听设备零售行业市场需求预测报告及未来五至十年创新突破与热点迁移
- 2026年纯氧燃烧器行业洞察报告及未来五至十年发展趋势报告
- 2026下半年杭州市第七人民医院公开招聘编外工作人员5人考试参考题库及答案解析
- 2026年甘肃金控集团校园招聘18人考试模拟试题及答案解析
- 2026大悟县消防救援大队政府专职消防员招录5人考试备考试题及答案解析
- 2026加格达奇区交通运输局公益性岗位招聘4人考试参考题库及答案解析
- 2026年10月广州市荔湾区金花街道党群服务中心公益性岗位招聘2人笔试备考试题及答案解析
- 成都市龙泉驿区东山国际小学招聘(4人)考试模拟试题及答案解析
- 数控控制系统:智能制造与高端机床市场趋势
- 2026年百色市右江区社区工作者考试题库及答案
- 2026年重症5c培训试题(附答案)
- 2026年CSCO胃癌诊疗指南解读课件
- 中途入股合作协议书范本
- 小学道德与法治新部编版五年级上册全册教案(2026秋)
- 检验科仪器设备校准验证程序性文件
- 2025年高校二级学院教学管理笔试真题(附答案)
- 新时代陕西省立德树人工作指南细则
- 2026年针灸推拿医师高频面试题包含详细解答
- dbj41现浇混凝土内置保温墙体技术规程
评论
0/150
提交评论