2023暑假實習拼多多買菜后端面試題java
1旋轉(zhuǎn)打印,生成旋轉(zhuǎn)數(shù)組
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
典型模擬題,兩個方向數(shù)組,遇到邊界或有的值換方向;當時錯想用打印的那個數(shù)/n%4然后定位到方向里換,不對,只能打印最外圈,數(shù)組越界,下來換思路只看是否越界或者有數(shù)就換方向就可以,但是要保存之前的值,代碼如下:
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]; //換向檢查、短路計算、返回上一個狀態(tài)再前進 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
假設(shè)豎方向是前8場的結(jié)果,第一排橫方向是第九場結(jié)果剩余結(jié)果
根據(jù)推理 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場
其他的就是問項目了,智力題主要是分治加回溯?每組必須前四,因為沒法判斷不同組之間的相對順序;
其他就是問項目了
#拼多多面經(jīng)##我的實習求職記錄##我的失利項目復(fù)盤##2023實習##拼多多暑假實習面經(jīng)#