总结:

第一次笔试,基本都是按照简历问的,第一次就踩坑了Linux命令

SQL题

一张表user_score,字段为user_id,日期,得分,按照每个季度进行取最高者

输出样例为2|2022-Q1|2022-01-02|90,这里的2是user_id,2022-Q1代表第一季度,总共有四个季度,2022-01-02代表取得最高分的日期,90代表最高分;

如果一个季度有最高分的话就输出当前的最高得分的那一条记录,最多输出四条。

写出对应的SQL

打家劫舍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String next = in.next();
String[] strings = next.split(",");
// 从0到i所能收获的最大值为dp[i]
int[] dp = new int[strings.length()];
dp[0] = strings[0];
dp[1] = Math.max(strings[0], strings[1]);
for (int i = 2; i < strings.length(); i++) {
dp[i] = Math.max(dp[i - 2] + strings[i], dp[i - 1]);
}
System.out.println(dp[dp.length - 1]);
}
}

补充的Linux命令知识点

“|” 是什么意思

在Linux或类Unix系统的命令行中,|(管道符号)用于将一个命令的输出传递给另一个命令的输入。在你提到的命令 ps -ef | grep java 中,| 的作用是将 ps -ef 命令的输出传递给 grep java 命令,实现了两个命令之间的数据流通。

netstat

https://www.yiibai.com/linux/netstat.html

Linux netstat命令用于显示网络状态。

利用netstat指令可让你得知整个Linux系统的网络情况。

grep

https://www.yiibai.com/linux/grep.html

Linux grep命令用于查找文件里符合条件的字符串。

top

显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等常用参数

https://www.yiibai.com/linux/top.html

chmod

学习自https://www.yiibai.com/linux/chmod.html

用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

r=4w=2x=1
若要rwx属性则4+2+1=7
若要rw-属性则4+2=6
若要r-x属性则4+1=5

实例1:增加文件所有用户组可执行权限

1
chmod a+x run.py

在给定的chmod a+x run.py命令中,a+x是表示权限更改的一种方式。这是Linux和类Unix系统上用于修改文件权限的命令。

具体而言,a代表”all”,+x表示添加执行权限。这个命令的含义是给所有用户(所有者、组和其他用户)添加执行权限(x)给文件run.py

chmod命令中,可以使用不同的字母和符号来表示权限:

  • u表示文件所有者(user)。
  • g表示文件所属组(group)。
  • o表示其他用户(others)。
  • a表示所有用户(all),即包括u、g、o。

权限的修改操作包括:

  • +表示添加权限。
  • -表示删除权限。
  • =表示设置权限。

在这个例子中,a+x表示给所有用户添加执行权限。这是一种快捷的方式,相当于同时给所有者、组和其他用户添加执行权限。

实例2:同时修改不同用户权限

1
chmod ug+w,o-x run.py

实例3:删除文件权限

命令:

1
chmod a-x run.py

实例4:使用“=”设置权限

命令:

1
chmod u=x run.py

输出:

1
2
3
4
5
6
7
8
9
[yiibai@localhost bin]$ ll
total 0
--w-rw-rw-. 1 yiibai yiibai 0 Feb 17 02:01 run.py
[yiibai@localhost bin]$
[yiibai@localhost bin]$ chmod u=x run.py
[yiibai@localhost bin]$ ll
total 0
---xrw-rw-. 1 yiibai yiibai 0 Feb 17 02:01 run.py
[yiibai@localhost bin]$

说明:撤销原来所有的权限,然后使拥有者具有可读权限

实例5:对一个目录及其子目录所有文件添加权限

命令:

1
2
chmod -R u+x scripts/
Shell

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[yiibai@localhost ~]$ ll scripts/
total 0
-rw-rw-r--. 1 yiibai yiibai 0 Feb 17 02:11 run.exe
-rw-rw-r--. 1 yiibai yiibai 0 Feb 17 02:11 run.pl
-rw-rw-r--. 1 yiibai yiibai 0 Feb 17 02:10 run.py
-rw-rw-r--. 1 yiibai yiibai 0 Feb 17 02:10 run.sh
[yiibai@localhost ~]$ chmod -R u+x scripts/
[yiibai@localhost ~]$ ll scripts/
total 0
-rwxrw-r--. 1 yiibai yiibai 0 Feb 17 02:11 run.exe
-rwxrw-r--. 1 yiibai yiibai 0 Feb 17 02:11 run.pl
-rwxrw-r--. 1 yiibai yiibai 0 Feb 17 02:10 run.py
-rwxrw-r--. 1 yiibai yiibai 0 Feb 17 02:10 run.sh
[yiibai@localhost ~]$
Shell

说明:递归地给test4目录下所有文件和子目录的属主分配权限

find

https://www.yiibai.com/linux/find.html

用于在指定目录下查找文件,并作出相应的处理。

任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

查找当前目录下的以.txt为结尾的文件的命令

1
find . -type f -name "*.txt"

实例1:查找指定时间内修改过的文件

命令:

1
find -atime -2

执行演示及输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
[yiibai@localhost ~]$ find -atime -2
.
./.bash_profile
./.bashrc
./test
./test/log.log
./test/is line 1.
./test/t
./test/t test]$ cat log.log
./test/ping.log
./mylog_link.log
./.lesshst
[yiibai@localhost ~]$

说明:超找48小时内修改过的文件

实例2:根据关键字查找

命令:

1
find . -name "*.log"

执行演示及输出:

1
2
3
4
5
6
7
8
9
10
[yiibai@localhost ~]$ find . -name "*.log"
./test/mylog1.log
./test/mylog2.log
./test/log.log
./test/t test]$ cat log.log
./test/ping.log
./test5/mylog.log
./mylog.log
./mylog_link.log
[yiibai@localhost ~]$

说明:在当前目录查找 以.log结尾的文件。 “. “代表当前目录

实例3:按照目录或文件的权限来查找文件

命令:

1
find /home/yiibai -perm 777

执行演示及输出:

1
2
3
[yiibai@localhost ~]$ find /home/yiibai -perm 777
/home/yiibai/mylog_link.log
[yiibai@localhost ~]$

说明: 查找/opt/soft/test/目录下 权限为 777的文件

实例4:按类型查找

命令:

1
find . -type f -name "*.log"

演示执行及输出:

1
2
3
4
5
6
7
8
9
[yiibai@localhost ~]$ find . -type f -name "*.log"
./test/mylog1.log
./test/mylog2.log
./test/log.log
./test/t test]$ cat log.log
./test/ping.log
./test5/mylog.log
./mylog.log
[yiibai@localhost ~]$

说明:查找当目录,以.log结尾的普通文件

实例5:查找当前所有目录并排序

命令:

1
find . -type d | sort

演示执行及输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[yiibai@localhost ~]$ find . -type d | sort
.
./test
./test1
./test2
./test3
./test3/test4
./test3/test4/test41
./test5
./test5/test3
./test5/test3/test4
./test5/test3/test4/test41
./test-noexists
./test-noexists/test4
./test-noexists/test4/test41

实例6:按大小查找文件

命令:

1
find . -size +1000c -print

演示执行及输出:

1
2
3
4
5
6
[yiibai@localhost ~]$ find . -size +1000c -print
./test/is line 1.
./test/t
./test/t test]$ cat log.log
./test/ping.log
[yiibai@localhost ~]$

说明:查找当前目录大于1K的文件