阿里巴巴技术岗位笔试&面试题-第七篇

说在前面

本篇文章是阿里技术面试题目汇总第七篇
后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。
欢迎大家点赞关注转发。

题目1:给定一个整数数组和一个整数,返回两个数组的索引,这两个索引指向的数字的加和等于指定的整数。需要最优的算法,分析算法的空间和时间复杂度

参考答案

public int[] twoSum(int[] nums, int target) {
    if(nums==null || nums.length<2)
        return new int[]{0,0};
 
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    for(int i=0; i<nums.length; i++){
        if(map.containsKey(nums[i])){
            return new int[]{map.get(nums[i]), i};
        }else{
            map.put(target-nums[i], i);
        }
    }
 
    return new int[]{0,0};
}

分析:空间复杂度和时间复杂度均为 O(n)

题目2:假如给你一个新产品,你将从哪些方面来保障它的质量?

出题人:阿里巴巴出题专家:晨晖 /阿里云中间件技术部测试开发专家

参考答案

可以从代码开发、测试保障、线上质量三个方面来保障。

在代码开发阶段,有单元测试、代码Review、静态代码扫描等;

测试保障阶段,有功能测试、性能测试、高可用测试、稳定性测试、兼容性测试等;

在线上质量方面,有灰度发布、紧急回滚、故障演练、线上监控和巡检等。

题目3:请评估一下程序的执行结果?

public class SynchronousQueueQuiz {
    public static void main(String[] args) throws Exception {
        BlockingQueue<Integer> queue = new
        SynchronousQueue<>();
        System. out .print(queue.offer(1) + " ");
        System. out .print(queue.offer(2) + " ");
        System. out .print(queue.offer(3) + " ");
        System. out .print(queue.take() + " ");
        System. out .println(queue.size());
    }
}

A. true true true 1 3

B. true true true (阻塞)

C. false false false null 0

D. false false false (阻塞)

出题人:阿里巴巴出题专家:桃谷/阿里云中间件技术专家

参考答案:D

题目4:如何测试一辆自行车

出题人:阿里巴巴新零售技术质量部

参考答案

开放性问题,如果联系到测试角度上看的话,可以这么作答:

  1. 骑车试一试,看有没有问题,对应测试能不能跑通
  2. 看看车的核心部件,例如车闸,车把等,对应软件的核心功能
  3. 看看车是否安全,配锁质量如何,对应软件是否有安全问题

题目5:如何判断两个链表是否相交

出题人:阿里巴巴新零售技术质量部

参考答案

$O(n^2)$: 两层遍历,总能发现是否相交

$O(n)$: 一层遍历,遍历完两个链表,如果两个链表的最后一个结点指针相同,则相交,否则不相交

posted @ 2024-11-30 14:40  AutoDriver  阅读(8)  评论(0编辑  收藏  举报