Linux面试题

当准备 Linux 面试时,以下是一些可能会遇到的常见 Linux 面试题:

  1. 什么是Linux?解释一下Linux操作系统的特点。

  2. 什么是Linux内核?Linux内核的作用是什么?

  3. 如何在Linux系统上查看当前的IP地址和子网掩码?

  4. 如何在Linux系统上查看当前的内存使用情况?

  5. 如何在Linux系统上查看CPU使用情况?

  6. 列出你知道的Linux常见命令,并解释它们的功能。

  7. 如何在Linux系统上查看一个文件的内容?

  8. 怎样在Linux系统上查看正在运行的进程?

  9. 请解释一下什么是文件权限,并说明 rwx 权限表示的含义。

  10. 如何在Linux系统上安装软件包?

  11. 怎样在Linux系统上重启或关机?

  12. 解释一下Linux系统中的硬链接和软链接。

  13. 怎样使用grep命令在文件中搜索特定的字符串?

  14. 怎样使用scp命令在不同的Linux系统之间复制文件?

  15. 怎样查找Linux系统中的大文件或大文件夹?

  16. 解释一下什么是Linux文件系统以及常见的文件系统类型。

  17. 如何在Linux系统中查看日志文件?

  18. 怎样使用crontab设置定时任务?

  19. 解释一下Linux中的环境变量,以及如何设置和使用环境变量。

  20. 怎样使用tar命令对文件和目录进行打包和压缩?

这些问题只是一些可能的示例,你还可能面对其他与Linux相关的问题。建议你在面试前对这些问题进行准备,并确保对Linux的基本概念、命令和常见操作有一定的掌握。同时,记得在回答问题时要简洁明了,并尽量提供具体的实例或命令来支持你的回答。

1.标准IO与文件IO的区别?

1.标准IO是标准C库定义的一组输入输出的函数接口,而文件IO是系统定义的一组输入输出的函数接口。

2.标准IO有缓存机制,而文件IO没有缓存机制,每次都引起系统调用。

3.标准IO只能操作普通文件,而文件IO处理目录文件其余文件都可以操作。

4.标准IO是通过流来操作文件,而文件IO是围绕文件描述符进行操作,文件描述符是非负整数,依次分配。

5.标准IO默认打开三个流,stdin,stdout,stderr;文件IO默认打开三个文件描述符,0(标准输入),1(标砖输出),2(标准错误);

2.静态库和动态库的区别?

静态库和动态库的本质区别是代码载入时刻不同

1.静态库:静态库在程序编译时被连接到目标代码。

优点:程序运行不需要该静态库,运行时不需要库,运行效率高。

缺点:(1)程序将静态库的代码复制到目标代码中,代码体积大。

(2)静态库进行升级后,程序需要重新编译。

2.动态库:动态库是在运行时被载入代码中。

优点:(1)不需要将代码复制到程序中,代码体积小。

(2)库升级后,不需要重新编译,升级简单。

(3)不同的程序若需要相同的动态库,动态库存在一份即可。

缺点:运行时库必须存在,移植性差。

3. 什么是孤儿进程?僵尸进程?

1.当父进程比子进程先结束,子进程成为孤儿进程,内init进程收养,成为后台进程。

2.当子进程比父进程先结束,父进程没有及时对子进程进行回收,此时子进程成为僵尸进程,要避免僵尸进程的产生。

4. 什么是守护进程?步骤?

守护进程:该类进程在后台运行,运行时间比较长,一般在Linux启动时运行,在系统关闭时停止执行,脱离终端,并且按照周期执行。

1.创建子进程,父进程退出(fork),让子进程成为孤儿进程,成为后台进程;

2.在子进程中创建会话(setsid),让子进程成为会话组组长,为了让子进程完全脱离终端

3.改变子进程运行路径为根目录,程序运行的路径不能删除或卸载。(chdir("/"))

4.修改文件权限掩码,提高文件权限,增强灵活性umask(0);

5.关闭文件描述符,关闭不需要的文件描述符(close)

5. 进程与线程区别

相同点:进程和线程都为系统提供了并发执行能力。

不同点:

资源和调度:进程是资源分配的最小单位,线程是系统调用的最小单位。

地址空间:一个进程创建的多个线程共享进程的资源,而进程之间地址空间相互独立。

通信机制:线程之间通信相对简单,通过全局变量就可相互通信,但要考虑临界资源的问题,而进程之间的通信相对复杂,需要进程间的通信机制(3-4G内核空间)进行通信。

安全性:进程的安全性相对较差,当一个进程结束时会导致所有线程退出,进程相对安全。

6.死锁

死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源和通信造成的阻塞,如果没有外力的作用,它们都将无法推动下去。

1.互斥使用:当资源被一个线程占有时,别的线程不可使用

2.不可抢占:资源申请者不能强制夺取资源占有者的资源,只能等待资源占有者主动释放

3.请求和保持:资源请求者在请求资源的同时保持对原有资源的占有

4.循环等待:存在一个等待队列,p1占有p2的资源,p2占有p3的资源,p3占有p1的资源,形成一个等待环路。

7. 线程的同步与互斥?

1.同步:指的是多个任务(线程),按照规定的顺序执行共同完成一件事情。

2.互斥:多个线程访问临界资源时,同一时间内只能有一个线程访问临界资源

8. 实现同步的机制

信号量,互斥锁+条件变量,信号灯集

9. 进程间通信方式?

1.无名管道,2.有名管道,3.信号,4.共享内存,5.消息队列,6.信号,7.套接字

10. 无名管道有名管道区别?

1.无名管道只能用于具有亲缘关系的两个进程之间的通信,而有名管道可以用于两个没有任何关系的进程之间的通信。

2.无名管道和有名管道都采用半双工通信,

3.无名管道可以看成特殊的文件,可以通过文件IO进行操作,文件系统不可见。有名管道可以用路径名来指出,文件系统可见,但内容保存在内存;

4.有名管道和无名管道都基于文件描述符的通信方式,当无名管道建立时会自动创建两个文件描述符fd[0],fd[1],fd[0]是固定的读端,fd[1]是固定的写端。而有名管道需要自己打开文件获得文件描述符。

5.有名管道和无名管道遵循先进先出的原则,有名管道不支持lseek操作

11. 共享内存、信号灯集、消息队列步骤?函数?

共享内存:1.创建key值(ftok),2.创建或打开共享内存(shmget)3.映射共享内存到用户空间(shmat)4.撤销映射(shmdt)5.删除共享内存(shmctl)

信号灯集:1.创建key值(ftok)2.创建或打开信号灯集(semget)3.初始化信号灯集(semctl)4.进行pv操作(semop)5.删除信号灯集(semctl)

消息队列:1.创建key值(ftok)2.创建或打开消息队列(msgget)3.添加消息:将消息按照类型添加到已打开的队列末尾(msgsnd)4.读取消息:将消息按照类型从队列中读取(msgrcv)5.删除消息队列(msgctl)

12.TCP三次握手机制?

1.客户端通过connect函数主动连接,客户端发送一个SYN握手包,并且进入发送状态

2.服务器通过accept建立通信,服务器发送ACK表示确认,并且发送SYN包给客户端,发送完成后进入接收状态。

3.客户端收到服务器的ACK和SYN后向服务器发送确认包,发送完毕后进入确认状态。服务器收到ACK包后也进入确认状态。

13.TCP四次挥手机制?

1.主动关闭方会发送一个FIN包给被动方进入FIN_WAIT状态

2.被动方收到FIN包后,会给主动方发送ACK包表示确认,并进入CLOSE_WAIT状态,如果有数据没有发送完毕,则继续发送,直到发送完毕。

3.被动方发送FIN包,进入LAST_ACK状态

4.主动关闭方收到FIN包后,会回复一个ACK包。被动关闭方收到ACK后关闭连接。

14.关于TCP建立可靠通信的原因

1.序列号和确认机制

每次数据传输,都会有PUSH,每次PUSH包发送之后,接收者都会回复ACK包,表示确认,是TCP可靠通信的原因之一。

2.超时重发机制

如果发送方在一段时间内没有收到确认消息,发送者会认为数据丢失,重新发送数据

3.三次握手机制

4.四次挥手机制

相关推荐
鬼火儿13 分钟前
15.<Spring Boot 日志>
java·后端
Mos_x14 分钟前
SpringBoot】Spring Boot 项目的打包配置
java·后端
qianbailiulimeng17 分钟前
【Spring Boot】Spring Boot解决循环依赖
java·后端
何中应17 分钟前
Spring Boot解决循环依赖的几种办法
java·spring boot·后端
donotshow18 分钟前
SpringBoot】Spring Boot 项目的打包配置
java·后端
zhangfeng113318 分钟前
亲测有效的mem 流行病预测,时间序列预测,r语言做移动流行区间法,MEM流行病阈值设置指南
开发语言·r语言·生物信息
鬼火儿19 分钟前
Spring Boot 整合 ShedLock 处理定时任务重复
java·后端
王元_SmallA21 分钟前
【Spring Boot】Spring Boot解决循环依赖
java·后端
小圆53130 分钟前
java-learn(9):常见算法,collection框架
java·开发语言·算法
nbsaas-boot43 分钟前
SaaS 租户上下文传播架构
java·架构·saas