JAVA面试中常问算法-数组-回型数,杨辉三角,美团优选软件测试面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

for(int i=1;i< arr.length;i ++){

if(minVal > arr[i]){

minVal = arr[i];

}

}

System.out.println(“最小值” + minVal);

//求和

int sum = 0;

for(int i=0;i < arr.length;i ++){

sum += arr[i];

}

System.out.println(“和=” + sum);

//求平均值

int mean=sum / arr.length;

System.out.println(“平均值=” + mean);

}

}

//查看所有随机数34 查看所有随机数46 查看所有随机数85 查看所有随机数71 查看所有随机数33 查看所有随机数30 查看所有随机数65 查看所有随机数79 查看所有随机数17 查看所有随机数25

//最大值85

//最小值17

//和=485

//平均值=48

数组复制

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

  1. 数组赋值不能直接将arr1赋值给arr2,这样只是将arr1的堆区域地址赋给了他,当我们对arr2进行改变时,arr1也会改变

错误示例:

public class copyArryTest7 {

public static void main(String[] args) {

int[] arr1=new int[]{1,6,3,78};

int[] arr2=arr1;

for (int i=0;i< arr2.length;i ++){

if(i %2 == 0){

arr2[i]=i;

}

}

for (int i=0;i < arr1.length; i++){

System.out.print(“arr1值:”);

System.out.print( arr1[i] +“\t”);

}

}

}

//arr1值:0 arr1值:6 arr1值:2 arr1值:78

  1. 正确做法是new出来一个新的,并遍历重新赋值

public class copyArryTest7 {

public static void main(String[] args) {

int[] arr1=new int[]{1,6,3,78};

int[] arr2=new int[arr1.length];

for (int i=0;i< arr1.length;i ++){

arr2[i]=arr1[i];

}

}

}

数组反转

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

  1. 这里反转执行长度为arr1.length / 2,也就是只是一半的交换,如果是arr1.length那么又会换回来

  2. 需要定义一个中间变量暂时进行缓存

public static void main(String[] args) {

String[] arr1=new String[]{“aa”,“bb”,“cc”,“dd”};

for(int i=0; i < arr1.length / 2;i ++){

String temp=arr1[i];//中间变量temp缓存

arr1[i]=arr1[arr1.length - i - 1];

arr1[arr1.length - i -1]=temp;

}

for(int i=0;i < arr1.length;i ++){

System.out.println(arr1[i]);

}

}

}

//dd cc bb aa

查找(普通查找和二分法查找)

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

  1. 普通查找只需遍历所有数组,判断是否相等

  2. 二分法查找有个前提条件,必须是有序列表,每次取中间值进行比较,然后缩减范围

public class findArryTest9 {

public static void main(String[] args) {

int[] arr=new int[]{-6,3,6,9,13};

//普通查找

boolean isFind1=true;

int num=13;

for(int i=0;i < arr.length;i ++){

if(num == arr[i]){

System.out.println(“找到了,位置在” + i);

isFind1=false;

break;

}

}

if(isFind1){

System.out.println(“没找到”);

}

//二分法查找

int num2=13;

int start=0;

int end= arr.length;

boolean isFind2=true;

while(start <= end){

int middle=(start +end) /2;

if(num2 == arr[middle]){

System.out.println(“找到了,位置在” + middle);

isFind2=false;

break;

}else if(num2 > arr[middle]){

start =middle;

}else if(num2 < arr[middle]){

end=middle;

}

}

if(isFind2){

System.out.println(“没找到”);

}

}

}

冒泡排序

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

  1. 两两之间相互比较,大的向后移

  2. 一共执行arr.length-1轮排序

public class sortTest10 {

public static void main(String[] args) {

int[] arr=new int[]{0,4,89,23,-5};

for(int i=0;i < arr.length;i ++){

for(int j=0;j < arr.length - 1 - i;j ++){

if(arr[j] > arr[j + 1]){

int temp=arr[j];

arr[j]=arr[j + 1];

arr[j + 1]=temp;

}

}

}

for (int i = 0;i < arr.length;i ++){

System.out.print(arr[i] + “\t”);

}

}

}

//-5 0 4 23 89

回形数

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

  1. 首先定义最小,最大X轴值,最小,最大y轴值,以及初始值

  2. 首先X1每次值增长到Y轴最大值,然后从这里继续向下增长到X轴最大值,顺着X轴增长到Y轴最小值,然后回到Xmin+1轴位置

public class arrTest5 {

public static void main(String[] args) {

int num=7;

int[][] arr=new int[7][7];

int count=0;//用于显示的起始数据

int maxX=num - 1;//X轴最大下标

int maxY=num - 1;//Y轴最大下标

int minX=0;//X轴最小下标

int minY=0;//Y轴最小下标

while(minX <= maxX){

//X1轴增长到7

for(int x=minX;x<= maxX;x++){

arr[minY][x]=++ count;

}

//就表示X1轴不存在了,下次从X2轴走起

minY++;

//Y7轴增长到13

for(int y=minY;y<=maxY;y++){

arr[y][maxX]=++ count;

}

//Y7轴也就不存在了

maxX–;

//X7轴从右向左增长到19

for(int x=maxX;x >=minX; x–){

arr[maxY][x]=++ count;

}

//X7轴也就不存在了

maxY–;

//Y1轴从下面增长到x2轴到24

for(int y=maxY;y>= minY;y–){

arr[y][minX]=++ count;

}

//Y1轴也就不存在了

minX++;

}

for(int i=0;i<arr.length;i++){

for(int j=0;j<arr.length;j++){

System.out.print(arr[i][j] + " ");

}

System.out.println(" \t");

}

}

}

//1 2 3 4 5 6 7

//24 25 26 27 28 29 8

//23 40 41 42 43 30 9

//22 39 48 49 44 31 10

//21 38 47 46 45 32 11

1200页Java架构面试专题及答案

小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞

百度、字节、美团等大厂常见面试题

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

1200页Java架构面试专题及答案

小编整理不易,对这份1200页Java架构面试专题及答案感兴趣劳烦帮忙转发/点赞

[外链图片转存中…(img-CUk0qp39-1713633108163)]

[外链图片转存中…(img-rrew7tvz-1713633108163)]

百度、字节、美团等大厂常见面试题

[外链图片转存中…(img-70i028j6-1713633108164)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-1jQyxNIX-1713633108164)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值