杨净发自凹非寺 

  量子位报道公众号 QbitAI

  今天,你刷 LeetCode 了吗?

  最近,GitHub 上这样一套 LeetCode 笔记火了。

  一位 Java 研发工程师分享了一个名为「LeetCode 题目分类与面试问题整理」,一时间获得 1300 星。

拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园

  这篇笔记的作者叫袁广鑫,毕业于黑龙江大学,面试三十多家互联网公司亲历整理,曾拿到字节、腾讯、滴滴 offer,目前在快手担任 Java 工程师。

拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园

  LeetCode 有哪些题目是由作者钦点,是最最常考的题目呢?

  又有哪些面试问题,是大厂必问?

  整理三个月,现在还不时更新的「LeetCode 笔记和大厂面试问题整理」,可以说是很全的指南了,赶紧来一睹为快~

  LeetCode 哪些题目最常考?

  首先,作者按照自己的刷题经验,将题目分成了 18 个类别,每个类别都有一些高频题

  有 Hash 相关、二叉搜索树相关,动态规划、堆相关……

拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园

  作者在接受量子位采访时表示,其中链表操作、数组操作、栈相关、递归、动态规划、树的遍历、这些题目最最常考了。

  那就以其中最最常考题目之一——链表操作为例。

拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园

  这一分类下面包括,复制带随机指针的链表、删除链表的倒数第N个节点、反转链表、k个一组翻转链表、两数相加、旋转链表。

  以「两数相加」为例。
拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园
  「Solution」部分便是关于这道题目的解答。

package 链表操作 .q2_两数相加;

  /**
   * 两次遍历
   * 第一次遍历:两个链表对应每个节点分别取和,若含有空节点则空节点取0,产生一个新链表。
   * 第二次遍历:对取完和的新链表遍历,判断当前的 val 是否大于等于 10,大于或等于则其自身-10 其 next 加1,若 next 为空则新建 0 节点。
   */

public class Solution {
    public ListNode addTwoNumbers (ListNode l1, ListNode l2) {
        ListNode rs = new ListNode (l1.val + l2.val);

  l1 = l1.next;
        l2 = l2.next;
        ListNode temp = rs;
        while (l1 != null  l2 != null) {
            int a = 0;
            int b = 0;
            if (l1 != null) {
                a = l1.val;
            }
            if (l2 != null) {
                b = l2.val;
            }

  int t = a + b;
            temp.next = new ListNode (t);
            temp = temp.next;
            if (l1 != null) {
                l1 = l1.next;
            }
            if (l2 != null) {
                l2 = l2.next;
            }
        }

  temp = rs;
        while (temp != null) {
            if (temp.val >= 10) {
                temp.val = temp.val - 10;
                if (temp.next == null) {
                    temp.next = new ListNode (0);
                }
                temp.next.val = temp.next.val + 1;
            }
            temp = temp.next;
        }

    return rs;
    }
}

  三万字的面试问题整理

  这篇「面试问题整理」共 36000+ 字,包含十个部分,分别是 Zookeeper、Redis、Mysql、JVM、Java 基础、Spring、消息队列、Dubbo、操作系统、计算机网络、数据结构与算法。

拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园

  在整理的最后,还有一些实际场景问题。

  • 高并发系统的设计与实现

  • 负载均衡算法

  • 常见的限流算法

  • 秒杀并发情况下库存为负数问题       

拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园

  对于这部分,作者非常有话语权,因为他在今年先后面试了近三十多家互联网公司,包括腾讯、字节跳动、滴滴、蚂蚁花呗、美团、亚马逊等大厂。

拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星-冯金伟博客园

  △部分大厂面试记录

  对此,作者表示:

基本上涵盖了这三十多家互联网公司的面试内容,所以这部分是非常有价值的。

  此外,作者还透露,是从去年 12 月底开始刷 LeetCode,两个月之后拿到了字节的 offer,在字节工作了一段时间。

  好了,以上就是分享的题目分类和面试问题指南,希望能够对你有所帮助。

  另外,如果你也有刷题、面试大厂的经历和经验,欢迎跟我们分享哦!

  GitHub 网址:https://github.com/yuanguangxin/LeetCode