Skip to main content

minimax一面8.15

·142 words·1 min
WFUing
Author
WFUing
A graduate who loves coding.

先是自我介绍

介绍了实习的项目

问项目相关:

  1. 你们的项目是重构了之前的项目,那有做什么优化?
  2. 在上线的时候怎么做老服务跟新服务的区分

问mysql

  1. 问聚簇索引跟非聚簇索引的区别?回表是什么情况?什么时候会回表?非聚簇索引一定会回表吗?索引什么时候会失效?你知道自增id有时候有影响吗?
  2. 三个log binlog、undolog、redolog的区别
  3. 快速读跟当前读的区别?
  4. 数据库集群怎么主从同步?

问redis

  1. 项目里有没有用到过redis?
  2. redis有几种集群?
  3. redis的一致性问题?

算法题

一个数组 nums 和一个目标值 k ,计算数组中和为 k 的连续子数组的个数 
nums = [1,2,3], k = 3, result = 2
nums非递增,有正有负

解答

import java.util.*;

public class SubarraySumEqualsK {
    public static int subarraySumEqualsK(int[] nums, int k) {
        int count = 0;
        int sum = 0;
        Map<Integer, Integer> prefixSumMap = new HashMap<>();
        prefixSumMap.put(0, 1); // 初始化为1,因为空子数组的和为0

        for (int i = 0; i < nums.length; i++) {
            sum += nums[i]; // 计算当前的前缀和
            if (prefixSumMap.containsKey(sum - k)) {
                count += prefixSumMap.get(sum - k);
            }
            // 将当前的前缀和存入映射表,如果之前没有出现过
            prefixSumMap.put(sum, prefixSumMap.getOrDefault(sum, 0) + 1);
        }
        
        return count;
    }

    public static void main(String[] args) {
        int[] nums = {1, -1, 1, 2, 3};
        int k = 3;
        int result = subarraySumEqualsK(nums, k);
        System.out.println("Number of subarrays with sum " + k + " is: " + result);
    }
}

💬评论