某金融机构测试开发笔试题

一、Linux 笔试题

1、什么是符号链接?如何创建符号链接?

软连接 ln -sv target_name link_name

符号链接(Symbolic Link),也被称为软链接(Soft Link),是一种在文件系统中创建的特殊文件。它可以指向另一个文件或目录,类似于Windows系统中的快捷方式。通过符号链接,我们可以在不改变路径结构的情况下,引用或访问其他文件或目录。

与物理硬链接不同,符号链接是通过文件名来引用目标文件或目录的。符号链接文件本身只包含了指向目标文件或目录的路径信息。当我们打开或访问符号链接文件时,操作系统会根据路径信息找到对应的目标文件或目录,并执行相应的操作。

需要注意的是,删除符号链接文件并不会删除目标文件或目录,也不会影响目标文件或目录的访问权限。而且,如果目标文件或目录被删除或移动,符号链接将失效,无法正常访问目标文件或目录。

符号链接在很多情况下都非常有用,例如:

  • 创建指向共享库或动态链接库的符号链接,方便程序引用。
  • 创建备份文件,将原文件的符号链接指向备份文件,以便在需要恢复时替换回原文件。
  • 在不同位置创建相同文件的符号链接,以便在不同的目录中使用。
  • 在文件系统中创建快捷方式或别名,方便快速访问目标文件或目录。

 

2、环境变量是什么?如何理解进程与环境变量的关系?

 

环境变量是操作系统中用于存储和传递配置信息的一种机制。它们是一组键值对,每个键值对表示了一个特定的配置项,比如路径、语言、时区等。环境变量可以在不同的应用程序之间共享,方便地控制程序的行为。

进程是计算机系统中正在运行的一个程序。每个进程都有自己的独立运行环境,并且可以独立地设置和使用环境变量。进程可以通过环境变量来获取系统的配置信息、获取其他进程的信息,也可以通过设置环境变量来影响自己的行为。

进程与环境变量之间的关系在于,进程可以通过读取环境变量来获取系统的配置信息,例如获取操作系统的语言设置、获取系统路径等。进程还可以通过设置环境变量来影响其自身的行为,例如设置一个特定的路径来指定程序所需的文件位置。

总而言之,进程与环境变量之间是一种相互作用的关系,进程可以使用环境变量来访问系统的配置信息,并且可以通过设置环境变量来影响自己的行为。

3、如何查看文件的权限?文件权限信息的具体含义是什么?

  a.ls -la 文件所在目录。

  b.在 Linux 中,每个文件和目录都有相应的权限设置,用于确定哪些用户或组可以对其进行访问、读取、写入或执行操作。文件权限定义了对文件的访问级别,确保只有经过授权的用户才能对文件进行操作,从而提高系统的安全性。

文件权限的表示方式

在 Linux 中,文件权限用一串字符来表示,共有 10 个字符,可以分为四个部分:文件类型、用户权限、组权限和其他权限。

文件权限的表示方式如下:

- rwxrwxrwx

其中,每个字符的含义如下:

  • 第一个字符表示文件类型。常见的文件类型包括 -(普通文件)和 d(目录)。
  • 后面的三个字符表示用户权限,即文件所有者对文件的权限。
  • 接下来的三个字符表示组权限,即文件所属组的用户对文件的权限。
  • 最后的三个字符表示其他权限,即其他用户对文件的权限。

每个权限字符可以是以下四个字符之一:

  • r(读取):允许读取文件内容、查看目录内容。
  • w(写入):允许修改文件内容、在该目录中创建、删除文件。
  • x(执行):对于文件,允许执行文件;对于目录,允许进入该目录。
  • -(无权限):表示没有相应的权限。

理解文件权限

文件权限可以分为三个部分:用户权限、组权限和其他权限。下面将对每个部分进行详细说明。

用户权限

用户权限指的是文件的所有者对文件的权限。文件的所有者可以是系统中的任何用户。以下是用户权限的字符表示:

  • r(读取):允许所有者读取文件内容或查看目录内容。
  • w(写入):允许所有者修改文件内容或在目录中创建、删除文件。
  • x(执行):对于文件,允许所有者执行文件;对于目录,允许所有者进入该目录。
  • -(无权限):表示没有相应的权限。

组权限

组权限指的是文件所属组中的用户对文件的权限。每个文件都会关联一个所属组。以下是组权限的字符表示:

  • r(读取):允许组成员读取文件内容或查看目录内容。
  • w(写入):允许组成员修改文件内容或在目录中创建、删除文件。
  • x(执行):对于文件,允许组成员执行文件;对于目录,允许组成员进入该目录。
  • -(无权限):表示没有相应的权限。

其他权限

其他权限指的是不属于文件所有者和所属组的用户对文件的权限。以下是其他权限的字符表示:

  • r(读取):允许其他用户读取文件内容或查看目录内容。
  • w(写入):允许其他用户修改文件内容或在目录中创建、删除文件。
  • x(执行):对于文件,允许其他用户执行文件;对于目录,允许其他用户进入该目录。
  • -(无权限):表示没有相应的权限。

4、如何查看一个进程是否存在?如何杀掉一个进程?

"ps aux | grep <进程名称>"

"kill <进程ID>"

5、如何将进程放到后台执行并且重定向标准输出与错误输出?

(重定向 ls > 1.txt 把命令返回的结果输出到文件中,会覆盖之前的数据,默认情况命令返回的结果是显示在屏幕中

ls>>1.txt 把命令返回的结果输出到文件中,追加的方式。)

在 Linux 中,你可以使用以下方法将进程放到后台执行并重定向标准输出和错误输出:

  1. 使用 “&” 符号将进程放到后台执行:
$ command > output.txt 2> error.txt &

这将会将进程的标准输出重定向到 “output.txt” 文件中,将错误输出重定向到 “error.txt” 文件中,并将进程放到后台执行。

  1. 使用 nohup 命令使进程在后台执行,同时重定向输出:
$ nohup command > output.txt 2> error.txt &

这将会将进程的标准输出重定向到 “output.txt” 文件中,将错误输出重定向到 “error.txt” 文件中,并使进程在后台持续执行。

另外,如果你想让进程在后台执行,并且不会受到终端关闭的影响,可以考虑使用以下命令:

$ nohup command > output.txt 2>&1 </dev/null &

这会将进程的标准输出和错误输出都重定向到 “output.txt” 文件中,并将输入重定向到 /dev/null,以确保进程不会受到终端关闭的影响。

 

二、数据库

数据库中有3张表,分别为:

学生表student(id,name,age), id 自增;

课程表course(id name), id自增;

成绩表grade(sid, cid, score)。sid为学生id、 cid为课程id、 score为分数。

1)请写出student表的建表语句。
2)统计课程"高等数学”分数大于60的学生个数。
3查询所有学生的姓名、选课数、总成绩。
4)请写SQL语句查询所有学生的姓名、课程名、课程分数,按课程分类并按分数降序排序。
5统计每门课程超过60分的学生的比例,按照“课程名称,通过率”的格式显示。
6列出平均成绩排行榜,按照“学生姓名,平均成绩”的格式显示。

答案:

# 1)请写出student表的建表语句。
DROP TABLE if EXISTS student;
CREATE TABLE student(
id INT PRIMARY KEY auto_increment,
name VARCHAR(10),
age INT
);
INSERT INTO student VALUES(14101, '张三三',13),(14102,'李思思',16),(14103,'赵五五',13),(14104,'马明明',12);

DROP TABLE if EXISTS course;
CREATE TABLE course(
id INT PRIMARY KEY auto_increment,
name VARCHAR(10)
);
INSERT INTO course VALUES(1,'高数'),(2,'英语'),(3,'政治'),(4,'语文');

DROP TABLE if EXISTS grade;
CREATE TABLE grade(
sid INT,
cid INT,
score INT
);
INSERT INTO grade VALUES(14101,1,100),(14101,2,60),(14101,3,70),(14101,4,80);
INSERT INTO grade VALUES(14102,1,100),(14102,2,64),(14102,3,77),(14102,4,40);
INSERT INTO grade VALUES(14103,1,53),(14103,2,84),(14103,3,75),(14103,4,46);
INSERT INTO grade VALUES(14104,1,73),(14104,2,94),(14104,3,76),(14104,4,43);
# 2)统计课程"高等数学”分数大于60的学生个数。
# where 是对 from 后面指定的表进行筛选,属于对原始数据的筛选。WHERE 后面的条件不可以使用聚合函数。
SELECT count(*) as num from grade g INNER JOIN course c on g.cid = c.id WHERE g.score >= 60 AND c.`name` = '高等数学';
# 3)查询所有学生的姓名、选课数、总成绩。
SELECT student.name,SUM(grade.score) as total,COUNT(grade.cid) as courses FROM student RIGHT JOIN grade ON student.id = grade.sid GROUP BY student.id;
# 4)请写SQL语句查询所有学生的姓名、课程名、课程分数,按课程分类并按分数降序排序。

SELECT s.name, c.name AS course_name, g.score
FROM student s
INNER JOIN grade g ON s.id = g.sid
INNER JOIN course c ON g.cid = c.id
ORDER BY c.name, g.score DESC;

 5) 统计每门课程超过60分的学生的比例,按照“课程名称,通过率”的格式显示。

SELECT c.name AS course_name, CONCAT(ROUND(COUNT(g.sid) / (SELECT COUNT(*) FROM student) * 100, 2), '%') AS pass_rate
FROM course c
LEFT JOIN grade g ON c.id = g.cid
WHERE g.score > 60
GROUP BY c.name;

6)列出平均成绩排行榜,按照“学生姓名,平均成绩”的格式显示。

SELECT s.name AS student_name, ROUND(AVG(g.score), 2) AS average_score
FROM student s
LEFT JOIN grade g ON s.id = g.sid
GROUP BY s.id
ORDER BY average_score DESC;

三、python

1、请用python语言写一个函数,输入文本文件路径,输出文件中的单词个数,文件中单词以空格分隔。

2、请用python语言编写一个函数,输入18位身份证号,输出出生“年/月/日”。

3、请简单描述一下什么是generator(生成器),并用python语言编写一个生成器,输入整数序列,过滤出其中的偶数。

 生成器只能迭代一次。

posted @   好好吃饭--  阅读(29)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示