Convert Figma logo to code with AI

doocs logoadvanced-java

😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识

75,632
19,007
75,632
5

Top Related Projects

174,630

:books: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计

145,827

「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!

【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。

To Be Top Javaer - Java工程师成神之路

27,068

👨‍🎓 Java Core Sprout : basic, concurrent, algorithm

Everything you need to know to get the job.

Quick Overview

The doocs/advanced-java repository is a comprehensive collection of Java-related learning materials and interview questions. It covers a wide range of advanced Java topics, including high concurrency, distributed systems, high availability, and microservices. The project aims to help developers enhance their Java skills and prepare for technical interviews.

Pros

  • Extensive coverage of advanced Java topics
  • Well-organized content with clear explanations
  • Regular updates and contributions from the community
  • Includes both theoretical knowledge and practical examples

Cons

  • Primarily in Chinese, which may limit accessibility for non-Chinese speakers
  • Some topics may lack depth compared to dedicated resources
  • Navigation can be overwhelming due to the large amount of content
  • May require prior Java knowledge to fully benefit from the materials

Code Examples

This repository is not a code library but rather a collection of learning materials. Therefore, code examples are not applicable in the traditional sense. However, the repository does contain code snippets and examples within its documentation to illustrate various concepts.

Getting Started

As this is not a code library, there's no specific installation or setup process. To get started with the doocs/advanced-java repository:

  1. Visit the GitHub repository: https://github.com/doocs/advanced-java
  2. Browse the table of contents in the README.md file
  3. Click on the topics you're interested in to access the detailed content
  4. For offline access, you can clone the repository:
    git clone https://github.com/doocs/advanced-java.git
    
  5. Contribute to the project by submitting pull requests or raising issues if you find areas for improvement

Competitor Comparisons

174,630

:books: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计

Pros of CS-Notes

  • Broader coverage of computer science topics, including algorithms, operating systems, and databases
  • More comprehensive study materials for interview preparation
  • Includes diagrams and illustrations to aid understanding

Cons of CS-Notes

  • Less focused on advanced Java-specific topics
  • May not provide as much depth in Java-related areas
  • Content is primarily in Chinese, which may limit accessibility for non-Chinese speakers

Code Comparison

CS-Notes:

public class BinarySearch {
    public int binarySearch(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] == target) return mid;
            else if (nums[mid] < target) left = mid + 1;
            else right = mid - 1;
        }
        return -1;
    }
}

advanced-java:

public class ConcurrentHashMapExample {
    public static void main(String[] args) {
        ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
        map.put("key1", 1);
        map.put("key2", 2);
        System.out.println(map.get("key1"));
    }
}

The code examples highlight the difference in focus between the two repositories. CS-Notes provides more general computer science algorithms, while advanced-java concentrates on Java-specific concepts and implementations.

145,827

「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!

Pros of JavaGuide

  • More comprehensive coverage of Java topics, including basics, advanced concepts, and frameworks
  • Better organized structure with clear categorization of topics
  • Includes interview preparation materials and coding best practices

Cons of JavaGuide

  • Less focus on in-depth explanations of advanced Java concepts
  • May be overwhelming for beginners due to the vast amount of information

Code Comparison

JavaGuide example (Concurrent HashMap):

ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key", 1);
map.putIfAbsent("key", 2);
map.compute("key", (k, v) -> v == null ? 42 : v + 41);
map.merge("key", 1, (oldValue, newValue) -> oldValue + newValue);

advanced-java example (Distributed Lock):

public class ZooKeeperDistributedLock implements DistributedLock {
    private ZooKeeper zk;
    private String lockPath;
    private String currentPath;
    private CountDownLatch countDownLatch = new CountDownLatch(1);
}

Both repositories provide valuable resources for Java developers, but they cater to slightly different needs. JavaGuide offers a broader range of topics and is more suitable for general Java learning and interview preparation. advanced-java, on the other hand, focuses more on in-depth explanations of advanced Java concepts and distributed systems, making it ideal for experienced developers looking to deepen their knowledge in specific areas.

【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。

Pros of JavaFamily

  • More comprehensive coverage of Java ecosystem, including frameworks and tools
  • Includes practical career advice and interview preparation materials
  • Regular updates and active community engagement

Cons of JavaFamily

  • Less structured organization compared to advanced-java
  • Some content may be more opinion-based rather than strictly technical
  • Potentially overwhelming amount of information for beginners

Code Comparison

advanced-java example:

public class Singleton {
    private static volatile Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

JavaFamily example:

public enum Singleton {
    INSTANCE;
    private Singleton() {}
    public void doSomething() {
        // Implement method
    }
}

Both repositories provide valuable resources for Java developers, but they differ in their approach and scope. advanced-java focuses on in-depth technical content with a well-organized structure, while JavaFamily offers a broader range of topics and practical advice. The code examples demonstrate different approaches to implementing the Singleton pattern, with advanced-java using the double-checked locking method and JavaFamily utilizing the enum-based approach.

To Be Top Javaer - Java工程师成神之路

Pros of toBeTopJavaer

  • More comprehensive coverage of Java topics, including basic concepts and advanced techniques
  • Includes sections on system design and architecture principles
  • Offers career advice and interview preparation tips for Java developers

Cons of toBeTopJavaer

  • Less structured organization compared to advanced-java
  • Content is primarily in Chinese, which may limit accessibility for non-Chinese speakers
  • Updates are less frequent than advanced-java

Code Comparison

While both repositories focus on Java concepts rather than extensive code examples, here's a brief comparison of how they present code snippets:

advanced-java:

public class Singleton {
    private static volatile Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

toBeTopJavaer:

public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return instance;
    }
}

Both repositories provide code examples to illustrate concepts, but advanced-java tends to offer more detailed explanations and variations of implementations.

27,068

👨‍🎓 Java Core Sprout : basic, concurrent, algorithm

Pros of JCSprout

  • More focused on core Java concepts and algorithms
  • Includes practical examples and code snippets for better understanding
  • Covers some unique topics like Netty and distributed locks

Cons of JCSprout

  • Less comprehensive coverage of advanced Java topics
  • Not as frequently updated as advanced-java
  • Fewer contributors and community engagement

Code Comparison

JCSprout example (Thread creation):

public class ThreadDemo extends Thread {
    @Override
    public void run() {
        System.out.println("Thread running");
    }
}

advanced-java example (Thread creation):

public class ThreadExample implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread running using Runnable interface");
    }
}

Both repositories provide valuable resources for Java developers looking to enhance their skills. advanced-java offers a more comprehensive and up-to-date coverage of advanced Java topics, with a larger community and more frequent updates. It's better suited for developers seeking in-depth knowledge of enterprise Java development.

JCSprout, on the other hand, focuses more on core Java concepts and algorithms, making it a good choice for those looking to strengthen their fundamental Java skills. It includes practical examples and covers some unique topics not found in advanced-java.

Ultimately, the choice between the two repositories depends on the developer's specific learning goals and current skill level in Java programming.

Everything you need to know to get the job.

Pros of interviews

  • Broader focus on general computer science topics and algorithms
  • Contains solutions in multiple programming languages
  • Includes a comprehensive list of algorithm and data structure implementations

Cons of interviews

  • Less in-depth coverage of Java-specific advanced topics
  • May not be as up-to-date with the latest industry practices and technologies
  • Lacks detailed explanations for some complex concepts

Code comparison

interviews:

def binary_search(arr, x):
    low = 0
    high = len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] < x:
            low = mid + 1
        elif arr[mid] > x:
            high = mid - 1
        else:
            return mid
    return -1

advanced-java:

public class ConcurrentHashMapExample {
    public static void main(String[] args) {
        ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
        map.put("key1", 1);
        map.put("key2", 2);
        System.out.println(map.get("key1"));
    }
}

The code comparison shows that interviews focuses on general algorithms like binary search, while advanced-java provides examples of Java-specific concepts such as concurrent data structures.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

互联网 Java 工程师进阶知识完全扫盲

stars forks license doocs

本项目大部分内容来自中华石杉,版权归作者所有,内容涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。我们对这部分知识做了一个系统的整理,方便读者们学习查阅。

我们也在全力更新算法项目!如果你在准备笔面试算法,或者想进一步提升 coding 能力,欢迎 Star 关注 doocs/leetcode

学习本项目之前,先来看看 Discussions 讨论区的技术面试官是怎么说的吧。本项目欢迎各位开发者朋友到 Discussions 讨论区分享自己的一些想法和实践经验。也不妨 Star 关注 doocs/advanced-java,随时追踪项目最新动态。

高并发架构

消息队列

搜索引擎

缓存

分库分表

读写分离

高并发系统

分布式系统

面试连环炮

系统拆分

分布式服务框架

分布式锁

分布式事务

分布式会话

高可用架构

高可用系统

  • 如何设计一个高可用系统?

限流

熔断

降级

  • 如何进行降级?

微服务架构

Spring Cloud 微服务架构

海量数据处理

Stars 趋势

Stargazers over time

注:本趋势图由 actions-starcharts 自动定时刷新,作者 @MaoLongLong


Doocs 社区优质项目

Doocs 技术社区,致力于打造一个内容完整、持续成长的互联网开发者学习生态圈!以下是 Doocs 旗下的一些优秀项目,欢迎各位开发者朋友持续保持关注。

#项目描述热度
1advanced-java互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。
2leetcode多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解。
3source-code-hunter互联网常用组件框架源码分析。
4jvmJava 虚拟机底层原理知识总结。
5coding-interview代码面试题集,包括《剑指 Offer》、《编程之美》等。
6md一款高度简洁的微信 Markdown 编辑器。
7technical-books值得一看的技术书籍列表。

贡献者

感谢以下所有朋友对 Doocs 技术社区 所做出的贡献,参与项目维护请戳这儿。

公众号

Doocs 技术社区旗下唯一公众号「Doocs」​,欢迎扫码关注,**专注分享技术领域相关知识及行业最新资讯**。当然,也可以加我个人微信(备注:GitHub),拉你进技术交流群。



关注「Doocs」公众号,回复 PDF,即可获取本项目离线 PDF 文档(283 页精华),学习更加方便!