Linux编程笔试真题(含详细答案)_第1页
Linux编程笔试真题(含详细答案)_第2页
Linux编程笔试真题(含详细答案)_第3页
Linux编程笔试真题(含详细答案)_第4页
Linux编程笔试真题(含详细答案)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

Linux编程笔试真题(含详细答案)适用场景:后端开发、嵌入式Linux开发、服务器开发校招/社招笔试考试时长:90分钟满分:100分一、单项选择题(每题3分,共30分)1.以下不属于Linux进程状态的是()A.运行态(R)B.阻塞态(S)C.挂起态(T)D.消亡态(Z)2.在Linux中,用于查看进程占用CPU、内存实时资源情况的命令是()A.psB.topC.netstatD.df3.下列关于fork()函数说法错误的是()A.fork()调用一次,返回两次B.子进程返回0,父进程返回子进程PIDC.子进程会复制父进程的地址空间D.子进程会继承父进程的PID4.Linux中,文件权限rwxr-xr--对应的十进制数值是()A.754B.745C.654D.7555.以下系统调用中,用于创建无名管道的是()A.socket()B.pipe()C.fifo()D.accept()6.守护进程的核心特性不包括()A.脱离终端B.后台运行C.父进程为init进程D.必须绑定端口7.TCP套接字编程中,listen()函数的主要作用是()A.建立客户端连接B.监听端口、等待连接请求C.绑定IP和端口D.发送网络数据8.下列命令中,可递归删除目录下所有文件及子目录的是()A.rmdirB.rm-rdirC.deldirD.rm-fdir9.Linux线程共享的资源是()A.栈空间B.进程全局变量C.线程私有变量D.程序计数器10.解决多线程资源竞争问题,保证数据同步的机制是()A.进程分叉B.互斥锁C.管道通信D.信号传递二、填空题(每空2分,共20分)1.Linux中一切皆文件,主要分为普通文件、目录文件、_______、_______、套接字文件五大类。2.终止进程的常用信号中,SIGKILL的信号值是_______,该信号_______(支持/不支持)被捕获和忽略。3.进程的内存布局由低到高依次为:代码段、_______、_______、栈区。4.UDP是_______、无连接的传输层协议;TCP是可靠、_______的传输层协议。5.查看Linux系统内核版本的命令是_______,查看当前系统所有进程的命令是_______。三、简答题(每题6分,共30分)1.简述僵尸进程的产生原因、危害及解决办法。2.简述进程与线程的核心区别。3.简述TCP三次握手、四次挥手的核心流程。4.简述Linux硬链接与软链接的区别。5.什么是孤儿进程?孤儿进程和僵尸进程有什么不同?四、编程题(每题10分,共20分)1.编写LinuxC语言代码,使用fork()创建一个子进程,父子进程分别打印自身PID和父PID,区分父子进程执行逻辑。2.编写简单的TCP服务端代码(C语言),实现监听8080端口,接收客户端字符串并原样回显的功能。参考答案及详细解析一、单项选择题答案1.C解析:Linux标准进程状态包含R(运行)、S(睡眠阻塞)、D(不可中断阻塞)、T(停止)、Z(僵尸消亡),无挂起态官方定义。2.B解析:ps为静态查看进程快照,top为动态实时查看资源占用;netstat查看网络端口,df查看磁盘空间。3.D解析:fork创建的子进程拥有全新PID,仅复制父进程的地址空间、文件描述符等资源,不会继承PID。4.A解析:r=4、w=2、x=1;所有者rwx(7)、同组r-x(5)、其他r--(4),组合为754。5.B解析:pipe()创建无名管道,fifo创建有名管道,socket创建套接字,accept接收网络连接。6.D解析:守护进程核心特征:脱离控制终端、后台运行、父进程被init接管,无需绑定端口,后台日志进程、定时进程均为守护进程。7.B解析:bind()绑定IP端口,listen()开启端口监听、维护半连接队列,accept()获取客户端连接。8.B解析:rm默认仅删除文件,-r参数递归删除目录及所有内容,-f强制删除不提示;del不是Linux命令。9.B解析:同一进程内的所有线程共享进程地址空间、全局变量、文件描述符;栈空间、线程局部变量为线程私有。10.B解析:多线程临界资源竞争通过互斥锁加锁解锁保证同步,管道、信号用于进程间通信。二、填空题答案1.字符设备文件、块设备文件2.9、不支持3.数据段、BSS段4.不可靠、面向连接5.uname-r、ps-ef三、简答题答案1.僵尸进程问题解析产生原因:子进程先于父进程退出,退出后会保留进程描述符(PCB)存放退出状态,若父进程未调用wait/waitpid回收子进程资源,子进程就会变为僵尸进程。危害:僵尸进程占用系统PID资源和PCB内存,大量僵尸进程会导致系统PID耗尽、无法创建新进程。解决办法:①父进程主动调用wait()/waitpid()回收子进程;②父进程注册SIGCHLD信号处理函数,子进程退出时自动回收;③终止父进程,子进程变为孤儿进程,由init进程自动回收。2.进程与线程核心区别①资源隔离:进程是资源分配的最小单位,拥有独立地址空间;线程是调度执行的最小单位,共享进程资源。②开销:进程创建、销毁、切换开销极大;线程开销极小。③通信方式:进程间通信依赖管道、socket、消息队列等;线程可直接读写全局变量通信。④独立性:一个进程崩溃不影响其他进程;一个线程崩溃会导致整个进程退出。3.TCP三次握手、四次挥手流程三次握手(建立连接):①客户端向服务端发送SYN报文,请求建立连接;②服务端收到SYN,回复SYN+ACK报文,确认客户端请求并同步自身连接请求;③客户端收到确认,发送ACK报文,连接建立。四次挥手(断开连接):①主动断开方发送FIN报文,告知对方不再发送数据;②被动方回复ACK,确认断开请求,继续传输剩余数据;③被动方数据传输完毕,发送FIN报文,告知主动方可以断开;④主动方回复ACK,等待超时后连接彻底断开。4.硬链接与软链接区别①本质:硬链接是文件的别名,共用同一个inode;软链接是独立文件,存储目标文件路径。②跨分区:硬链接不支持跨磁盘分区、跨文件系统;软链接支持跨分区。③目录链接:硬链接不允许链接目录;软链接可以链接目录。④删除影响:删除原文件,硬链接文件仍可正常使用;软链接会失效(变成悬空链接)。⑤inode:硬链接和原文件inode一致;软链接拥有独立inode。5.孤儿进程定义及区别孤儿进程:父进程先于子进程退出,子进程被系统init进程(PID=1)接管的进程。核心区别:孤儿进程是正常运行的进程,资源会被系统自动回收,无危害;僵尸进程是已经退出但未被回收的进程,占用系统资源,存在安全和性能隐患。四、编程题答案1.fork()创建父子进程代码c

#include<stdio.h>

#include<unistd.h>

#include<sys/types.h>

intmain()

{

pid_tpid=fork();//创建子进程

if(pid<0)

{

perror("forkerror");//创建失败

return-1;

}

elseif(pid==0)

{

//子进程逻辑

printf("【子进程】自身PID:%d,父进程PID:%d\n",getpid(),getppid());

}

else

{

//父进程逻辑

printf("【父进程】自身PID:%d,子进程PID:%d\n",getpid(),pid);

}

return0;

}编译运行:gcctest.c-otest&&./test核心说明:fork返回0进入子进程,返回正数(子进程PID)进入父进程,负数为创建失败。2.TCP简易回显服务端代码c

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<unistd.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<arpa/inet.h>

#definePORT8080

#defineBUF_LEN1024

intmain()

{

intsock_fd,conn_fd;

structsockaddr_inserver_addr;

charbuf[BUF_LEN]={0};

//1.创建套接字

sock_fd=socket(AF_INET,SOCK_STREAM,0);

if(sock_fd<0)

{

perror("socketcreateerror");

return-1;

}

//2.绑定IP和端口

server_addr.sin_family=AF_INET;

server_addr.sin_port=htons(PORT);

server_addr.sin_addr.s_addr=htonl(INADDR_ANY);//监听所有网卡

if(bind(sock_fd,(structsockaddr*)&server_addr,sizeof(server_addr))<0)

{

perror("binderror");

close(sock_fd);

return-1;

}

//3.开启监听

if(listen(sock_fd,5)<0)

{

perror("listenerror");

close(sock_fd);

return-1;

}

printf("服务端启动成功,监听端口:%d\n",PORT);

//4.循环接收客户端连接

while(1)

{

conn_fd=accept(sock_fd,NULL,NULL);

if(conn_fd<0)

{

perror("accepterror");

continue;

}

//读取客户端数据

memset(buf,0,BUF_LEN);

re

温馨提示

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

评论

0/150

提交评论