首页 > 其他分享 >阿里巴巴技术岗位笔试&面试题-第六篇

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

时间:2024-11-29 19:22:57浏览次数:5  
标签:面试题 ListNode 阿里巴巴 笔试 结点 链表 出题 第六篇 指针

说在前面

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

题目1:在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行 IO 读写。存储系统为了更好的服务,经常会保证高优先级的任务优先执行。当多个作业或用户访问存储系统时,如何保证优先级和公平性。

出题人:阿里巴巴出题专家:田磊磊/阿里云文件存储高级技术专家

参考答案:开放性问题,无标准答案。

题目2:如果让你设计一个通用的、支持各种数据库秒级备份和恢复的系统,你会如何设计?

出题人:阿里巴巴出题专家:千震/阿里云数据库高级技术专家

参考答案:开放性问题,无标准答案。

题目3:如果让你来设计一个支持数据库、NOSQL 和大数据之间数据实时流动的数据流及处理的系统,你会考虑哪些问题?如何设计?

出题人:阿里巴巴出题专家:千震/阿里云数据库高级技术专家

参考答案:开放性问题,无标准答案。

题目4:给定一个链表,删除链表的倒数第 N 个节点,并且返回链表的头结点。

◼ 示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
要求:
只允许对链表进行一次遍历。

出题人:阿里巴巴出题专家:屹平/阿里云视频云边缘计算高级技术专家

参考答案

我们可以使用两个指针而不是一个指针。第一个指针从列表的开头向前移动 n+1 步,而第二个指针将从列表的开头出发。现在,这两个指针被 n 个结点分开。我们通过同时移动两个指针向前来保持这个恒定的间隔,直到第一个指针到达最后一个结点。此时第二个指针将指向从最后一个结点数起的第 n 个结点。我们重新链接第二个指针所引用的结点的 next 指针指向该结点的下下个结点。

参考代码

public ListNode removeNthFromEnd(ListNode head, int n)
{
    ListNode dummy = new ListNode(0);
    dummy.next = head;
    ListNode first = dummy;
    ListNode second = dummy;
    // Advances first pointer so that the gap between first
    and second is n nodes apart
    for (int i = 1; i <= n + 1; i++) {
        first = first.next;
    }
    // Move first to the end, maintaining the gap
    while (first != null) {
        first = first.next;
        second = second.next;
    }
    second.next = second.next.next;
    return dummy.next;
}

复杂度分析:

  • 时间复杂度:O(L),该算法对含有 L 个结点的列表进行了一次遍历。因此时间复杂度为 O(L)。

  • 空间复杂度:O(1),我们只用了常量级的额外空间。

标签:面试题,ListNode,阿里巴巴,笔试,结点,链表,出题,第六篇,指针
From: https://www.cnblogs.com/autodriver/p/18577382

相关文章

  • SSM相关面试题01
    目录1.何为SpringBean容器?SpringBean容器与SpringIOC容器有什么不同吗?2.SpringIOC如何理解?3.SpringDI如何理解?4.Spring中基于注解如何配置对象作用域?以及如何配置延迟加载机制?5.Spring工厂底层构建Bean对象借助什么机制?当对象不使用了要释放资源,目的是什......
  • 面试题
    1.性能测试的流程?1.测试需求分析2.测试计划制定与评审3.测试用例设计与开发4.测试执行与监控5.分析测试结果6.编写性能测试报告7.测试经验总结2.一份测试计划应该包括哪些内容?背景、项目简介、目的、测试范围、测试策略、人员分工、资源要求、进度计划、参考文档、常用......
  • 软件测试技术面试题及参考答案整理
    一、什么是兼容性测试?兼容性测试侧重哪些方面?参考答案:兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的......
  • React进阶面试题目(三)
    如何在React中实现滚动动画?在React中实现滚动动画可以通过多种方式实现,以下是一个基本的实现步骤:构建组件:首先构建需要展示滚动动画的组件,例如一个About组件,它包含一些文本或元素。监听滚动事件:在组件挂载后,通过window.onscroll事件监听滚动事件。更新状态:根据滚......
  • 面试题 02.07. 链表相交
    题目自己写的:/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*getIntersection(ListNode*headA,ListNode*hea......
  • 面试题精选16-Nginx的应用场景有哪些
    1.Web服务器Http配置Https配置2.反向代理服务器Nginx作为请求入口,客户端访问Nginx,Nginx再将请求转发到后端,最后响应给客户端,以此防止后端服务器对外暴露,提高服务器的安全性。3.负载均衡将Nginx作为负载均衡器,客户端访问Nginx时,Nginx采取某种策略(默认是轮询策略)将请求......
  • 阿里技术岗位笔试&面试题:最大频率栈
    题目:最大频率栈。实现FreqStack,模拟类似栈的数据结构的操作的一个类。FreqStack有两个函数:push(intx),将整数x推入栈中pop(),它移除并返回栈中出现最频繁的元素。如果最频繁的元素不只一个,则移除并返回最接近栈顶的元素。◼示例:push[5,7,5,7,4,5]pop()->返回5,因......
  • 前端面试题-1(详解事件循环)
    1.了解浏览器的进程模型1.什么是进程?程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。2.什么是线程?有了进程后,就可以运行程序的代码了。我们可以理解为操作程序的'人'就是线......
  • 测试面试题总结
    功能抓包APPUI自动化项目:项目流程,如何排期测试流程,项目周期项目流程中的问题介绍项目核心功能,如何设计用例熟悉或最近的项目,业务功能,和负责部分,如何进行测试业务测试除了功能上还有其他方面的逻辑测试吗项目最近发版时间开发技术评审发现了什么问题开发逻辑讲......
  • ASP.NET Core面试题汇总
    1.如何在controller中注入service?在configservices方法中配置这个service。在controller的构造函数中,添加这个依赖注入。 2.ASP.NETCore比ASP.NET更具优势的地方是什么?跨平台,ASP.NETCore可以运行在Windows、Linux和MAC系统上;对框架本安装没有依赖,所有依赖都跟......