程序员的50大Linux面试问题及答案(一)

简介: 程序员的50大Linux面试问题及答案(一)

1.什么是Linux?

是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。

2.Linux内核主要负责哪些功能

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理

3.交互方式

控制台终端、图形化终端

4.启动shell

GNU bash shell能提供对linux 系统的交互式访问。作为普通程序运行,通常在用户登陆终端时启动。登录时系统启动的shell依赖与用户账户的配置。

5.bash手册

大多数linux发行版自带以查找shell命令及其他GNU工具信息的在线手册。man命令用来访问linux系统上的手册页面。当用man命令查看手册,使用分页的程序来现实的。

6.登陆后你在的位置?

一般登陆后,你的位置位于自己的主目录中。

7.绝对文件路径?相对文件路径?快捷方式?

绝对文件路径:描述了在虚拟目录结构中该目录的确切位置,以虚拟目录跟目录开始,相当于目录全名。

以正斜线(/)开始,比如 /usr/local。

相对文件路径:允许用户执行一个基于当前位置的目标文件路径。

比如:当前在/usr/local

➜  local ls
Caskroom   Frameworks bin        go         lib        sbin       var
Cellar     Homebrew   etc        include    opt        share
➜  local cd go

快捷方式(在相对路径中使用):

单点符(.) : 表示当前目录; 双点符(…) : 表示当前目录的父目录。

8.迷路,我的当前位置在哪?

pwd 显示当前目录

[root@iz2ze76ybn73dvwmdij06zz local]# pwd
/usr/local

9.如何切换目录?

语法: cd destination

destination : 相对文件路径或绝对文件路径

可以跳到存在的任意目录。

10.如何查看目录中的文件?区分哪些是文件哪些是目录?递归查?

ls 命令会用最基本的形式显示当前目录下的文件和目录:

➜  local ls
Caskroom   Frameworks bin        go         lib        sbin       var
Cellar     Homebrew   etc        include    opt        share

可以看出默认是按照字母序展示的

一般来说,ls命令回显示不同的颜色区分不同的文件类型,如果没有安装颜色插件可以用ls -F来区分哪些是目录(目录带/),哪些是文件(文件不带/)

ls -R 递归展示出目录下以及子目录的文件,目录越多输出越多

11.创建文件?创建目录?批量创建?

创建文件:touch 文件名

批量创建文件: touch 文件名 文件名 …

➜  test touch a
➜  test ls
a
➜  test touch b c
➜  test ls
a b c

创建目录:mkdir 目录名

批量创建目录: mkdir 目录名 目录名 …

➜  test mkdir aa
➜  test mkdir bb cc
➜  test ls
a  aa b  bb c  cc
➜  test ls -F
a   aa/ b   bb/ c   cc/

12.删除文件?强制删除?递归删除?

语法: rm destination

-i 询问是否删除,-r 递归删除,-f 强制删除。

rm不能删除有文件的目录,需要递归删除。

➜  xktest rm jdk
rm: jdk: is a directory
➜  xktest rm -r jdk
➜  xktest ls

rm -i 询问删除,建议大家平时删除多用 -i,确定一下再删除。

➜  xktest touch tomcat
➜  xktest rm -i tomcat
remove tomcat? n

rm -rf 会直接删除,没有警告信息,使用必须谨慎

13.制表符自动补全?

有的时候文件的名字很长,很容易拼出错即使拼写对了也很浪费时间。

➜  xktest ls java*
javaxiaokaxiu

比如操作javaxiaokaxiu这个文件时,输入到java的时候,然后按制表键(tab)就会补全成javaxiaokaxiu,是不是方便多了。

14.复制文件

语法: cp source target

如果target不存在则直接创建,如果存在,默认不会提醒你是否需要覆盖,需要加-i就会询问你是否覆盖,n否y是。

➜  xktest cp a c
➜  xktest cp -i a c
overwrite c? (y/n [n]) y
➜  xktest ls
a c

15.重新命名文件?移动文件?

语法 : mv soucre target

重命名:

➜  xktest ls
➜  xktest touch java
➜  xktest ls
java
➜  xktest mv java java1.8
➜  xktest ls
java1.8

移动文件:

新建jdk目录把java1.8文件移动到jdk目录下。

➜  xktest ls
java1.8
➜  xktest mkdir jdk
➜  xktest mv java1.8 jdk
➜  xktest ls -R
jdk
./jdk:
java1.8

16.什么是链接文件?

如过需要在系统上维护同一文件的两份或者多份副本,除了保存多分单独的物理文件副本之外。还可以采用保存一份物理文件副本和多个虚拟副本的方法,这种虚拟的副本就叫做链接。

17.查看文件类型?字符编码?

语法: file destination

➜  apache file tomcat
tomcat: ASCII text

可以看出,file命令可以显示文件的类型text以及字符编码ASCII

18.查看整个文件?按照有文本显示行号?无文本显示行号?

语法 : cat destination

-n 显示行号,-b 有文本的显示行号。 (默认是不显示行号的)

➜  apache cat -n tomcat
     1  text
     2  text
     3
     4  start
     5  stop
     6  restart
     7  end
➜  apache cat -b tomcat
     1  text
     2  text
     3  start
     4  stop
     5  restart
     6  end

19.查看部分文件

语法 : tail destination

默认情况会展示文件的末尾10行。 -n 行数,显示最后n行。

➜  apache tail -n 2 tomcat
restart
end

语法: head destination

默认情况会展示文件的开头10行。 -n 行数,显示开头n行。

➜  apache head -n 2 tomcat
text
text

20.数据排序?对数字进行排序?对月份排序?

默认情况下,文件的数据展示是按照原顺序展示的。sort命令可以对文本文件中的数据进行排序。sort默认会把数据当成字符处理。

语法: sort destination

sort -n 所以排序数字时需要用-n,它的含义是说当前排序是的数字。

sort -M 比如月份Jan、Feb、Mar,如果希望它按照月份排序,加入-M就会按照月份的大小来排序。

21.查找匹配数据?反向搜?

语法: grep [options] pattern [file]

该命令会查找匹配执行模式的字符串的行,并输出。

➜  apache grep start tomcat
start
restart

-v 反向搜

➜  apache grep -v start tomcat
text
text
stop
end

-n 显示行号

-c 显示匹配的行数

22.压缩工具有哪些?

23.如何压缩文件?如何解压文件?

比如以.gz的格式举例。

压缩语法: gzip destination

➜  apache gzip tomcat
➜  apache ls
tomcat.gz

解压语法: gunzip destination

➜  apache gunzip tomcat.gz
➜  apache ls
tomcat

24.Linux广泛使用的归档数据方法?

虽然zip命令能压缩和解压单个文件,但是更多的时候广泛使用tar命令来做归档。

语法: tar function [options] obj1 obj2

➜  apache tar -cvf service.tar service1 service2 // 创建规定文件service.tar
a service1
a service2
➜  apache tar -tf service.tar //查看文件中的目录内容
service1
service2
➜  apache tar zxvf service.tar //解压
x service1
x service2

25.如何查看命令历史记录?

history 命令可以展示你用的命令的历史记录。

4463  touch service1 service2
 4464  ls
 4465  tar -cvf service.tar service1 service2
 4466  tar -tf service.tar
 4467  tar zxvf service
 4468  tar zxvf service.t
 4469  tar zxvf service.tar
 4470  ls
 4471  tar -zxvf  service.tar
 4472  ls

26.查看已有别名?建立属于自己的别名?

alias -p 查看当前可用别名

[root@iz2ze76ybn73dvwmdij06zz ~]# alias -p
alias cp='cp -i'
alias egrep='egrep —color=auto'
alias fgrep='fgrep —color=auto'
alias grep='grep —color=auto'
alias l.='ls -d .* —color=auto'
alias ll='ls -l —color=auto'

alias li = ‘ls -li’ 创建别名

27.什么是环境变量?

bash shell用一个叫作环境变量(environment variable)的特性来存储有关shell会话和工作环境的信息。这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们。这也是存储持久数据的一种简便方法。

在bash shell中,环境变量分为两类:

全局变量:对于 shell会话和所有生成的子shell都是可见的。 局部变量: 只对创建他们的shell可见。

28.储存用户的文件是?包括哪些信息?

/etc/passwd存储来一些用户有关的信息。

[root@iz2ze76ybn73dvwmdij06zz ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

文件信息包括如下内容。

  • 登录用户名
  • 用户密码
  • 用户账户的UID(数字形式)
  • 用户账户的组ID(GID)(数字形式)
  • 用户账户的文本描述(称为备注字段)
  • 用户HOME目录的位置
  • 用户的默认shell

29.账户默认信息?添加账户?删除用户?

[root@iz2ze76ybn73dvwmdij06zz ~]# useradd -D//查看系统默认创建用户信息
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@iz2ze76ybn73dvwmdij06zz ~]# useradd xiaoka//添加用户
[root@iz2ze76ybn73dvwmdij06zz /]# userdel xiaoka//删除用户

30.查看组信息?如何创建组?删除组?

[root@iz2ze76ybn73dvwmdij06zz ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
[root@iz2ze76ybn73dvwmdij06zz ~]# groupadd java //创建组
[root@iz2ze76ybn73dvwmdij06zz ~]# groupdel java //创建组

31.文件描述符?每个描述符的含义?

[root@iz2ze76ybn73dvwmdij06zz xiaoka]# ls -l
总用量 0
-rw-r—r— 1 root root 0 4月  21 13:17 a
-rw-r—r— 1 root root 0 4月  21 13:17 b
-rw-r—r— 1 root root 0 4月  21 13:17 c
-rw-r—r— 1 root root 0 4月  21 13:17 d
-rw-r—r— 1 root root 0 4月  21 13:17 e

1、文件类型:

  • -代表文件
  • d代表目录
  • l代表链接
  • c代表字符型设备
  • b代表块设备
  • n代表网络设备

2、访问权限符号:

  • r代表对象是可读的
  • w代表对象是可写的
  • x代表对象是可执行的

若没有某种权限,在该权限位会出现单破折线。

3、这3组权限分别对应对象的3个安全级别:

  • 对象的属主
  • 对象的属组
  • 系统其他用户

程序员的50大Linux面试问题及答案(二):https://developer.aliyun.com/article/1416675

相关文章
|
2月前
|
算法 程序员 Go
PHP 程序员学会了 Go 语言就能唬住面试官吗?
【9月更文挑战第8天】学会Go语言可提升PHP程序员的面试印象,但不足以 solely “唬住” 面试官。学习新语言能展现学习能力、拓宽技术视野,并增加就业机会。然而,实际项目经验、深入理解语言特性和综合能力更为关键。全面展示这些方面才能真正提升面试成功率。
56 10
|
3月前
|
Java 程序员 Linux
学校不教,工作需要!!!程序员需要掌握的常见Linux命令,掌握可以让工作效率翻倍!!
这篇文章列出了程序员在Linux环境下提高工作效率所需要掌握的常见命令,包括文件操作、系统监控、网络配置、进程管理等,并提供了一些实用技巧和快捷键。
|
3月前
|
JavaScript 前端开发 小程序
CoderGuide 程序员前后端面试题库,打造全网最高质量题库
CoderGuide涵盖范围包括且不限于:前端面试题(Vue,React,JS,HTTP,HTML,CSS面试题等),后端面试题(Java,Python,Golang,PHP,Linux,Mysql面试题等),以及算法面试题,大厂面试题,高频面试题,校招面试题等,你想要的,这里都有!
65 2
|
3月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
77 8
|
3月前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
64 4
|
4月前
|
Linux 编译器 Shell
拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
在Linux中,程序启动到`main`调用涉及加载器、内核、动态链接器和C运行时。`execve`系统调用加载ELF文件,内核创建进程,加载段,设置栈和调用动态链接器。动态链接器解析符号,重定位,执行初始化。C运行时初始化堆栈,调用`main`。从`_start`到`main`的流程包括环境设置和函数调用。
70 0
|
5月前
|
机器学习/深度学习 关系型数据库 Shell
老程序员分享:Linux之pushd、popd和dirs的使用讲解,比cd
老程序员分享:Linux之pushd、popd和dirs的使用讲解,比cd
42 1
|
4月前
|
存储 Java Linux
Java面试之Linux和docker
Java面试之Linux和docker
43 0
|
5月前
|
开发工具 git Docker
老程序员分享:linux试题
老程序员分享:linux试题
44 0
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。