2024年Shell脚本基础及常用的四剑客,Javaweb面试问题大全及答案大全

本文分享了全面的Java面试题集锦,涵盖Dubbo、JVM等20个主题,以及shell脚本实例,如while、until循环、选择结构和常用工具如grep、awk、find的实战应用。此外,还包括分布式技术相关的内容和学习资源链接。
摘要由CSDN通过智能技术生成

最后

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:

Dubbo面试专题

JVM面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Java并发面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Kafka面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MongDB面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MyBatis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MySQL面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Netty面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

RabbitMQ面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Redis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Spring Cloud面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

SpringBoot面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

zookeeper面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

常见面试算法题汇总专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

计算机网络基础专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

设计模式专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

[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循环


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循环


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

四、选择语句

=====================================================================

case语句


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

  1. apache

  2. mysql

  3. php

#? 1

wait install apache server!

#? 2

wait install mysql server!

#? 3

wait install php server!

五、四剑客

====================================================================

grep


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代表打印

&表示添加内容,我后面有个空格就代表在文档开头加上空格,加数字,加符号都是可以的

sed


一般特殊符号要出现必须用转义字符

’ " * ? \ ~ ` ! # $ & |

如下,我想替换\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实例:

语法格式:

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


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笔记分享如下:

image

本文已被CODING开源项目:【一线大厂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)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值