阿里巴巴技术岗位笔试&面试题-第七篇
说在前面
本篇文章是阿里技术面试题目汇总第七篇。
后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。
欢迎大家点赞关注转发。
题目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:如何测试一辆自行车
出题人:阿里巴巴新零售技术质量部
参考答案:
开放性问题,如果联系到测试角度上看的话,可以这么作答:
- 骑车试一试,看有没有问题,对应测试能不能跑通
- 看看车的核心部件,例如车闸,车把等,对应软件的核心功能
- 看看车是否安全,配锁质量如何,对应软件是否有安全问题
题目5:如何判断两个链表是否相交
出题人:阿里巴巴新零售技术质量部
参考答案:
$O(n^2)$: 两层遍历,总能发现是否相交
$O(n)$: 一层遍历,遍历完两个链表,如果两个链表的最后一个结点指针相同,则相交,否则不相交