java面试(三)--(1)volatile(2)String(3)窗口滑动问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/JAVA_I_want/article/details/102471846

1.请你介绍一下volatile?

Volatile是java提供的轻量级同步机制,比sychronized开销要小. 如果要使用 volatile 了,那肯定是在多线程并发的环境下(原子性、可见性、有序性).被volatile定义的变量,系统每次使用到它的时候都是直接从主存中读取,而不是各个线程的工作内存.
volatile适用于多个变量之间或者某个变量当前值和修改之后值之间没有约束。因此,单独使用volatile还不足以实现计数器,互斥锁等

2. 请说明String是最基本的数据类型吗?

String不是基本的数据类型,基本数据类型有8种,分别是: byte char int short long double float Boolean. String属于引用类型,引用数据类型包括类,接口,数组,String就是常用类

3. 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值

例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。

public class Solution {
    public ArrayList<Integer> maxInWindows(int [] num, int size)
    {
        
    }
}

代码:

import java.util.ArrayList;
import java.util.List;

public class Solution {

    public static ArrayList<Integer> maxInWindows(int [] num, int size)
    {
        //存取结果集
        List<Integer> list=new ArrayList<>();
        for(int i=0;i<=num.length-size;i++){
            int max=num[i];
            for(int j=i;j<i+size;j++) {
                if (num[j] > max) {
                    max = num[j];
                } else {
                    continue;
                }
            }
            list.add(max);
        }
        return (ArrayList<Integer>) list;
    }

    public static void main(String[] args) {
        int[] num= new int[]{2, 3, 4, 2, 6, 2, 5, 1};
        int size=3;
        ArrayList<Integer> list = maxInWindows(num, size);
        for (Integer number:list) {
            System.out.println(number);
        }
    }
}


猜你喜欢

转载自blog.csdn.net/JAVA_I_want/article/details/102471846