作为 Java 的从业者,在找工作的时候,一定会被问及关于Linux 相关的知识。Linux知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。在这里我们将详细的整理常见的Linux面试题目, 提供给大家学习参考。
1. 什么是Linux
Linux是一套免费使用和自由传播的类似Unix操作系统,一般的WEB项目都是部署都是放在Linux操作系统上面。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2. Windows和Linux的区别
- Windows是微软开发的操作系统,民用操作系统,可用于娱乐、影音、上网。 Windows操作系统具有强大的日志记录系统和强大的桌面应用。好处是它可以帮我们实现非常多绚丽多彩的效果,可以非常方便去进行娱乐、影音、上网。
- Linux的应用相对单纯很多,没有什么绚丽多彩的效果,因此Linux的性能是非常出色的,可以完全针对机器的配置有针对性的优化,
- 简单来说Windows适合普通用户进行娱乐办公使用,Linux适合软件开发部署
3. Unix和Linux有什么区别?
4. 什么是 Linux 内核?
Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
- 系统内存管理
- 应用程序管理
- 硬件设备管理
- 文件系统管理
5. Linux的基本组件是什么?
就像任何其他典型的操作系统一样,Linux拥有所有这些组件:内核,shell和GUI,系统实用程序和应用程序。Linux比其他操作系统更具优势的是每个方面都附带其他功能,所有代码都可以免费下载。
6. Linux 的体系结构
从大的方面讲,Linux 体系结构可以分为两块:
7. BASH和DOS之间的基本区别是什么?
8. Linux 开机启动过程?
- 1、主机加电自检,加载 BIOS 硬件信息。
- 2、读取 MBR 的引导文件(GRUB、LILO)。
- 3、引导 Linux 内核。
- 4、运行第一个进程 init (进程号永远为 1 )。
- 5、进入相应的运行级别。
- 6、运行终端,输入用户名和密码。
9. Linux系统缺省的运行级别?
- 关机。
- 单机用户模式。
- 字符界面的多用户模式(不支持网络)。
- 字符界面的多用户模式。
- 未分配使用。
- 图形界面的多用户模式。
- 重启。
10. Linux 使用的进程间通信方式?
- 1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
- 2、信号(signal) 。
- 3、消息队列。
- 4、共享内存。
- 5、信号量。
- 6、套接字(socket) 。
11. Linux 有哪些系统日志文件?
比较重要的是 /var/log/messages 日志文件。
12. Linux系统安装多个桌面环境有帮助吗?
通常,一个桌面环境,如KDE或Gnome,足以在没有问题的情况下运行。尽管系统允许从一个环境切换到另一个环境,但这对用户来说都是优先考虑的问题。有些程序在一个环境中工作而在另一个环境中无法工作,因此它也可以被视为选择使用哪个环境的一个因素。
13. 什么是交换空间?
交换空间是Linux使用的一定空间,用于临时保存一些并发运行的程序。当RAM没有足够的内存来容纳正在执行的所有程序时,就会发生这种情况。
14. 什么是root帐户
root帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装Linux时都是默认帐户。
15. 什么是LILO?
LILO是Linux的引导加载程序。它主要用于将Linux操作系统加载到主内存中,以便它可以开始运行。
16. 什么是BASH?
BASH是Bourne Again SHell的缩写。它由Steve Bourne编写,作为原始Bourne Shell(由/ bin /sh表示)的替代品。它结合了原始版本的Bourne Shell的所有功能,以及其他功能,使其更容易使用。从那以后,它已被改编为运行Linux的大多数系统的默认shell。
17. 什么是CLI?
18. 什么是GUI?
19. 开源的优势是什么?
开源允许你将软件(包括源代码)免费分发给任何感兴趣的人。然后,人们可以添加功能,甚至可以调试和更正源代码中的错误。它们甚至可以让它运行得更好,然后再次自由地重新分配这些增强的源代码。这最终使社区中的每个人受益。
20. GNU项目的重要性是什么?
这种所谓的自由软件运动具有多种优势,例如可以自由地运行程序以及根据你的需要自由学习和修改程序。它还允许你将软件副本重新分发给其他人,以及自由改进软件并将其发布给公众。
21. 简单 Linux 文件系统?
22. Linux 的目录结构是怎样的?
23. 什么是 inode ?
24. 什么是硬链接和软链接?
25. RAID 是什么?
26. 一台 Linux 系统初始化环境后需要做一些什么安全工作?
27. 什么叫 CC 攻击?什么叫 DDOS 攻击?
28. 什么是网站数据库注入?
29. Shell 脚本是什么?
一个 Shell 脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这些日常工作任务。
30.如何选择 Linux 操作系统版本?
31. 如何规划一台 Linux 主机,步骤是怎样?
32. 请问当用户反馈网站访问慢,你会如何处理?
33. Linux 性能调优都有哪几种方法?
34. 基本命令
- cd (change directory:英文释义是改变目录)切换目录
- pwd (print working directory:显示当前工作目录的绝对路径)
- ls (ls:list的缩写,查看列表)查看当前目录下的所有文件夹(ls 只列出文件名或目录名)
- ll (ll:list的缩写,查看列表详情)查看当前目录下的所有详细信息和文件夹(ll 结果是详细,有时间,是否可读写等信息)
- touch (touch:创建文件)创建文件
- mkdir (mkdir:创建目录) 创建目录
- cat (concatenate:显示或把多个文本文件连接起来)查看文件命令(可以快捷查看当前文件的内容)(不能快速定位到最后一页)
- more (more:更多的意思)分页查看文件命令(不能快速定位到最后一页)
- tail(尾巴) 查看文件命令(看最后多少行)
- cp(copy单词缩写,复制功能)
- mv(move单词缩写,移动功能,该文件名称功能)
- rm(remove:移除的意思)删除文件,或文件夹
- fifind (fifind:找到的意思)查找指定文件或目录
- 回车:向下n行,需要定义,默认为1行。
- 空格键:向下滚动一屏或Ctrl+F
- B:返回上一层或Ctrl+B
- q:退出more
- less -m 显示类似于more命令的百分比。
- less -N 显示每行的行号。(大写的N)
- 两参数一起使用如:less -mN 文件名,如此可分页并显示行号。
- 空格键:前下一页或page down。
- 回车:向下一行。
- b:后退一页 或 page up。
- q:退出。
- d:前进半页。
- u:后退半页
- tail -10 ;文件名 看最后10行
- cp /opt/java/java.log /opt/logs/ ;把java.log 复制到/opt/logs/下
- cp /opt/java/java.log /opt/logs/aaa.log ;把java.log 复制到/opt/logs/下并且改名为
- aaa.log
- cp -r /opt/java /opt/logs ;把文件夹及内容复制到logs文件中
- mv /opt/java/java.log /opt/mysql/ ;移动文件到mysql目录下
- mv java.log mysql.log ;把java.log改名为mysql.log
- -f或--force 强制删除文件或目录。删除文件不包括文件夹的文件
- -r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并删除。
- -rf 强制删除文件夹及内容
- rm 文件名 ;安全删除命令 (yes删除 no取消)
- rm -rf 强制删除文件夹及内容
- rm -rf * 删除当前目录下的所有内容。
- rm -rf /* 删除Linux系统根目录下所有的内容。系统将完蛋。vi (VIsual:视觉)文本编辑器 类似win的记事本 (操作类似于地下的vim命令,看底下vim 的操
- 作)
- vim (VI IMproved:改进版视觉)改进版文本编辑器 (不管是文件查看还是文件编辑 按 Shift + 上或
- 者下可以上下移动查看视角)
- | 管道命令(把多个命令组合起来使用)
- * 表示0~多个任意字符。
- find -name 文件名;按照指定名称查找在当前目录下查找文件
- find / -name 文件名按照指定名称全局查找文件
- find -name '*文件名' ;任意前缀加上文件名在当前目录下查找文件
- find / -name '*文件名*' ;全局进行模糊查询带文件名的文件
- 输入”vim 文件名” 打开文件,刚刚时是”一般模式”。
- 一般模式:可以浏览文件内容,可以进行文本快捷操作。如单行复制,多行复制,单行删除,多行删除,(退
- 出)等。
- 插入模式:可以编辑文件内容。
- 底行模式:可以进行强制退出操作,不保存 :q!
- 可以进行保存并退出操作 :wq
- 按下”i”或”a”或”o”键,从”一般模式”,进入”插入模式(编辑模式)”。
- 在编辑模式下按”Esc” 即可到一般模式
- 在一般模式下按”:”,冒号进入底行模式。
- 在一般模式下的快捷键
- dd ;删除一整行
- X ;向前删除 等同于windowns系统中的删除键
- x ;向后删除和大写x相反方向
- Ctrl + f ;向后看一页
- Ctrl + b ;向前看一页
- u ;撤销上一步操作
- /word ;向下查找word关键字 输入:n查找下一个,N查找上一个(不管是哪个查找都是全局查找 只不过
- n的方向相反)
- ?log ;向上查找log关键字 输入:n查找上一个,N查找下一个
- :1,90s/redis/Redis/g ;把1-90行的redis替换为Redis。语法n1,n2s/原关键字/新关键字/g,n1
- 代表其实行,n2代表结尾行,g是必须要的
- :0 ;光标移动到第一行
- ;光标移动到最后一行
- :300 ;光标移动到300行,输入多少数字移动到多少行
- :w ;保存
- :w! ;强制保存
- :q ;退出
- :q! ;强制退出
- 5dd ;删除后面5行,打一个参数为自己填写
- 5x ;删除此光标后面5个字符
- d1G ;删除此光标之前的所有
- d0 ;从光标当前位置删除到此行的第一个位置
- yy ;复制
- p ;在光标的下面进行粘贴
- P ;在光标的上门进行粘贴grep (grep :正则表达式)正则表达式,用于字符串的搜索工作(模糊查询)。不懂可以先过
- yum install -y lrzsz 命令(实现win到Linux文件互相简单上传文件)
- tar (解压 压缩 命令)
- ps (process status:进程状态,类似于windows的任务管理器)
- 管道命令的语法:命令1 | 命令2 | 命令3。
- 单独使用:
- grep String test.java ;在test.java文件中查找String的位置,返回整行
- 一般此命令不会单独使用下面列几个常用的命令(地下通过管道命令组合起来使用)
- ps aux|grep java ;查找带java关键字的进程
- ll |grep java ;查找带java关键字的文件夹及文件
- (实际上就是在Linux系统中下载了一个插件)下了了此安装包后就可以实现win系统到linux之间拉文件拉
- 文件
- 等待下载完了就可以输入:
- rz 从win系统中选择文件上传到Linux系统中
- sz 文件名 选择Linux系统的文件复制到win系统中
- 常用的组合命令:
- -z 是否需要用gzip压缩。
- -c 建立一个压缩文件的参数指令(create) –压缩
- -x 解开一个压缩文件的参数指令(extract) –解压
- -v 压缩的过程中显示文件(verbose)
- -f 使用档名,在f之后要立即接档中(file)
- 常用解压参数组合:zxvf
- 常用压缩参数组合:zcvf
- 解压命令:
- tar -zxvf redis-3.2.8.tar.gz ;解压到当前文件夹
- tar -zxvf redis-3.2.8.tar.gz -C /opt/java/ ;解压到指定目录
- 压缩命令:(注意 语法有点反了,我反正每次都搞反)
- tar -zcvf redis-3.2.8.tar.gz redis-3.2.8/ ;语法 tar -zcvf 压缩后的名称 要压缩的
- 文件
- tar -zcvf 压缩后的文件(可指定目录) 要压缩的文件(可指定目录)
- 常用组合:ps -ef 标准的格式查看系统进程
- ps -aux BSD格式查看系统进程
- ps -aux|grep redis BSD格式查看进程名称带有redis的系统进程(常用技巧)
- //显示进程的一些属性,需要了解(ps aux)
- USER //用户名
- PID //进程ID号,用来杀死进程的
- %CPU //进程占用的CPU的百分比
- %MEM //占用内存的的百分比clear 清屏命令。(强迫症患者使用)
- ifconfifig命令
- ping (用于检测与目标的连通性)语法:ping ip地址
- free 命令 (显示系统内存)
- top 命令
- netstat 命令
- VSZ //该进程使用的虚拟內存量(KB)
- RSS //该进程占用的固定內存量(KB)
- STAT //进程的状态
- START //该进程被触发启动时间
- TIME //该进程实际使用CPU运行的时间
- kill 命令用来中止一个进程。(要配合ps命令使用,配合pid关闭进程)
- (ps类似于打开任务管理器,kill类似于关闭进程)
- kill -5 进程的PID ;推荐,和平关闭进程
- kill -9 PID ;不推荐,强制杀死进程
- 用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。(一般是用来查看的,很少更改)
35.Linux 中主要有哪几种内核锁?
36.Linux 中的用户模式和内核模式是什么含意?
37.怎样申请大块内核内存?
38.用户进程间通信主要哪几种方式?
39.通过伙伴系统申请内核内存的函数有哪些?
40.Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)
41.对文件或设备的操作函数保存在那个数据结构中?
42.Linux 中的文件包括哪些?
43.创建进程的系统调用有那些?
44.调用 schedule()进行进程切换的方式有几种?
45.Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
46.进程调度的核心数据结构是哪个?
47.如何加载、卸载一个模块?
48.模块和应用程序分别运行在什么空间?
49.Linux 中的浮点运算由应用程序实现还是内核实现?
50.模块程序能否使用可链接的库函数?
51.TLB 中缓存的是什么内容?
52.Linux 中有哪几种设备?
53.字符设备驱动程序的关键数据结构是哪个?
54.设备驱动程序包括哪些功能函数?
55.如何唯一标识一个设备?
56.Linux 通过什么方式实现系统调用?
57.Linux 软中断和工作队列的作用是什么?
感谢阅读,由于篇幅有限以上面经资料博主已经整理打包好了,这些知识点的导图和问题的答案详解的PDF文档都可以免费分享给大家,点赞收藏文章后,私信【资料】免费领取!