Java开发工程师
约 537 字大约 2 分钟
Java开发工程师
岗位年限:
1+
面试时间:
2023年11月16日16点
面试方式:
线上
面试问题:
有几个没听过的东西记不住了
序号 | 问题 | 解答 | 备注 |
---|---|---|---|
1 | 最近的项目遇到哪些问题 | 刚拿到的时候主要是业务流程不太明确 | |
2 | 用过多线程吗 | 没 | |
3 | 线程池 | 只知道是一个管理多个线程的东西 | |
4 | HashMap | 存储键值对、key不为空 | |
5 | List、Set、Map区别 | PDF中的 | |
6 | redis怎么用 | 在频繁访问数据库的时候使用 | |
7 | SpringSecurity了解 | 主要做权限认证和授权 | |
8 | 说说了解的AOP和IOC | PDF中的 | |
9 | 如果让让你设计一个抢购,应该怎么设计? | 细问了以下让我说1000个人抢100台手机会有什么问题,说了一些锁定的问题 | |
10 | 用过一些中间键吗,说了一些没听过的东西 | 没 |
手撕代码
5.2.1 题目描述
给定一个二维的0-1矩阵,其中0表示海洋,1表示陆地。单独的或相邻的陆地可以形成岛屿,每个格子只与其上下左右四个格子相邻。求最大的岛屿面积。
5.2.2 输入输出样例
输入是一个二数组,输出是一个整数,表示最大的岛屿面积。
Input:
[[1,0,1,1,0,1,0,1],
[1,0,1,1,0,1,1,1],
[0,0,0,0,0,0,0,1]]
Output: 6
最大岛屿面积为6,位置最右侧
import java.util.*;
public class Main {
public static void main(String[] args){
int[][] arr = {{1,0,1,1,0,1,0,1},{1,0,1,1,0,1,1,1},{0,0,0,0,0,0,0,1}};
System.out.print(text(arr));
}
static int cur = 0;
public static int text(int[][] arr) {
int maxArea = 0;
//遍历岛屿
for(int i = 0; i<arr.length;i++){
for(int j = 0; j<arr[i].length;j++){
if (arr[i][j] == 1){
cur = 0;
area(arr,i,j);
maxArea = Math.max(cur,maxArea);
}
}
}
return maxArea;
}
public static void area(int[][] arr,int i,int j){
if(i<0||j<0||i>arr.length-1||j>arr[i].length-1){
return;
}
if(arr[i][j] == 0||arr[i][j] == 2){
return;
}
arr[i][j] = 2;
cur++;
area(arr,i+1,j);
area(arr,i-1,j);
area(arr,i,j+1);
area(arr,i,j-1);
}
}