• 面试理论篇二


    关于数组篇

    数组方面


    注:自用

    1,什么是数组?

    数组是⼀种存储多个相同类型数据数据结构,可以通过索引访问和修改数组中的元素。


    2,如何声明和初始化数组?

    声明数组,如:int[] array;

    初始化数组,如:array = new int[5]; 或者 int[] array = {1, 2, 3, 4, 5};


    3,如何获取数组的长度?

    可以使用数组的 length属性 获取数组的长度,例如: int length = array.length;


    4,如何访问数组中的元素?

    可以使用索引来访问数组中的元素,索引从0开始,例如: int element = array[0];


    5,数组有没有固定大小?

    是的,数组在创建时需要指定大小,且大小不可变。


    6,如何遍历数组?

    可以使用循环结构来遍历数组,例如:

    for (int i = 0; i < array.length; i++) {
    
      // 使用array[i]访问元素
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7,数组是否可以存储不同类型的元素?

    不可以,数组只能存储相同类型的元素。


    8,如何查找数组中的最大值和最小值?

    可以使用循环遍历数组,记录最大值和最小值,例如:

    int max = array[0];
    int min = array[0];
    for (int i = 1; i < array.length; i++) {
      if (array[i] > max) {
      max = array[i];
      }
      if (array[i] < min) {
      min = array[i];
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    9,如何对数组进行排序?

    可以使用 Arrays 类的 sort() 方法对数组进行排序,例如: Arrays.sort(array);


    10,如何判断两个数组是否相等?

    可以使用 Arrays 类的 equals() 方法来判断两个数组是否相等,例如:

    boolean isEqual = Arrays.equals(array1, array2);
    
    • 1

    11,如何复制数组?

    可以使用 Arrays 类copyOf()方法System类arraycopy()方法 来复制数组,例如:

    int[] newArray = Arrays.copyOf(array, array.length);
    // 或者使⽤System.arraycopy()
    int[] newArray = new int[array.length];
    System.arraycopy(array, 0, newArray, 0, array.length);
    
    • 1
    • 2
    • 3
    • 4

    12,如何在数组中查找指定元素的索引?

    可以适用循环遍历数组,查找指定元素的索引,例如:

    int target = 5;
    int index = -1;
    for (int i = 0; i < array.length; i++) {
       if (array[i] == target) {
         index = i;
         break;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    13,数组有没有动态调整大小的方法?

    数组的大小在创建时就已经确定,不能动态调整大小。如果需要动态调整大小,可以使用ArrayList 等动态数组


    14,如何将数组转换为字符串输出?

    可以使用Arrays 类toString()方法 将数组转换为字符串,例如:

    String arrayString = Arrays.toString(array);
    
    • 1

    15,数组和集合有何区别?

    数组是⼀种固定大小的数据结构,而集合是动态大小的数据结构。数组可以存储基本数据类型对象,而集合只能存储对象


    16,数组和链表有何区别?

    数组是连续的内存空间,访问元素的速度快,但插入和删除元素的效率较低。链表是非连续的内存空间,插入和删除元素的效率较高但访问元素的速度较慢


    17,如何在数组中添加和删除元素?

    数组的大小不可变无法直接添加和删除元素。但可以通过创建⼀个新的数组,将原数组中的元素复制到新数组中,来实现添加删除操作。


    18,如何统计数组中某个元素出现的次数?

    可以使用循环遍历数组,对比每个元素是否等于目标元素,统计出现的次数,例如:

    int target = 5;
    int count = 0;
    for (int i = 0; i < array.length; i++) {
      if (array[i] == target) {
          count++;
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    19,如何反转数组的顺序?

    可以使用循环遍历数组,定义两个指针在数组的两端交换它们的值逐步向中间靠拢,即可实现数组的反转


    20,数组有没有内置的排序方法?

    是的,如果 数组中的元素 实现了 Comparable 接口,可以直接使用 Arrays 类sort() 方法 对数组进行排序。否则,可以自定义⼀个 Comparator 接口实现类传入sort()方法进行排序。


    21,如何找到数组中的最大值和最小值?

    可以使用⼀个变量来记录当前的最大值和最小值,遍历数组,逐个与当前最大值和最小值进行比较更新

    22,如何判断⼀个数组中是否存在重复的元素?

    可以使用⼀个HashSet来存储 数组中的元素并逐个判断是否已经存在于HashSet中


    23,如何将⼀个数组反转?

    可以使用两个指针⼀个指向数组的首部⼀个指向数组的尾部交换两个指针所指向的元素,并循环进行直到两个指针相遇


    24,如何从⼀个数组中删除指定的元素?

    可以使用两个指针,⼀个指向当前元素,⼀个指向新数组的位置,遍历数组,将不等于指定元素的元素复制到新数组,然后将新数组的长度作为结果返回


    25,如何找到数组中的第K个最大元素?

    可以使用快速选择算法类似于快速排序的思想,通过不断地 划分数组,直到找到第K个最大元素。


    26,如何判断⼀个数组是否为循环数组?

    可以遍历数组,对于每⼀个元素,计算其下⼀个位置的索引,判断元素是否符合循环的条件


    27,如何合并两个有序数组?

    可以使用双指针法,分别从两个数组的开头开始遍历,根据大小关系依次放入新的数组中。


    28,如何找到数组中的三个数,使其和最接近给定的目标值?

    可以先对数组进行排序,然后使用双指针法在排序后的数组中遍历,计算三个数的和目标值的差 的绝对值找到最接近的组合


    29,如何统计数组中出现次数超过⼀半的元素?

    可以使用摩尔投票算法,遍历数组,如果当前计数为0,则将当前元素设为候选元素,否则如果当前元素与候选元素相等,则计数加1,否则计数减1。


    30,如何找到数组中的众数(出现次数最多的元素)?

    可以使用哈希表来统计每个元素出现的次数,然后 遍历哈希表 找到 出现次数最多的元素


  • 相关阅读:
    【数据结构与算法】---OJ链表题来源力扣和牛客
    基于JAVA汽车租赁系统 (Springboot框架) 开题报告
    linux文件权限与目录配置
    建筑施工员证怎么考?报名条件及报考时间是什么?
    国内“惨淡”,国外“飞腾”,腾讯将增持育碧,力争成为最大股东
    关键路径法的“关键”是什么?是项目经理的进度把控能力!
    什么是本地存储的有效期?
    TiO2包覆聚苯乙烯纳米杂化微球/超顺磁性Fe3O4/聚苯乙烯复合微球/纳米TiO2复合粒子的相关性能
    孩子缺乏自信并不可怕,家长正确引导,帮助他们树立强大自信心
    [附源码]Python计算机毕业设计SSM基于H5乡镇疫情防控系统(程序+LW)
  • 原文地址:https://blog.csdn.net/m0_69604107/article/details/133394510