Runt个人页面-阿里云开发者社区

个人头像照片

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:
  • Java
    中级

    能力说明:

    掌握封装、继承和多态设计Java类的方法,能够设计较复杂的Java类结构;能够使用泛型与集合的概念与方法,创建泛型类,使用ArrayList,TreeSet,TreeMap等对象掌握Java I/O原理从控制台读取和写入数据,能够使用BufferedReader,BufferedWriter文件创建输出、输入对象。

    获取记录:

  • Python
    初级

    能力说明:

    了解Python语言的基本特性、编程环境的搭建、语法基础、算法基础等,了解Python的基本数据结构,对Python的网络编程与Web开发技术具备初步的知识,了解常用开发框架的基本特性,以及Python爬虫的基础知识。

    获取记录:

    • 2019-07-26大学考试 大学用户参加考试
  • Linux
    初级

    能力说明:

    掌握计算机基础知识,初步了解Linux系统特性、安装步骤以及基本命令和操作;具备计算机基础网络知识与数据通信基础知识。

    获取记录:

  • 数据库
    初级

    能力说明:

    具备数据库基础知识,了解数据库的分类,具备安装MySQL数据库的能力,掌握MySQL数据类型知识,基本了解常用SQL语句,对阿里云数据库产品有基本认知。

    获取记录:

    • 2020-02-13大学考试 大学用户参加考试

阿里云技能认证

详细说明

  • 高分内容
  • 最新动态
  • 文章
  • 问答
  • 提交了问题 2020-04-15

    速戳 | 20位阿里出题专家-备战阿里必不可少的题目

  • 提交了问题 2020-04-14

    如何判断两个链表是否相交

正在加载, 请稍后...
暂无更多信息

2020年04月

  • 04.15 10:54:04
    提交了问题 2020-04-15 10:54:04

    速戳 | 20位阿里出题专家-备战阿里必不可少的题目

  • 04.14 18:34:49
    回答了问题 2020-04-14 18:34:49

    如何判断两个链表是否相交

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

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

    踩0 评论0
  • 04.14 18:34:41
    提交了问题 2020-04-14 18:34:41

    如何判断两个链表是否相交

  • 04.14 18:34:04
    回答了问题 2020-04-14 18:34:04

    如何测试一辆自行车

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

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

    踩0 评论0
  • 04.14 18:33:58
    提交了问题 2020-04-14 18:33:58

    如何测试一辆自行车

  • 04.14 18:33:15
    回答了问题 2020-04-14 18:33:15

    请评估一下程序的执行结果?

    参考答案:D

    踩0 评论0
  • 04.14 18:32:16
    提交了问题 2020-04-14 18:32:16

    请评估一下程序的执行结果?

  • 04.14 18:31:49
    回答了问题 2020-04-14 18:31:49

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

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

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

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

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

    踩0 评论0
  • 04.14 18:31:41
    提交了问题 2020-04-14 18:31:41

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

  • 04.14 18:30:34
    回答了问题 2020-04-14 18:30:34

    给定一个整数数组和一个整数,返回两个数组的索引

    参考答案:

    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)

    踩0 评论0
  • 04.14 18:30:01
    提交了问题 2020-04-14 18:30:01

    给定一个整数数组和一个整数,返回两个数组的索引

  • 04.14 18:29:07
    回答了问题 2020-04-14 18:29:07

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

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

    踩0 评论0
  • 04.14 18:28:55
    提交了问题 2020-04-14 18:28:55

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

  • 04.14 18:28:19
    回答了问题 2020-04-14 18:28:19

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

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

    踩0 评论0
  • 04.14 18:28:10
    提交了问题 2020-04-14 18:28:10

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

  • 04.14 18:27:33
    回答了问题 2020-04-14 18:27:33

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

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

    参考代码:

    {
        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),我们只用了常量级的额外空间。

    踩0 评论0
  • 04.14 18:26:54
    提交了问题 2020-04-14 18:26:54

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

  • 04.14 18:26:03
    回答了问题 2020-04-14 18:26:03

    最大频率栈

    参考答案: 令 freq 作为 x 的出现次数的映射 Map。

    此外 maxfreq,即栈中任意元素的当前最大频率,因为我们必须弹出频率最高的元素。

    当前主要的问题就变成了:在具有相同的(最大)频率的元素中,怎么判断那个元素是最新的?我们可以使用栈来查询这一信息:靠近栈顶的元素总是相对更新一些。

    为此,我们令 group 作为从频率到具有该频率的元素的映射。到目前,我们已经实现了 FreqStack 的所有必要的组件。

    算法:

    实际上,作为实现层面上的一点细节,如果 x 的频率为 f,那么我们将获取在所有 group[i] (i <= f) 中的 x,而不仅仅是栈顶的那个。这是因为每个 group[i] 都会存储与第 i 个 x 副本相关的信息。

    最后,我们仅仅需要如上所述维持 freq,group,以及 maxfreq。

    参考代码*:

        Map<Integer, Integer> freq;
        Map<Integer, Stack<Integer>> group;
        int maxfreq;
    
        public FreqStack() {
            freq = new HashMap();
            group = new HashMap();
            maxfreq = 0;
        }
        
        public void push(int x) {
            int f = freq.getOrDefault(x, 0) + 1;
            freq.put(x, f);
            if (f > maxfreq) maxfreq = f;
            group.computeIfAbsent(f, z-> new Stack()).push(x);
        }
        
        public int pop() {
            int x = group.get(maxfreq).pop();
            freq.put(x, freq.get(x) - 1);
            if (group.get(maxfreq).size() == 0)
            maxfreq--;
            return x;
        }
    }
    
    踩0 评论0
  • 04.14 18:25:30
    提交了问题 2020-04-14 18:25:30

    最大频率栈

  • 04.14 18:24:59
    回答了问题 2020-04-14 18:24:59

    在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行 IO 读写

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

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
  • 提交了问题 2020-04-15

    速戳 | 20位阿里出题专家-备战阿里必不可少的题目

  • 回答了问题 2020-04-14

    如何判断两个链表是否相交

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

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

    踩0 评论0
  • 提交了问题 2020-04-14

    如何判断两个链表是否相交

  • 回答了问题 2020-04-14

    如何测试一辆自行车

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

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

    踩0 评论0
  • 提交了问题 2020-04-14

    如何测试一辆自行车

  • 回答了问题 2020-04-14

    请评估一下程序的执行结果?

    参考答案:D

    踩0 评论0
  • 提交了问题 2020-04-14

    请评估一下程序的执行结果?

  • 回答了问题 2020-04-14

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

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

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

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

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

    踩0 评论0
  • 提交了问题 2020-04-14

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

  • 回答了问题 2020-04-14

    给定一个整数数组和一个整数,返回两个数组的索引

    参考答案:

    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)

    踩0 评论0
  • 提交了问题 2020-04-14

    给定一个整数数组和一个整数,返回两个数组的索引

  • 回答了问题 2020-04-14

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

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

    踩0 评论0
  • 提交了问题 2020-04-14

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

  • 回答了问题 2020-04-14

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

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

    踩0 评论0
  • 提交了问题 2020-04-14

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

  • 回答了问题 2020-04-14

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

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

    参考代码:

    {
        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),我们只用了常量级的额外空间。

    踩0 评论0
  • 提交了问题 2020-04-14

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

  • 回答了问题 2020-04-14

    最大频率栈

    参考答案: 令 freq 作为 x 的出现次数的映射 Map。

    此外 maxfreq,即栈中任意元素的当前最大频率,因为我们必须弹出频率最高的元素。

    当前主要的问题就变成了:在具有相同的(最大)频率的元素中,怎么判断那个元素是最新的?我们可以使用栈来查询这一信息:靠近栈顶的元素总是相对更新一些。

    为此,我们令 group 作为从频率到具有该频率的元素的映射。到目前,我们已经实现了 FreqStack 的所有必要的组件。

    算法:

    实际上,作为实现层面上的一点细节,如果 x 的频率为 f,那么我们将获取在所有 group[i] (i <= f) 中的 x,而不仅仅是栈顶的那个。这是因为每个 group[i] 都会存储与第 i 个 x 副本相关的信息。

    最后,我们仅仅需要如上所述维持 freq,group,以及 maxfreq。

    参考代码*:

        Map<Integer, Integer> freq;
        Map<Integer, Stack<Integer>> group;
        int maxfreq;
    
        public FreqStack() {
            freq = new HashMap();
            group = new HashMap();
            maxfreq = 0;
        }
        
        public void push(int x) {
            int f = freq.getOrDefault(x, 0) + 1;
            freq.put(x, f);
            if (f > maxfreq) maxfreq = f;
            group.computeIfAbsent(f, z-> new Stack()).push(x);
        }
        
        public int pop() {
            int x = group.get(maxfreq).pop();
            freq.put(x, freq.get(x) - 1);
            if (group.get(maxfreq).size() == 0)
            maxfreq--;
            return x;
        }
    }
    
    踩0 评论0
  • 提交了问题 2020-04-14

    最大频率栈

  • 回答了问题 2020-04-14

    在云计算大数据处理场景中,每天运行着成千上万的任务,每个任务都要进行 IO 读写

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

    踩0 评论0
正在加载, 请稍后...
滑动查看更多