最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
[root@a test]# sh auto_scp /a1 /a2
root@175.24.20.189’s password:
[root@VM_0_12_centos ~]# ls
a1 a2 test
免密登录
[root@a test]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:l+BheWrW/7HYGue2TlkGWTPW+bstC19H1SIOAgAmJEM root@a
The key’s randomart image is:
±–[RSA 2048]----+
|*Eo… ++|
|.+ . . .+=|
| * o . + +|
| o B + . oo|
| S + . =|
| o . . * |
| + = =|
| @o=o|
| o+X+ |
±—[SHA256]-----+
[root@a .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@175.24.20.189
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/root/.ssh/id_rsa.pub”
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed – if you are prompted now it is to install the new keys
root@175.24.20.189’s password:
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘root@175.24.20.189’”
and check to make sure that only the key(s) you wanted were added.
[root@a .ssh]# ssh 175.24.20.189
Last login: Sun May 24 21:43:32 2020 from 123.162.210.87
While循环企业实例:
IP等信息在一个文件中进行批量传输:
[root@a shell]# cat c.sh
#! /bin/bash
#by 20200524
while read line
do
ip=echo $line |awk '{print $2}'
echo “scp -r /tmp/text.txt root@$ip:/tmp”
done < list.txt
列表信息为:
[root@a shell]# cat list.txt
1 192.168.1.1
2 192.168.1.2
3 192.168.1.3
4 192.168.1.4
实现打印文件内容中的部分内容,并进行操作
[root@a shell]# sh c.sh
scp -r /tmp/text.txt root@192.168.1.1:/tmp
scp -r /tmp/text.txt root@192.168.1.2:/tmp
scp -r /tmp/text.txt root@192.168.1.3:/tmp
scp -r /tmp/text.txt root@192.168.1.4:/tmp
Until循环
这个循环语句用的较少
还是通过一个实例来理解它吧!
[root@a shell]# cat f.sh
#! /bin/bash
a=10
until [[ a -lt 0 ]]
do
echo “$a”
((a–))
done
[root@a shell]# sh f.sh
10
9
8
7
6
5
4
3
2
1
0
=====================================================================
1、case语句简单实例
case语句用来判断,下面这个实例打印了一个菜单列表
语法格式为:
case variable in
option )
cmd
;;
option )
cmd
;;
… )
cmd
;;
- )
cmd
;;
esac
[root@a shell]# cat e.sh
#/bin/bash
case $1 in
apache )
echo “wait install apache server!”
;;
mysql )
echo “wait install mysql server!”
;;
php )
echo “wait install php server!”
;;
- )
echo “input your install server name please!”
;;
esac
[root@a shell]# sh e.sh
input your install server name please!
[root@a shell]# sh e.sh mysql
wait install mysql server!
2、select选择语句和case语句结合使用
select一般用于选择菜单的创建,可以配合ps3来做菜单的打印输出信息。
[root@a shell]# cat e.sh
#/bin/bash
ps3=“select your menu:”
select i in “apache” “mysql” “php”
do
case $i in
apache )
echo “wait install apache server!”
;;
mysql )
echo “wait install mysql server!”
;;
php )
echo “wait install php server!”
;;
- )
echo “input your install server name please!”
;;
esac
done
[root@a shell]# sh e.sh
-
apache
-
mysql
-
php
#? 1
wait install apache server!
#? 2
wait install mysql server!
#? 3
wait install php server!
====================================================================
grep 多用作匹配
sed多用于修改
awk多用于打印特定位置字符
sed命令可以实现不打开文件的情况下对文件内容进行修改
sed的替换命令格式:s/A/B/g 或者知 s#A#B#g 或者 s_A_B_g#。
s 是替代命令. s/表达式/replacement/
空白用t替代。
g(GLOBAL)
g – 全部替代
无g – 只替代每行第一个。
修改文件内容
[root@a shell]# cat a.txt
my name is caq
abc
def
预修改
[root@a shell]# sed ‘s/caq/kebi/g’ a.txt
my name is kebi
abc
def
真实修改(-i,insert)
[root@a shell]# sed -i ‘s/caq/kebi/g’ a.txt
3
对文件内容加上空格
^表示文档开头
$表示行尾
a表示下一行
i表示上一行
p代表打印
&表示添加内容,我后面有个空格就代表在文档开头加上空格,加数字,加符号都是可以的
一般特殊符号要出现必须用转义字符
’ " * ? \ ~ ` ! # $ & |
如下,我想替换\t为空格
我们就可以用转义字符加在\t的前面
caq@C:~/C/code/point$ cat malloc.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *x;
printf(“x value: %p\t,x address: %p\t,*x value:%d\t”,x,&x,*x);
x = (int *)malloc(sizeof(x));
printf(“x value: %p\t,x address: %p\t,*x value:%d\t”,x,&x,*x);
*x = 10;
printf(“x value: %p\t,x address: %p\t,*x value:%d\t”,x,&x,*x);
free(x);
return 0;
}
预替换
caq@C:~/C/code/point$ sed “s:\\t: :g” malloc.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *x;
printf("x value: %p ,x address: %p ,*x value:%d ",x,&x,*x);
x = (int *)malloc(sizeof(x));
printf("x value: %p ,x address: %p ,*x value:%d ",x,&x,*x);
*x = 10;
printf("x value: %p ,x address: %p ,*x value:%d ",x,&x,*x);
free(x);
return 0;
}
加上-i参数真实替换
caq@C:~/C/code/point$ sed -i “s:\\t: :g” malloc.c
再次查看是否替换成功
caq@C:~/C/code/point$ cat malloc.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *x;
printf("x value: %p ,x address: %p ,*x value:%d ",x,&x,*x);
x = (int *)malloc(sizeof(x));
printf("x value: %p ,x address: %p ,*x value:%d ",x,&x,*x);
*x = 10;
printf("x value: %p ,x address: %p ,*x value:%d ",x,&x,*x);
free(x);
return 0;
}
sed实例:
行首添加
[root@a shell]# sed ‘s/^/& /g’ a.txt
my name is kebi
abc
def
[root@a shell]# sed -i ‘s/^/& /g’ a.txt
[root@a shell]# cat a.txt
my name is kebi
abc
def
行尾添加
[root@a shell]# sed ‘s/$/& aaa/g’ a.txt
my name is kebi aaa
abc aaa
def aaa
[root@a shell]# sed -i ‘s/$/& aaa/g’ a.txt
[root@a shell]# cat a.txt
my name is kebi aaa
abc aaa
def aaa
下一行添加内容
先进行匹配,找到my所在行,之后在起一行
[root@a shell]# sed ‘/my/a new line’ a.txt
my name is kebi aaa
new line
abc aaa
def aaa
上一行
[root@a shell]# sed ‘/my/i new line’ a.txt
new line
my name is kebi aaa
abc aaa
def aaa
打印特定一行
[root@a shell]# sed -n ‘/kebi/p’ a.txt
my name is kebi aaa
打印多行
[root@a shell]# sed -n ‘1,3p’ a.txt
my name is kebi aaa
abc aaa
def aaa
对文档进行排序和取最值
[root@a shell]# cat b.txt
#! /bin/bash
2321234123
43214214 34231
524524 4254 2425
4254543 245245
54325
[root@a shell]# cat b.txt |sed ‘s/ /\n/g’|sort -nr|sed -n ‘1p;$p’
2321234123
2425
awk实例:
语法格式:
awk -option ‘{print $n}’
F表示分隔符
打印某一列元素
[root@a shell]# cat a.txt
my name is kebi aaa
[root@a shell]# cat a.txt |awk ‘{print $1}’
my
以:为分隔符打印第一列
[root@a shell]# cat /etc/passwd |awk -F : ‘{print $1}’
root
bin
daemon
…
…
打印网卡IP地址
[root@a shell]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:24:e5:c3 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute ens32
valid_lft forever preferred_lft forever
inet6 fe80::a0b8:9a41:6d1b:7285/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@a shell]# ip a | egrep “inet”|awk ‘{print $2}’|sed -n ‘3p’
192.168.1.10/24
查看根目录使用率
[root@a shell]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.5M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 2.2G 15G 13% /
/dev/sr0 4.4G 4.4G 0 100% /mnt/centos
/dev/sda1 1014M 136M 878M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@a shell]# df -h|grep “/$” |awk ‘{print $5}’|sed s/%//g
13
利用awk增加注解:
[root@a shell]# cat a.txt |awk ‘{print “1:” $NF}’
1:aaa
find案例
mtime为查找时间,-1为今天创建的文件
exec这个参数用于把find命令搜索到的结果交给紧随其后的命令做进一步处理
{}表示前面得到的结果
cmd -exec rm -rf {} \
表示把前面得到的结果删除固定格式
找到某文件,并删除
[root@a shell]# find . -maxdepth 1 -type f -name “*.sh” -mtime -1
./a.sh
[root@a shell]# find . -maxdepth 1 -type f -name “*.sh” -mtime -1 -exec rm -rf {} ;
[root@a shell]# find . -maxdepth 1 -type f -name “*.sh” -mtime -1
xargs同-exec都有这个功能
[root@a tmp]# find . -maxdepth 1 -type f -name “*.txt” -mtime -1 |xargs rm -rf {} ;
[root@a tmp]# ls
找到某文件并复制到指定位置
[root@a shell]# find . -maxdepth 1 -type f -name “*.txt” -mtime -1 -exec cp {} /tmp ;
[root@a shell]# cd /tmp
最后
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
find案例
mtime为查找时间,-1为今天创建的文件
exec这个参数用于把find命令搜索到的结果交给紧随其后的命令做进一步处理
{}表示前面得到的结果
cmd -exec rm -rf {} \
表示把前面得到的结果删除固定格式
找到某文件,并删除
[root@a shell]# find . -maxdepth 1 -type f -name “*.sh” -mtime -1
./a.sh
[root@a shell]# find . -maxdepth 1 -type f -name “*.sh” -mtime -1 -exec rm -rf {} ;
[root@a shell]# find . -maxdepth 1 -type f -name “*.sh” -mtime -1
xargs同-exec都有这个功能
[root@a tmp]# find . -maxdepth 1 -type f -name “*.txt” -mtime -1 |xargs rm -rf {} ;
[root@a tmp]# ls
找到某文件并复制到指定位置
[root@a shell]# find . -maxdepth 1 -type f -name “*.txt” -mtime -1 -exec cp {} /tmp ;
[root@a shell]# cd /tmp
最后
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
[外链图片转存中…(img-PAnNnS9h-1715007127703)]