阿里面试

Posted harsong13

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里面试相关的知识,希望对你有一定的参考价值。

首先,因为经过了笔试,我想面试应该更多的会涉及一些基础问题,再准备了一天基础问题之后,面试官上来就给了一道编程题,一下给我干懵了。

可能也是因为第一次面试,觉得发挥的很差,很多东西都没有想起来,一血给了大厂也是值得了,最起码知道了自己现在最欠缺的是什么,实力还差的远。

题目:输入N个int型数组,输出一个有序数组。(不能调用第三方库)(听起来很简单,但感觉又有不少坑,而且在网页上直接写,没有ide的提示,除了逻辑想法,对基础方法的掌握还有待加强)。

public class Main{
    public static void main(String[] args) {
        int[][] arr = new int[][]{
            {1,2,3},
            {7,6,8},
            {4,6,9},
            {12,18,63},
            {1,96,10003,569}
        };
        int[] newArray = getSort(arr);
        for(int i : newArray) {
            System.out.print(i + " ");
        }
        
    }
    public static int[] getSort(int[][] arr) {
        StringBuilder builder = new StringBuilder();
        for(int k = 0 ; k < arr.length ; k ++) {
            for(int i = 0 ; i < arr[k].length ; i ++) {
                builder.append(arr[k][i] + " ");
            }
        }
        String[] newArr = builder.toString().split(" ");
        
        int[] mArr = new int[newArr.length];
        for(int i = 0 ; i < newArr.length ; i ++) {
            mArr[i] = Integer.parseInt(newArr[i]);
        }
        return sort(mArr);
    }
    public static int[] sort(int[] arr) {
        for(int i = 0 ; i < arr.length ; i ++) {
            for(int k = 0 ; k < arr.length - i - 1 ; k ++) {
                if( arr[k] > arr[k + 1]) {
                    int temp = arr[k + 1];
                    arr[k + 1] = arr[k];
                    arr[k] = temp;
                }
            }
        }
        return arr;
        
    }
}

做的有些繁琐,排序应该没什么问题,用的冒泡排序,主要在合并数组方面还有待改进,希望随着学习的深入可以想出可以更优化的方法吧。

总结一下刚才写代码遇到的坑:

1.下次遇到向数组中添加不确定个元素要优先想到StringBuilder/StringBuffer或者ArrayList(暂时还没有尝试过),面试的时候就死活想不起来,一直纠结在数组的循环怎么设置。

2.StringBuilder中添加元素,元素是一个挨一个的,可以考虑在append的时候加一个空格或者逗号,方便转化为字符串再转化为字符串数组时分割,.split()这个方法印象中有,一直没想起来方法名,而且得到的是字符串数组,还需要转化为int型数组。

3.字符串转换为int型,方法为Integer.parseInt()。

4.冒泡排序第二层循环 i < arr.length - k -1。每次都忘了要多-1。

目前想到的就这么多,需要学习的东西还有很多,继续加油吧。

以上是关于阿里面试的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

前端面试题之手写promise

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试

最新阿里巴巴面试题(附带面试标准答案)

和阿里大牛的技术面谈,万分膜拜!

Java校招面试——非科班 阿里3技术面 2交叉面 1代码面 1HR面 现场揭秘