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.四次挥手机制

相关推荐
归寻太乙1 分钟前
C++函数重载完成日期类相关计算
开发语言·c++
尽蝶叙4 分钟前
C++:分苹果【排列组合】
开发语言·c++·算法
coffee_baby5 分钟前
化繁为简:中介者模式如何管理复杂对象交互
java·spring boot·microsoft·交互·中介者模式
ღ᭄ꦿ࿐Never say never꧂9 分钟前
微服务架构中的负载均衡与服务注册中心(Nacos)
java·spring boot·后端·spring cloud·微服务·架构·负载均衡
所待.38310 分钟前
小小扑克牌算法
java·算法
大耳朵土土垚12 分钟前
【Linux 】开发利器:深度探索 Vim 编辑器的无限可能
linux·编辑器·vim
.生产的驴18 分钟前
SpringBoot 消息队列RabbitMQ 消息确认机制确保消息发送成功和失败 生产者确认
java·javascript·spring boot·后端·rabbitmq·负载均衡·java-rabbitmq
.生产的驴18 分钟前
SpringBoot 消息队列RabbitMQ在代码中声明 交换机 与 队列使用注解创建
java·spring boot·分布式·servlet·kafka·rabbitmq·java-rabbitmq
极客小张20 分钟前
基于STM32MP157与OpenCV的嵌入式Linux人脸识别系统开发设计流程
linux·stm32·单片机·opencv·物联网
x66ccff25 分钟前
【linux】4张卡,坏了1张,怎么办?
linux·运维·服务器