2025运维工程师面试题1答案

一、逻辑思维能力考核:

问题1:

3个人去投宿,一晚30元三个人每人掏了10元凑够30元交给了老板后来老板说今天优惠只要25元就够了,拿出5元命令服务生退还给他们,服务生偷偷藏起了2元,然后,把剩下的3元钱分给了那三个人,每人分到1元这样,一开始每人掏了10元,现在又退回1元,也就是10 - 1 = 9,每人只花了9元钱,3个人每人9元,3×9 = 27元 + 服务生藏起的2元 = 29元,还有一元钱去了哪里?


问题2:

有10个外形完全一样的小球,其中有一个小球的密度比别的小球大目前你手中只有一个天平,问:最少需要称几次,才能找出这个密度较大的小球


问题3:

有10个外形完全一样的小球,其中有一个小球密度与其他小球不一致目前你手中只有一个天平,问:最少需要称几次,才能找出这个密度与其他小球不一致的小球,并且还要判断出这个小球是重还是轻?


二、Linux应用能力考核:

1、在路径/etc下,创建一个叫做“dir1”的路径

mkdir /etc/dir1

2、在dir1路径下,创建一个文件file1

touch /etc/dir1/file1

3、将file1文件赋权,给读、写权限

chmod u+rw /etc/dir1/file1

4、在file1文件中,输入“hello world!”

echo 'hello world!' >> /etc/dir1/file1 

5、将file1文件,拷贝到/etc/dir2路径下

cp /etc/dir1/file1 /etc/dir2

6、将/etc/dir2路径下的file1文件,file2文件,file3文件合并,生成file文件

cat /etc/dir2/file1 /etc/dir2/file2 /etc/dir2/file3 >/etc/dir2/file

7、显示/etc/dir2路径下的所有文件,并查看每个文件的权限

ll /etc/dir2

8、显示当前的工作路径

pwd

9、将redis - 6.0.5.tar.gz包解压缩

tar -zxvf redis - 6.0.5.tar.gz

10、显示当前所有的java进程

ps -ef | grep java

11、将进程号为“11267”的进程杀死

kill 11267

三、实战测试

问题1:

假设某服务器已经安装JDK1.7.0,以及apache - tomcat - 7.0.33请问:

1.1如何验证jdk是否安装成功?(假设没有成功,是由于环境变量原因)

java -version

1.2如何设置环境变量

vim /etc/profile
export JAVA_HOME=/path/to/jdk
export PATH=$PJAVA_HOME/bin:$PATH

source /etc/profile

1.3通过tomcat部署web项目的方法?(至少说两种)

#第一种:
web项目打包成war包,放到Tomcat的webapps目录下,启动Tomcat会自动解压部署

#第二种:
在Tomcat的conf\Catalina\localhost下创建一个xml文件,配置<Context docBase="项目实际路径" />启动Tomcat即可部署

问题2:

数据库相关操作(基于student表、teacher表、score表、course表,表结构如下)

2.1student表(学生表)

字段:
S_ID(VARCHAR2):学生编号:
S_NAME(VARCHAR2):学生姓名:S_BIRTH(VARCHAR2):生日:
S_SEX(VARCHAR2):性别:
S_IC_ID(VARCHAR2):身份证号:

S_IDS_NAMES_BIRTHS_SEXS_IC_ID
01小明110102199001011619
02小李110104199012211630
03小吴110103199005061222
04小王110104199008061173
05小红110103199112018221
06小杨110109199203014722
07小张110228198907018304
08小赵110111199001201382
09小侯110114199401201677

2.2teacher表(教师表)

字段:
T_ID(VARCHAR2):教师编号
T_NAME(VARCHAR2):教师姓名

T_IDT_NAME
01张三
02李四
03王五

2.3course表(课程表)

字段:
C_ID(VARCHAR2):课程编号;
C_NAME(VARCHAR2):课程名称;
T_ID(VARCHAR2):教师编号

C_IDC_NAMET_ID
01语文02
02数学01
03英语03

2.4score表(成绩表)

字段:
S_ID(VARCHAR2):学生编号;
C_ID(VARCHAR2):课程编号;
S_SCORE(NUMBER):分数

S_IDC_IDS_SCORE
010180
010290
010399
020170
020260
020380
030180
030280
030380
040150
040230
040320
050176
050287
050395
060188
060234
060366
070189
070298
070359
080188
080267
090288
090365

答题:

1. 按照身份证号的规则(从身份证号第7位到第14位表示出生年月日),将学生的出生日期计算出来,以date格式,存储到S_BIRTH字段中

UPDATE student 
SET S_BIRTH = TO_DATE(SUBSTR(S_IC_ID, 7, 8), 'YYYYMMDD');

2. 按照身份证号的规则(倒数第二位如果是单数,则是男生如果是双数,则是女生),将学生的性别计算出来,并存储到S_SEX字段中

UPDATE student 
SET S_SEX = CASE WHEN MOD(TO_NUMBER(SUBSTR(S_IC_ID, -2, 1)), 2) = 1 THEN '男' ELSE '女' END;

3. 查询出生日期在“1990 - 07 - 01”到“1992 - 02 - 01”中的学生

SELECT * 
FROM student 
WHERE S_BIRTH BETWEEN TO_DATE('1990-07-01', 'YYYY-MM-DD') AND TO_DATE('1992-02-01', 'YYYY-MM-DD');

4. 查询每门课程的总成绩以及平均成绩,按课程编码,课程名称,总成绩、平均成绩显示

SELECT c.C_ID, c.C_NAME, SUM(s.S_SCORE) AS total_score, AVG(s.S_SCORE) AS avg_score 
FROM course c 
JOIN score s ON c.C_ID = s.C_ID 
GROUP BY c.C_ID, c.C_NAME;

5. 给教师表,增加一个“T_SALARY”字段,字段要求是浮点数,保留两位小数

ALTER TABLE teacher 
ADD T_SALARY NUMBER(10, 2);

6. 查询“语文”课程的成绩单,要求显示学生编号、学生姓名、成绩分数,并进行排名

SELECT s.S_ID, st.S_NAME, sc.S_SCORE 
FROM score sc 
JOIN student st ON sc.S_ID = st.S_ID J
OIN course c ON sc.C_ID = c.C_ID 
WHERE c.C_NAME = '语文' 
ORDER BY sc.S_SCORE DESC;

7. 查询"语文"课程比"数学"课程成绩高的学生的姓名、身份证号、及课程分数

SELECT st.S_NAME, st.S_IC_ID, sc1.S_SCORE 
FROM student st 
JOIN score sc1 ON st.S_ID = sc1.S_ID 
JOIN course c1 ON sc1.C_ID = c1.C_ID 
JOIN score sc2 ON st.S_ID = sc2.S_ID 
JOIN course c2 ON sc2.C_ID = c2.C_ID 
WHERE c1.C_NAME = '语文' AND c2.C_NAME = '数学' AND sc1.S_SCORE > sc2.S_SCORE;

8. 查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩

SELECT st.S_ID, st.S_NAME, AVG(sc.S_SCORE) AS avg_score 
FROM student st 
JOIN score sc ON st.S_ID = sc.S_ID 
GROUP BY st.S_ID, st.S_NAME 
HAVING AVG(sc.S_SCORE) >= 60;

9. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩

SELECT st.S_ID, st.S_NAME, COUNT(sc.C_ID) AS course_count, SUM(sc.S_SCORE) AS total_score FROM student st 
LEFT JOIN score sc ON st.S_ID = sc.S_ID 
GROUP BY st.S_ID, st.S_NAME;

10. 查询"王"姓老师的数量

SELECT COUNT(*) 
FROM teacher 
WHERE T_NAME LIKE '王%';

11. 查询学过"张三"老师授课的同学的信息

SELECT st.* 
FROM student st 
JOIN score sc ON st.S_ID = sc.S_ID 
JOIN course c ON sc.C_ID = c.C_ID 
JOIN teacher t ON c.T_ID = t.T_ID 
WHERE t.T_NAME = '张三';

12. 查询没学过"李四"老师授课的同学的信息

SELECT * 
FROM student 
WHERE S_ID NOT IN ( 
SELECT DISTINCT S_ID 
FROM score 
JOIN course ON score.C_ID = course.C_ID 
JOIN teacher ON course.T_ID = teacher.T_ID 
WHERE teacher.T_NAME = '李四' 
);

13. 查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息

SELECT st.*
FROM student st
JOIN score sc1 ON st.S_ID = sc1.S_ID AND sc1.C_ID = '01' 
JOIN score sc2 ON st.S_ID = sc2.S_ID AND sc2.C_ID = '02';

14. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

SELECT st.S_ID, st.S_NAME, sc.C_ID, sc.S_SCORE, AVG(sc.S_SCORE) OVER (PARTITION BY st.S_ID) AS avg_score 
FROM student st 
JOIN score sc ON st.S_ID = sc.S_ID 
ORDER BY AVG(sc.S_SCORE) OVER (PARTITION BY st.S_ID) DESC;

15. 查询各科成绩最高分、最低分和平均分:以如下形式显示:

课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
(及格为>=60,中等为:70 - 80,优良为:80 - 90,优秀为:>=90)

SELECT c.C_ID, c.C_NAME,
MAX(sc.S_SCORE) AS max_score,
MIN(sc.S_SCORE) AS min_score,
AVG(sc.S_SCORE) AS avg_score,
SUM(CASE WHEN sc.S_SCORE >= 60 THEN 1 ELSE 0 END) / COUNT(*) * 100 AS pass_rate,
SUM(CASE WHEN sc.S_SCORE >= 70 AND sc.S_SCORE < 80 THEN 1 ELSE 0 END) / COUNT(*) * 100 AS medium_rate,
SUM(CASE WHEN sc.S_SCORE >= 80 AND sc.S_SCORE < 90 THEN 1 ELSE 0 END) / COUNT(*) * 100 AS good_rate,
SUM(CASE WHEN sc.S_SCORE >= 90 THEN 1 ELSE 0 END) / COUNT(*) * 100 AS excellent_rate 
FROM course c 
JOIN score sc ON c.C_ID = sc.C_ID 
GROUP BY c.C_ID, c.C_NAME;
### IT运维工程师常见面试题目与答案 #### 1. 使用Apache Bench (ab) 进行性能测试 对于评估Web服务器的性能,可以使用`ab`工具来模拟并发访问。例如,要模拟10个用户对百度首页发起总共100次请求,可执行如下命令: ```bash ab -n 100 -c 10 https://www.baidu.com/index.htm ``` 这条命令会帮助了解网站在高负载下的表现情况[^2]。 #### 2. 解释什么是DNS以及其工作原理 域名系统(DNS, Domain Name System),用于将人类易读的主机名转换成IP地址。当客户端尝试连接到某个网址时,它首先向最近的DNS服务器发送查询请求;该服务器要么返回所需的信息,要么继续向上游转发直到找到匹配项并最终回应给原始询问者。 #### 3. 如何查看Linux系统的内存使用状况? 可以通过多种方式监控Linux中的RAM利用率,最常用的方法之一就是利用`free`命令加上参数 `-m` 或 `-g` 来显示兆字节(MB)或千兆字节(GB): ```bash free -m ``` 此指令能够提供关于总物理内存、已用空间、可用剩余量等方面的即时数据。 #### 4. 描述SSH协议的作用及特点 安全外壳协议(Secure Shell Protocol, SSH), 是一种加密网络通信协议,在不安全通道上提供了强大的身份验证机制和服务端口转发功能。通过SSH建立起来的安全隧道允许远程登录管理设备而不用担心传输过程被窃听或篡改风险。 #### 5. Linux下如何查找占用磁盘最多的前五个文件夹? 为了找出消耗大量存储资源的具体位置,可以借助于`du`(disk usage) 和 `sort` 命令组合: ```bash du -sh */ | sort -rh | head -n 5 ``` 上述脚本先计算各目录大小(`-s`) 并以人性化单位展示 (`-h`) ,接着按照数值降序排列(`-r`, `-n`)最后只保留排名靠前者(`head -n 5`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值