引言:
大家好,我是一菲,在软件测试当中linux 操作系统和Mysql数据库的内容是十分的知识同时也是十分重要的。所以一菲这两天通过查阅资料等其他方式为大家梳理了liunx和Mysql面试题大礼包,我想我真的很用心了,看完这篇文章可能需要10分钟的样子,大家要做好心理准备。
正文:
一. Linux面试题
1.Linux的文件系统目录配置
要遵循FHS规范,规范定义的两级目录规范如下:
/home 每个账号在该目录下都有一个文件夹,进行数据的管理
/usr 有点像windows的program files和winNT结合的目录,主要包括系统的主要程序、本机端额外安装的软件、图形接口所需要的文档、额外的函数库、共享目录与文件等
/bin /usr/bin /usr/local/bin 存放执行挡 如可执行的指令等
/boot 存放linux开机会用到的文件
/dev 存放linux的任何装置和接口设备文档
/etc 存放系统设定文档 如账号密码文件、各种服务的起始档等
/lib /usr/lib /usr/local/lib 系统使用的函数库放置的目录
/mnt /media 是软盘和光盘预设挂载点的地方
/opt 主机额外安装软件所摆放的目录
/proc 该目录是一个虚拟档案系统,他放置的数据都是在内存中,所 以本身不占用任何的硬盘空间
/root 系统管理员的家目录
/sbin /usr/sbin /usr/local/sbin 放置一些只有系统管理员才能动用 的执行指令
/srv 一些服务启动之后,这些服务所需要取用的数据目录
/tmp 让一般使用者或者正在执行的程序暂时放置档案的地方
/var 主要针对系统执行过程中,常态性变动档案放置的目录
文档的路径有:绝对路径 (absolute) 与相对路径 (relative)。
绝对路径为:由根目录 (/) 开始写起的文件名或目录名称
相对路径为相对于目前路径的文件名写法。 ./表示相对当前路径,…/表示相对于上一级目录的路径,代表home目录,account代表当前账号的home目录)
2.文件系统命令
Linux的文件系统采用异步的方式,对文件的修改不会马上写入磁盘,一般可以人为的使用sync命令进行手动的数据同步到磁盘
(1) linux可以挂载很多文件系统,查看命令
cat /proc/filesystems
(2) 查看目录的使用情况命令
df -h //以G为单位查看
df -m //以M为单位查看
3.查看文件或目录大小
du -sh
4.目录的切换命令
cd …
cd ~
cd /home
cd ./home
5.打印当前的路径
pwd
创建目录
mkdir (-m 参数可以预设权限 -p参数可以递归的创建目录)
7.删除目录
rmdir(只能删除空目录)
如果连同内容都删除采用 rm -rf 命令
文档的查询
ls -al
文档的复制
cp src des 若复制文件夹,加上-r参数
10.文件的删除
rm -rf file
文档的移动
mv file desdir
12.文档重命名
mv desdir desdir2
13.取文件名
basename
14.取得路径名
dirname
15.文档内容的查阅
cat -n :显示文件所有内容,-n表示打印行号
16.文件内容的撷取
head tail
head [-n number] file //显示file的前number行
tail [-n number] file //显示ifle的后number行
文件时间
linux的文档有三个时间mtime(修改时间), atime(访问时间),ctime(状态修改时间)
touch命令可以用于创建新文档或者修改linux文档的时间
18.linux文档的搜索
whereis locate(这两者是直接搜索数据库,速度快) find(搜索硬盘,速度较慢,但数据最齐全) which(用来搜索执行挡$Path设置的目录)
which ls
whereis file //找出file的位置
locate file//查找所有目录下的文件
find file//查看当前目录下的所有文件
19.同时显示两个文件的差异
diff -c file1 file2
以并列的方式显示两个文件的差异
diff -y file1 file2
20.文档链接
软连接:源文件消失,目的文件也消失
硬连接: 其中一个修改,另一个也修改,但删除源文件时,目的文件不删除
In file1 file2 //建立file1的链接,命名为file2
In -s file1 file2 //建立file1的软连接
绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
绝对路径: 如/etc/init.d
当前目录和上层目录: ./ …/
主目录: ~/
切换目录: cd
怎么查看当前进程?怎么执行退出?怎么查看当前路径?
查看当前进程: ps 执行退出: exit 查看当前路径: pwd
怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
清屏: clear
退出当前命令: ctrl+c 彻底退出
执行睡眠 : ctrl+z 挂起当前进程
fg 恢复后台
查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分
组及用户名
查看指定帮助: 如 man adduser 这个很全 而且有例子; adduser --help 这个告
诉你一些常用参数; info adduesr;
Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
ls 执行的功能: 列出指定目录中的目录,以及文件
哪些参数以及区别: a 所有文件
l 详细信息,包括大小字节数,可读可写可执行的权限等
建立软链接(快捷方式),以及硬链接的命令。
软链接: ln -s slink source
硬链接: ln link source
26…目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
创建目录: mkdir
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件
复制文件: cp 7. 文件权限修改用什么命令?格式是怎么样的?
文件权限修改: chmod
格式如下:
chmod 751 file 给 file 的属主分配读、写、执行(7)的
权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod =r file 为所有用户分配读权限
chmod a-wx,a+r file
同上例
$ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属主分配读的权限
查看文件内容有哪些命令可以使用?
vi 文件名 #编辑方式查看,可修改 cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容 less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数 head 文件名 #仅查看头部,还可以指定行数
28.随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
写文件命令:vi
29.终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
/dev/tty /dev/null
移动文件用哪个命令?改名用哪个命令?
mv mv
复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
cp cp -r ????
删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
rm rm -r rmdir
Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
“?”可替代单个字符。 ·“*”可替代任意多个字符。 ·方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]
用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
wc 命令 - c 统计字节数。
l 统计行数。 - w 统计字数。
35.Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
grep [stringSTRING] filename grep [^string] filename
36.Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
(1)、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。
(2)、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个
特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
(3)、就绪状态:在 run_queue 队列里的状态 (4)、运行状态:在 run_queue 队列里的状态
(5)、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起
(6)、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉
(7)、退出状态
D 不可中断 Uninterruptible(usually IO) R正在运行,或在队列中的进程
S处于休眠状态 T停止或被追踪 Z 僵尸进程
W 进入内存交换(从内核 2.6 开始无效) X死掉的进程
38.利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
ps -ef (system v 输出) ps -aux bsd 格式输出
ps -ef | grep pid
39.哪个命令专门用来查看后台任务?
job -l
40.终止进程用什么命令? 带什么参数?
kill -9 pid
41.怎么查看系统支持的所有信号?
kill -l
42.搜索文件用什么命令? 格式是怎么样的?
find dir -name “string*”
43.查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
w 用户名称;用户的机器名称或 tty 号;远程主机地址;用户登录系统的时间;空闲时间(作用不大);
附加到 tty(终端)的进程所用的时间(JCPU 时间);当前进程所用时间(PCPU时间);用户当前正在使用的命令.
who 用户名、tty 号、时间日期、主机地址
whoami,id -un 命令用于显示登入的用户名
last 命令可用于显示特定用户登录系统的历史记录(last jason):用户名称;tty 设备号;历史登录时间日期;登出时间日期;总工作时间.
查找自己所在终端信息:who am i
44.使用什么命令查看用过的命令列表?
history
45.使用什么命令查看磁盘使用空间? 空闲空间呢?
df -hl
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot
46.使用什么命令查看网络是否连通?
netstat
47…使用什么命令查看 ip 地址及接口信息?
ifconfig
48.查看各类环境变量用什么命令?
查看所有 env 查看某个,如 home: env $HOME
在这里推荐一个软件测试交流群,QQ:642830685,群中会不定期的分享软件测试资源,测试面试题以及测试行业资讯。大家可以在群中积极技术,还有大佬为你答疑解惑。
二.Mysql面试题
开启MySQL服务
service mysqld start
/init.d/mysqld start
safe_mysql &
关闭mysql****服务
service mysqld stop
/etc/init.d/mysqld stop
mysqladmin -uroot -p123456 shutdown
检测端口是否运行
lsof -i:3306
netstat -tunlp|grep 3306
ss -tulnp|grep 3306
为MySQL设置密码或者修改密码。
方法一
mysqladmin -u root -p123456 password ‘abc123’ #比较常用
方法二(sql语句修改)
update mysql.user set password=password(123456) where user=‘root’ and host=‘localhost’;
flush privileges;
方法三(sql语句修改)
set password=password(‘abc123’);
登陆MySQL数据库。
单实例登陆
mysql -uroot -p123456
多实例登陆
mysql -uroot -p123456 -S /data/3306/mysql.sock
5.查看当前数据库的字符集
mysql> show variables like “%charac%”;
6.查看当前数据库版本
mysql -V
mysql> select version();
查看当前登录的用户。
mysql> select user();
查看T1数据库中有哪儿些表
mysql> use T1;
mysql> show tables;
8.创建GBK字符集的数据库oldboy,并查看已建库完整语句
mysql> create database oldboy default character set gbk;
mysql> show create database oldboy;
创建用户oldboy,使之可以管理数据库oldboy
mysql> grant select,update,insert,delete,alter on oldboy.* to oldboy@‘localhost’ identified by ‘123456’;
10.查看创建的用户oldboy拥有哪些权限
mysql> show grants for oldboy@‘localhost’;
查看当前数据库里有哪些用户
mysql> select user,host from mysql.user;
进入oldboy数据库
mysql> use oldboy();
13… 查看建表结构及表结构的SQL语句
mysql> desc test;
mysql> show create table test\G
mysql> update test set name=‘oldgirl’ where id=1;
在字段name前插入age****字段,类型tinyint(2)
mysql> alter table test add age tinyint(2) after id;
15…不退出数据库,完成备份oldboy数据库
mysql> system mysqldump -uroot -p123456 -B -x -F --events oldboy >/opt/bak.sql
16.删除test表中的所有数据,并查看
mysql> delete from test;
删除表test和oldboy****数据库并查看
mysql> drop table test;
mysql> drop database oldboy;
18.不退出数据库恢复以上删除的数据
mysql> system mysql -uroot -p123456
19.把库表的GBK字符集修改为UTF8
mysql> alter database oldboy default character set utf8;
mysql> alter table test default character set utf8;
把id列设置为主键,在Name****字段上创建普通索引。
mysql> alter table test add primary key(id);
方法一:
mysql> alter table test add index index_name(name);
方法二:
mysql> create index index_name on test(name);
在字段name后插入手机号字段(shouji),类型char(11)。
mysql> alter table test add shouji char(11) after name;
所有字段上插入2条记录(自行设定数据)
mysql> insert into test (id,age,name,shouji) values (‘4’,‘27’,‘wangning’,‘13833573773’);
mysql> insert into test (id,age,name,shouji) values (‘5’,‘30’,‘litao’,‘13833573773’);
在手机字段上对前8个字符创建普通索引
方法一:
mysql> alter table test add index index_shouji(shouji(8));
方法二:
mysql> create index index_shouji on test(shouji(8));
24.1 添加主键索引
mysql> alter table test add primary key id_name(id)
25.查看创建的索引及索引类型等信息。
mysql> show index from test\G
删除Name,shouji****列的索引。
mysql> alter table test drop index index_name;
mysql> alter table test drop index index_shouji;
27对Name列的前6个字符以及手机列的前8个字符组建联合索引。
mysql> create index index_name_shouji on test(name(6),shouji(8));
查询手机号以135开头的,名字为oldboy****的记录(提前插入)。
mysql> select * from test where name=‘oldboy’ and shouji like “135%”;
29.查询上述语句的执行计划(是否使用联合索引等)。
mysql> explain select * from test where name=“oldboy” and shouji like “135%”\G
把test表的引擎改成MyISAM。
mysql> alter table test engine=myisam; #myisam不区分大小写
收回oldboy用户的select****权限。
mysql> revoke select on oldboy.* from oldboy@‘localhost’;
删除oldboy用户。
mysql> drop user oldboy@‘localhost’;
删除oldboy数据库。
mysql> drop database oldboy;
使用mysqladmin关闭数据库。
mysqladmin -uroot -p123456 shutdown
MySQL密码丢了,请找回?
pkill mysql #先关闭mysql服务
使用–skip-grant-tables启动mysql,忽略授权登陆验证
mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables &
mysql #此时再登陆,已经不需要密码了
mysql> update mysql.user set password=password(‘abc123’) where user=‘root’ and host=“localhost”; #设置新的密码
mysql> flush privileges;
mysql -uroot -pabc123 #再次用新设置的密码登陆即可
MySQL运维基础知识面试问答题
36.请解释关系型数据库概念及主要特点?
概念:
关系型数据库是支持采用了关系模型的数据库,简单来说,关系模型就是指二维表模型,而一个关系数据库就是由二维表及其之间的联系所组成的一个数据组织。
特点:
最大的特点就是事务的一致性。
优点:容易理解、使用方便、易于维护、支持SQL。
缺点:
高并发读写需求:网站的用户并发非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
海量数据的高效读写:对于数据量巨大的网站来说,关系型数据库的查询效率非常低。
三.写在最后:
在这里推荐一个我自己创建的软件测试交流群,QQ:642830685,群中会不定期的分享软件测试资源,测试面试题以及行业资讯,大家可以在群中积极交流技术,还有行业大佬为你答疑解惑。