当前位置: 首页 > 面试经验 >

2023暑假实习拼多多买菜后端面试题java

优质
小牛编辑
135浏览
2023-03-28

2023暑假实习拼多多买菜后端面试题java

1旋转打印,生成旋转数组

1~25

打印

1 2 3 4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

典型模拟题,两个方向数组,遇到边界或有的值换方向;当时错想用打印的那个数/n%4然后定位到方向里换,不对,只能打印最外圈,数组越界,下来换思路只看是否越界或者有数就换方向就可以,但是要保存之前的值,代码如下:

import java.util.*;
public class Main {
private static void printArray(int n){
int[] dir_x=new int[]{0,1,0,-1};
int[] dir_y=new int[]{1,0,-1,0};
int[][] res=new int[n][n];
int i=1;
int x=0;
int y=0;
int t=0;
while(true){
System.out.println(Arrays.deepToString(res));
System.out.println("/////");

res[x][y]=i;
int q=x;
int w=y;
x+=dir_x[t];
y+=dir_y[t];
//换向检查、短路计算、返回上一个状态再前进
if(x<0 ||y<0 || x>=n || y>=n||res[x][y]!=0){
t++;
t=t%4;
x=q+dir_x[t];
y=w+dir_y[t];
}
if(i==n*n){
break;
}
i++;
}
for(int k=0;k<n;k++){
for(int j=0;j<n;j++){
System.out.print(res[k][j]);
if(j!=n-1){
System.out.print(" ");
}
}
System.out.println();
}
return;
}

public static void main(String[] args) {
printArray(5);
return;
}
}

2.智力题,赛马

64马,8跑道,找前四

前8场:8组跑

留下每组前4;剩32个

第九场:每组前1跑

去掉后成绩四的所有马,剩16个

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

假设竖方向是前8场的结果,第一排横方向是第九场结果剩余结果

根据推理 14 11 8 12 15 16一定不会是前4

因为1 2 3 7一定比11快

1 2 3 4

5 6 7

9 10

13

1一定是第一,剩下9个两场一定可以出来前一场随便找8个,后一场把剩余的一个与前4跑就可以

答案11场

其他的就是问项目了,智力题主要是分治加回溯?每组必须前四,因为没法判断不同组之间的相对顺序;

其他就是问项目了

#拼多多面经##我的实习求职记录##我的失利项目复盘##2023实习##拼多多暑假实习面经#
 类似资料: