首先自我介绍,介绍了实习的项目
- 实习的项目用到了什么框架?提到spring,kafka,flowable,crane,mysql
- 问:Java我们都说是面向对象,Object有什么常见的方法?提到equals(),hashCode(),toString(),clone()
- 问:什么集合用到equals(),hashCode()?提到HashSet和HashMap等
- 问:HashSet的底层看过吗?
- 问:说一下数据库的索引吧,你了解到的索引是怎么存储的,什么结构呢?追问什么叫覆盖索引?
DELETE FROM table WHERE VID = 10;
,具体是怎么操作的?你能就说怎么加锁的吧,因为执行可能会涉及到底层的逻辑,你就直接说怎么加锁?会锁表吗(索引重建会锁表)?- 问:项目里有用redis吗?提到了分布式锁和热点数据缓存?追问分布式锁的原理?我怎么去判断这个Key什么时候过期呢?
- kafka的怎么处理丢消息呢?kafka的可靠性问题
- 线程的几种状态?
- flowable流程引擎
算法题
一个数组已按 非递减顺序排列,请你从数组中找出满足相加之和等于目标数 target 的两个数
5min秒了
public class TwoSum {
public static int[] findTwoSum(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum == target) {
// 找到满足条件的两个数
return new int[] {nums[left], nums[right]};
} else if (sum < target) {
// 需要更大的数,移动 left 指针
left++;
} else {
// 需要更小的数,移动 right 指针
right--;
}
}
// 如果没有找到,返回 null 或者抛出异常
return null;
}
public static void main(String[] args) {
int[] nums = {2, 7, 11, 15};
int target = 9;
int[] result = findTwoSum(nums, target);
if (result != null) {
System.out.println("找到的两个数是: " + result[0] + " 和 " + result[1]);
} else {
System.out.println("没有找到满足条件的两个数。");
}
}
}
加强难度,问要找到所有的呢?
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class TwoSumAllPairs {
public static List<int[]> findAllTwoSum(int[] nums, int target) {
List<int[]> result = new ArrayList<>();
int left = 0;
int right = nums.length - 1;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum == target) {
result.add(new int[] {nums[left], nums[right]});
// 由于数组已排序,我们可以安全地移动指针寻找其他数对
left++;
right--;
} else if (sum < target) {
left++;
} else {
right--;
}
}
return result;
}
public static void main(String[] args) {
int[] nums = {2, 3, 4, 7, 11, 15};
int target = 9;
List<int[]> result = findAllTwoSum(nums, target);
if (!result.isEmpty()) {
System.out.println("找到的所有满足条件的数对有:");
for (int[] pair : result) {
System.out.println(Arrays.toString(pair));
}
} else {
System.out.println("没有找到满足条件的数对。");
}
}
}
反问:
- 问为什么是全栈开发?不会前端
- 问具体业务?