Convert Figma logo to code with AI

Snailclimb logoJavaGuide

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

145,827
45,503
145,827
67

Top Related Projects

174,630

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

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

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

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

Everything you need to know to get the job.

:muscle: Help you get a better offer.

Quick Overview

JavaGuide is a comprehensive learning resource for Java developers, covering a wide range of topics from core Java concepts to advanced frameworks and tools. It serves as a knowledge base and study guide for both beginners and experienced developers looking to enhance their Java skills.

Pros

  • Extensive coverage of Java-related topics, including core Java, frameworks, databases, and system design
  • Regularly updated with new content and improvements
  • Well-organized structure, making it easy to navigate and find specific information
  • Includes practical examples and explanations to aid understanding

Cons

  • Primarily written in Chinese, which may limit accessibility for non-Chinese speakers
  • Some topics may not be covered in as much depth as dedicated resources on specific subjects
  • The sheer amount of information can be overwhelming for beginners

Getting Started

To start using JavaGuide:

  1. Visit the JavaGuide GitHub repository
  2. Browse the table of contents in the README to find topics of interest
  3. Click on the links to access detailed articles and resources
  4. For offline reading, clone the repository:
    git clone https://github.com/Snailclimb/JavaGuide.git
    
  5. Consider starring the repository to stay updated with new content and changes

Note: As this is not a code library but a learning resource, there are no code examples or installation instructions. The repository serves as a reference and guide for Java developers to enhance their knowledge and skills.

Competitor Comparisons

174,630

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

Pros of CS-Notes

  • Broader coverage of computer science topics beyond just Java
  • More in-depth explanations of algorithms and data structures
  • Includes content on system design and architecture

Cons of CS-Notes

  • Less frequent updates compared to JavaGuide
  • Fewer practical examples and real-world applications
  • Less community engagement and contributions

Code Comparison

CS-Notes example (Binary Search):

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;
}

JavaGuide example (Binary Search):

public static int binarySearch(int[] arr, int target) {
    int left = 0, right = arr.length - 1;
    while (left <= right) {
        int mid = left + ((right - left) >> 1);
        if (arr[mid] == target) return mid;
        else if (arr[mid] < target) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}

Both repositories provide similar implementations of binary search, with minor differences in variable naming and bit manipulation for calculating the midpoint.

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

Pros of advanced-java

  • More in-depth coverage of advanced Java topics
  • Focuses on practical, real-world scenarios and problem-solving
  • Includes detailed explanations of complex concepts with diagrams

Cons of advanced-java

  • Less comprehensive coverage of basic Java concepts
  • May be overwhelming for beginners or those new to Java
  • Updates less frequently compared to JavaGuide

Code Comparison

advanced-java:

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

JavaGuide:

public class HashMapExample {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("key", 1);
        System.out.println(map.get("key"));
    }
}

The code examples demonstrate the difference in focus between the two repositories. advanced-java emphasizes concurrent programming with ConcurrentHashMap, while JavaGuide covers more basic concepts like HashMap.

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

Pros of JavaFamily

  • More comprehensive coverage of advanced Java topics and frameworks
  • Includes practical career advice and interview preparation materials
  • Regular updates and active community engagement

Cons of JavaFamily

  • Less structured organization compared to JavaGuide
  • May be overwhelming for beginners due to the breadth of content
  • Some sections lack depth in explanations

Code Comparison

JavaFamily example (Spring Boot configuration):

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/").permitAll();
    }
}

JavaGuide example (Java 8 Stream API):

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> filteredNames = names.stream()
    .filter(name -> name.startsWith("A"))
    .collect(Collectors.toList());

Both repositories provide valuable resources for Java developers, with JavaGuide offering a more structured approach suitable for beginners, while JavaFamily caters to a wider range of skill levels and includes career-oriented content. The code examples demonstrate the different focus areas, with JavaFamily emphasizing frameworks and JavaGuide showcasing core Java features.

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

Pros of toBeTopJavaer

  • More comprehensive coverage of advanced Java topics
  • Includes detailed explanations and examples for complex concepts
  • Offers a structured learning path for becoming a top Java developer

Cons of toBeTopJavaer

  • Less frequently updated compared to JavaGuide
  • May be overwhelming for beginners due to its depth and complexity
  • Lacks some of the practical project examples found in JavaGuide

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:

toBeTopJavaer:

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

JavaGuide:

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

JavaGuide tends to provide more modern and thread-safe implementations in its code examples, while toBeTopJavaer often focuses on explaining the core concepts with simpler code snippets.

Everything you need to know to get the job.

Pros of interviews

  • Broader focus on multiple programming languages and concepts
  • Includes detailed explanations and solutions for various coding problems
  • Provides a comprehensive collection of algorithm and data structure questions

Cons of interviews

  • Less frequently updated compared to JavaGuide
  • Primarily in English, which may limit accessibility for non-English speakers
  • Less structured organization of content

Code Comparison

interviews:

def reverse(self, x):
    sign = [1,-1][x < 0]
    rst = sign * int(str(abs(x))[::-1])
    return rst if -(2**31)-1 < rst < 2**31 else 0

JavaGuide:

public int reverse(int x) {
    long res = 0;
    while (x != 0) {
        res = res * 10 + x % 10;
        x /= 10;
    }
    return (int) res == res ? (int) res : 0;
}

Both repositories provide solutions for reversing an integer, but interviews uses Python with a string conversion approach, while JavaGuide uses Java with a mathematical approach. The JavaGuide solution handles overflow more explicitly within the algorithm.

:muscle: Help you get a better offer.

Pros of AndroidOfferKiller

  • Focused specifically on Android development and job interview preparation
  • Includes practical coding examples and interview questions
  • Regularly updated with new content and community contributions

Cons of AndroidOfferKiller

  • Limited scope compared to JavaGuide's broader Java ecosystem coverage
  • Less comprehensive documentation and explanations
  • Smaller community and fewer contributors

Code Comparison

AndroidOfferKiller (Android-specific example):

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

JavaGuide (General Java example):

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

The code examples highlight the difference in focus between the two repositories. AndroidOfferKiller provides Android-specific code snippets, while JavaGuide covers more general Java concepts.

Both repositories serve as valuable resources for developers, with AndroidOfferKiller catering specifically to Android developers and job seekers, while JavaGuide offers a broader range of Java-related topics and resources for a wider audience.

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

推荐你通过在线阅读网站进行阅读,体验更好,速度更快!地址:javaguide.cn。

  • 面试专版:准备 Java 面试的小伙伴可以考虑面试专版:**《Java 面试指北 》** (质量很高,专为面试打造,配合 JavaGuide 食用)。
  • 知识星球:专属面试小册/一对一交流/简历修改/专属求职指南,欢迎加入 **JavaGuide 知识星球**(点击链接即可查看星球的详细介绍,一定确定自己真的需要再加入)。
  • 使用建议 :有水平的面试官都是顺着项目经历挖掘技术问题。一定不要死记硬背技术八股文!详细的学习建议请参考:JavaGuide 使用建议。
  • 求个Star:如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star,这是对我最大的鼓励,感谢各位一起同行,共勉!Github 地址:https://github.com/Snailclimb/JavaGuide 。
  • **转载须知**:以下所有文章如非文首说明为转载皆为 JavaGuide 原创,转载请在文首注明出处。如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!

项目相关

Java

基础

知识点/面试题总结 : (必看:+1: ):

**重要知识点详解**:

集合

知识点/面试题总结:

源码分析:

IO

并发

知识点/面试题总结 : (必看 :+1:)

**重要知识点详解**:

JVM (必看 :+1:)

JVM 这部分内容主要参考 JVM 虚拟机规范-Java8 和周志明老师的《深入理解 Java 虚拟机(第 3 版)》 (强烈建议阅读多遍!)。

新特性

计算机基础

操作系统

网络

知识点/面试题总结:

**重要知识点详解**:

数据结构

图解数据结构:

其他常用数据结构:

算法

算法这部分内容非常重要,如果你不知道如何学习算法的话,可以看下我写的:

常见算法问题总结:

另外,GeeksforGeeks 这个网站总结了常见的算法 ,比较全面系统。

数据库

基础

MySQL

知识点/面试题总结:

重要知识点:

Redis

知识点/面试题总结 : (必看:+1: ):

重要知识点:

MongoDB

搜索引擎

Elasticsearch 常见面试题总结(付费)

JavaGuide 官方公众号

开发工具

Maven

Gradle

Gradle 核心概念总结(可选,目前国内还是使用 Maven 普遍一些)

Docker

Git

系统设计

基础

常用框架

Spring/SpringBoot (必看 :+1:)

知识点/面试题总结 :

**重要知识点详解**:

MyBatis

MyBatis 常见面试题总结

安全

认证授权

数据脱敏

数据脱敏说的就是我们根据特定的规则对敏感信息数据进行变形,比如我们把手机号、身份证号某些位数使用 * 来代替。

敏感词过滤

敏感词过滤方案总结

定时任务

Java 定时任务详解

Web 实时消息推送

Web 实时消息推送详解

分布式

理论&算法&协议

RPC

ZooKeeper

这两篇文章可能有内容重合部分,推荐都看一遍。

API 网关

分布式 ID

分布式锁

分布式事务

分布式事务常见知识点&面试题总结

分布式配置中心

分布式配置中心常见知识点&面试题总结

高性能

数据库优化

负载均衡

负载均衡常见知识点&面试题总结

CDN

CDN(内容分发网络)常见知识点&面试题总结

消息队列

高可用

高可用系统设计指南

冗余设计

冗余设计详解

限流

服务限流详解

降级&熔断

降级&熔断详解

超时&重试

超时&重试详解

集群

相同的服务部署多份,避免单点故障。

灾备设计和异地多活

灾备 = 容灾 + 备份。

  • 备份:将系统所产生的的所有重要数据多备份几份。
  • 容灾:在异地建立两个完全相同的系统。当某个地方的系统突然挂掉,整个应用系统可以切换到另一个,这样系统就可以正常提供服务了。

异地多活 描述的是将服务部署在异地并且服务同时对外提供服务。和传统的灾备设计的最主要区别在于“多活”,即所有站点都是同时在对外提供服务的。异地多活是为了应对突发状况比如火灾、地震等自然或者人为灾害。

Star 趋势

Stars

公众号

如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。

JavaGuide 官方公众号