「Linux面试宝典」:点亮Linux职场之路 (linux面试宝典)

Linux操作系统已经成为当今IT行业中最重要、更受欢迎的操作系统之一。伴随着Linux系统的日益普及,各类涉及Linux系统的工作也变得越来越普遍。因此,掌握Linux操作系统技能成为了一个IT工作者必备的技能之一,而Linux系统相关岗位的招聘大幅增加,比如:Linux开发工程师、运维工程师、Linux系统管理员等。

不同的职位需要掌握不同的Linux技能,而在面试过程中,面试官往往会针对此类问题提问。在这种情况下,如果你有一份《Linux面试宝典》,那么就可以避免很多麻烦。这份面试宝典旨在覆盖真实面试中涉及到的所有问题,以及备选答案的详细实现方法,帮助应聘者迅速获得Linux职业的成功。

下面我们将介绍一些作者认为值得一提的关键点:

1. Linux基础知识

掌握Linux的基础知识是参加Linux面试的重点之一。候选人需要了解诸如Linux文件系统、文件和路径、文件权限等基础知识。同时,记住Linux中的命令也是必须的,比如vim编辑器、grep搜索工具等等。

2. Linux运维技巧

Linux运维是参加Linux面试的另外一个重点。在此方面,候选人需要掌握如何配置服务、备份和恢复等技术。另外,了解如何监视系统、收集日志和诊断故障也非常重要。

3. Shell脚本语言

Linux是一种开放的系统,拥有强大的编程能力。作为一名Linux工程师,开发和维护Shell脚本是必须的。因此,熟悉Shell脚本语言是非常重要的,比如掌握Shell脚本语言中的函数、循环、条件语句等等。

4. 网络安全

网络安全是一个热门话题,尤其是在Linux领域中。因此,在参加Linux面试时,需要了解如何处理网络安全问题。候选人需要掌握如何配置防火墙、如何扫描漏洞、如何应对DDoS攻击等等知识。

在准备前往Linux面试时,尽可能多掌握相关技能是必须的。Linux运维工程师、Linux系统管理员等职位都需要很高的技能水平,而一本《Linux面试宝典》则能帮助你成为面试中的翘楚。记住,不要急于走出面试室,加油,保持自信和乐观的态度,成功的机会就在眼前。

相关问题拓展阅读:

linux认证面试题及答案(5)

0 1 * * * /bin/sh /usr/bin/fileback

.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

  参考答案:(1)之一种方法:

  用户应使用crontab –e 命令创建crontab文件。格式如下:

* * sun cp –r /user/backup /tmp

  (2)第二种方法:

  用户先在自己目录下新建文件file,文件内容如下:

* * sun cp –r /user/backup /tmp

  然后执行 crontab file 使生效。

.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限

  为:读、写、执行;文件所有者所在组的权限为:读、执行。

  参考答案: 建立程序 Pro16如下:

  #!/bin/sh

  i=1

  while

  do

  if ;then

  mkdir -p /userdata/user$i

  chmod 754 /userdata/user$i

  echo “user$i”

  let “i = i + 1” (或i=$(($i+1))

  else

  mkdir /userdata

  mkdir -p /userdata/user$i

  chmod 754 /userdata/user$i

  echo “user$i”

  let “i = i + 1” (或i=$(($i+1))

  fi

  done

  五、多选题

.关于

硬链接

的描述正确的(BE)。

  A 跨

文件系统

B不可以跨文件系统 D可以做目录的连接

  C 为链接文件创建新的i节点 E链接文件的i节点同被链接文件的i节点

.在网站发布用户wang的个人网页时,需要创建用户网页目录,假定用户网页目录戚锋设定为web

  弊察(用户目录在/home目录下),如下描述正确的是(BCE)

  A 存放用户网页租仔茄的

绝对路径

/wang/web B存放用户网页的目录~wang/

  C 存放用户网页的绝对路径/home/wang/web D存放用户网页的绝对路径/home/web

  E 在本机访问用户wang的个人网页的URL地址

.在一台WWW服务器上将

端口号

设定为8000,默认的网页文件index.html,服务器网页的

根目录

/www。在本机访问服务器时,正确的用法是(BDE)

  A 浏览器访问该服务器的URL地址

  B 浏览器访问该服务器的URL地址

  C 浏览器访问该服务器的用户li网页URL地址

  D 浏览器访问该服务器的用户li网页URL地址

  E 浏览器访问该服务器的URL地址localhost:8000/

.在shell编程中关于$2的描述正确的是(CE)

  A 程序后携带了两个位置参数 B 宏替换 C 程序后面携带的第二个位置参数

  D 携带位置参数的个数 E 用$2引用第二个位置参数

.某文件的权限是 – r w x r – – r- -,下面描述正确的是(CD)

  A 文件的权限值是755 B 文件的所有者对文件只有读权 限

  C 文件的权限值是 744 D 其他用户对文件只有读权限 E同组用户对文件只有写权限

.关于OpenSSH的作用的描述正确的是(ACE)

  A

开放源代码

的安全加密程序 B OpenSSH常用于为http协议加密

  C OpenSSH用于提高远程登录访问的安全性 D 它和telnet实用同样的端口号

  E OpenSSH是免费下载的应程序

.关于NFS服务器描述正确的是(BC)

  A 网络中实现Windows系统之间文件系统共享的应用软件

  B 网络中实现Linux系统之间文件系统共享的应用软件

  C 网络中实现Unix系统之间文件系统共享的应用软件

  D 网络中实现Windows系统和Unix之间文件系统共享的应用软件

  E 网络中实现Windows系统和Linux之间文件系统共享的应用软件

.关于sed描述正确的是(ABD)

  A sed 是Linux系统中的流编辑器 B sed 是UNIX系统中的流编辑器

  C sed 网络文件系统的类型

  D 利用管道对标准输入/标准输入的数据进行编辑和组合

  E sed是NFS的

应用程序

.关于限制磁盘限额,描述正确的是(ABD)

  A 使用edquota可以监控系统所有用户使用的磁盘空间,并在接近极限时提示用户

  B 用户组的磁盘限额是用户组内所有用户予设磁盘空间总和

  C 单个用户的磁盘限额就是该用户所在用户组内所有磁盘限额的总合

  D 在Linux系统下限制用户使用的磁盘空间可以使用edquota

  E 用户组的磁盘限额就是该用户组内拥有更大磁盘限额值的用户的磁盘限额

.关于建立系统用户的正确描述是(ABD)

  A 在Linux系统下建立用户使用adduser命令

  B 每个系统用户分别在/etc/passwd和/etc/shadow文件中有一条记录

  C 访问每个用户的工作目录使用命令“cd /

用户名

  D 每个系统用户在默认状态下的工作目录在/home/用户名

  E 每个系统用户在/etc/fstab文件中有一条记录

面试 | Linux 下的动态链接库问题

在 Linux 开发时,我们经常会看到一些形如 .so 的名称出现,其中 so 是 Shared Object 的缩写,即可以共享的目标文件,也就是我们所称为的动态链接库,和在 Windows 下大家玩 游戏 时遇到的 .dll 错误中的文件是一个类型的。

面试中经常会问到以下问题:

库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以作系统载入内存执行。

库有两种:

在一个程序的编译过程中,分为以下几个步骤:

预处理

编译

汇编

链接

。本文中讨论的链接库就是针对最后一个步骤「链接」而言的。

动态库和静态库的区别

左图为静态链接库,右图为动态链接库

对于静态链接库而言在链接阶段,会将汇编生成的「目标文件.o」与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接:

静态链接可以理解为最后生成了一个「单文件免安装绿色版」的程序,优点在于移植的时候只需要移动这一个文件,缺点在于文件体积非常大,为了解决这样的问题,就有了动态链接库。动态链接库在程序编译时并不会被连接到目标代码敬大中,而是在程序运行时才被载入。

动态库连接到系统空间,如果多个程序连接了同一个库,那么只需要一份,优点在于编译程序的时候不会将对应的库文件全部打包在生成的程序中,而是保留了到对应库的链接,缺点就是移植的时候如果只移动了对应的程序没有安装相关的库的话,就会看到类似以下喜闻乐见的结果了。

在 Linux 下一个动态库有y三个不同名字的文件组成:

当程序在内部列出所需要的链亮核竖接库时,仅仅使用 soname。当你创建一个链接库时,使用 real name。安装一个新的链接库时,把它复制到一个DLL文件夹里,然后运行程序 ldconfig。ldconfig 检查氏磨存在的 real name 文件,并且创建指向它符号链接 soname 文件。可能大家比较常见到的有 libsodium 等。

有了上面关于库的一些基础知识之后,我们可以开始尝试创建一个动态库来供程序使用了。

比如我们有一个求更大值的函数 max(int a,int b,int c) ,放在文件 max.c 中文件内容如下:

可以通过:

将其编译为共享库,-fPIC是编译选项,PIC是 Position Independent Code 的缩写,表示要生成位置无关的代码,这是动态库需要的特性; -shared是链接选项,告诉 gcc 生成动态库而不是可执行文件。为了让用户知道我们的动态库中有哪些接口可用,我们需要编写对应的头文件,比如可以写一个 max.h :

设置一个驱动函数来测试我们编写的动态库:

通过 gcc test.c -L. -lmax来生成 a.out,其中-lmax表示要链接 libmax.so,-L.表示搜索要链接的库文件时包含当前路径。

但是这样直接运行的话,会出现一个错误:

由于 Linux 是通过/etc/ld.so.cache文件搜寻要链接的动态库的,而 /etc/ld.so.cache 是 ldconfig 程序读取 /etc/ld.so.conf 文件生成的,本次使用的动态库 libmax.so 并不在对应的目录下,就会导致程序无法找到对应的动态链接库,这样我们的解决方法有二:

小结

​动态链接库是各个系统中的一个重要的组成部分且在 Linux 开发相关领域中尤为重要,也是一个面试的高频考点,除了动态链接库以外,还有以下相关知识也是高频考点,在面试前一定要准备好:

本文作者:Nova Kwok

关于linux面试宝典的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 「Linux面试宝典」:点亮Linux职场之路 (linux面试宝典)