面试官常问的 微服务 问题 21-30
- 21.绝对路径、当前目录、上层目录、主目录分别用什么符号表示?切换目录用什么命令?
- 22.创建和删除目录、创建文件、复制文件分别用什么命令?(重点)
- 23.什么是 Linux 软连接和硬链接?
- 24.Linux 软连接和硬链接的区别(共享目录)?
- 25.简述 raid0 raid1 raid5 三种工作模式的工作原理及特点。
- 26.列举工作中常用的几个 git 命令?
- 27.git 库所在的文件夹中的文件的状态
- 28.Git 状态 untracked 和 not staged 的区别
- 29.Git 提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的?
- 30.你使用过 git stash 命令吗?你一般什么情况下会使用它?
21.绝对路径、当前目录、上层目录、主目录分别用什么符号表示?切换目录用什么命令?
绝对路径:/etc/init.d
当前目录:./
上层目录:../
主目录:~/
切换目录:cd
22.创建和删除目录、创建文件、复制文件分别用什么命令?(重点)
创建目录:mkdir
删除目录:rmdir
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件
复制文件:cp
23.什么是 Linux 软连接和硬链接?
Linux 链接分两种:硬链接(HardLink)、符号链接(SymbolicLink)。
硬连接:指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号, 称为索引节点号(InodeIndex)。在 Linux 中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接:另外一种连接称之为符号连接(SymbolicLink),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上 是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
(运维方面!!!)
24.Linux 软连接和硬链接的区别(共享目录)?
原理上,硬链接和源文件的 inode 节点号相同,两者互为硬链接。软连接和源文件的 inode 节点号不同,进而指向的 block 也不同, 软连接 block 中存放了源文件的路径名。
实际上,硬链接和源文件是同一份文件,而软连接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向。使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接。
(运维方面!!!)
25.简述 raid0 raid1 raid5 三种工作模式的工作原理及特点。
RAID:可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据。还有一个大功能,多块盘放在一起可以有冗余(备份) RAID 整合方式有很多,常用的:01510。
RAID0:可以是一块盘和 N 个盘组合,其优点读写快,是 RAID 中最好的。缺点:没有冗余,一块坏了数据就全没有了。
RAID1:只能 2 块盘,盘的大小可以不一样,以小的为准。10G+10G 只有 10G,另一个做备份。它有 100%的冗余,缺点:浪费资 源,成本高。
RAID5:3 块盘,容量计算 10*(n-1),损失一块盘。特点,读写性能一般,读还好一点,写不好
冗余从好到坏:RAID1RAID10RAID5RAID0
性能从好到坏:RAID0RAID10RAID5RAID1
成本从低到高:RAID0RAID5RAID1RAID10
单台服务器:很重要盘不多,系统盘,RAID1 数据库服务器:主库:RAID10 从库 RAID5RAID0(为了维护成本,RAID10) WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)有多台,监控、应用服务器,RAID0RAID5。
(运维方面!!!)
26.列举工作中常用的几个 git 命令?
Git 的最大优势:去中心化
新增文件的命令:git add file 或者 git add.
提交文件的命令:git commit –m 或者 git commit –a
查看工作区状况:git status –s
拉取合并远程分支的操作:git fetch / git merge 或者 git pull
查看提交记录命令:git ref log
27.git 库所在的文件夹中的文件的状态
1)Untracked: 未跟踪,此文件在文件夹中,但并没有加入到 git 库,不参与版本控制,通过 gitadd 状态变为 Staged。
2)Unmodify: 文件已经入库, 未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改,而变为 Modified,如果使用 git``rm``移出版本库,则成为 Untracked 文件。
3)Modified: 文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过 gitadd 可进入暂存 staged 状态,使用 gitcheckout 则丢弃修改过,返回到 unmodify 状态,这个 gitcheckout 即从库中取出文件,覆盖当前修改。
4)Staged: 暂存状态,执行 gitcommit 则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为 Unmodify 状态,执行gitresetHEADfilename 取消暂存,文件状态为 Modified。
28.Git 状态 untracked 和 not staged 的区别
1)untrack:表示是新文件,没有被 add 过,是未跟踪的意思。
2)notstaged:表示 add 过的文件,即跟踪文件,再次修改没有 add,就是没有暂存的意思
29.Git 提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的?
开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。
发生冲突,在 IDE 里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提 交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。
发生冲突,也可以使用命令。 通过 gitstash 命令,把工作区的修改提交到栈区,目的是保存工作区的修改; 通过 gitpull 命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突; 通过 gitstashpop 命令,把保存在栈区的修改部分合并到最新的工作空间中;
30.你使用过 git stash 命令吗?你一般什么情况下会使用它?
命令 git stash 是把工作区修改的内容存储在栈区。
以下几种情况会使用到它:
1、 解决冲突文件时,会先执行 gitstash,然后解决冲突;
2、有紧急开发任务但目前任务不能提交时,会先执行 gitstash,然后进行紧急任务的开发,然后通过 gits tash pop 取出栈区的内容继续开发;
3、 切换分支时,当前工作空间内容不能提交时,会先执行 gitstash 再进行分支切换;