JavaGuide - 「JavaLearning+Interview Guide」は、ほとんどのJavaプログラマーが習得する必要のあるコア知識をカバーしています。JavaGuideとのJavaインタビューの準備をしてください!

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

Created at: 2018-05-07 21:27:00
Language: Java
License: Apache-2.0

JavaGuideオフィシャルナレッジプラネットがここにあります!!!専用の面接小冊子/1対1のコミュニケーション/履歴書の変更/専用の就職活動ガイド/スタディパンチが必要な場合は、約3分かけて惑星の詳細な紹介をご覧ください。JavaGuideナレッジプラネット詳細な紹介(Be本当に参加する必要があることを確認してください。詳細な紹介を読んだ後、必ず私を追加してください)。

  1. 面接特別版:面接の準備をしている人のために、面接特別版「Java面接の上級ガイド」(高品質、面接用に特別に作成され、JavaGuideで食べられる)を検討することができます。
  2. ナレッジプラネット:独占面接小冊子/ 1対1のコミュニケーション/履歴書の変更/独占的な就職活動ガイド、JavaGuideナレッジプラネットへの参加を歓迎します(惑星の詳細な紹介を表示するには、リンクをクリックしてください。本当に必要なことを確認する必要があります。もう一度参加してください。詳細な紹介を読んだ後、私を追加する必要があります)。
  3. 転載通知:以下の記事はすべて、記事の冒頭に記載されていない限り、私(ガイド兄弟)のオリジナルの転載であり、出典は記事の冒頭に記載する必要があります。一緒に良い技術創造環境を維持しましょう!

オンラインの読書ウェブサイトを読むことをお勧めします。エクスペリエンスが向上し、速度が速くなります。

あなたが必要があるかもしれません:

Java

ベース

知識のポイント/面接の質問:(必見👍):

  1. Javaの基本的な一般的な知識のポイントと面接の質問の概要(パート1)
  2. Javaの基本的な一般的な知識のポイントと面接の質問の要約(中央)
  3. Javaの基本的な一般的な知識のポイントと面接の質問の概要(パート2)

重要な知識ポイントの詳細な説明

集める

知識ポイント/面接の質問

  1. Javaコレクションの一般的な知識のポイントと面接の質問の概要(パート1)(必見)👍)。
  2. Javaコレクションの一般的な知識のポイントと面接の質問の概要(パート2)(必見)👍)。
  3. Javaコンテナの使用に関する注意事項の要約

ソースコード分析

並行性

知識のポイント/面接の質問:(必見👍)。

  1. Javaの並行性に関する一般的な知識のポイントと面接の質問の概要(基本)
  2. Javaの並行性に関する一般的な知識のポイントと面接の質問の概要(上級)

重要な知識ポイントの詳細な説明

JVM(必見👍)。

JVMコンテンツのこの部分は、主にJVM仮想マシンの仕様(Java8およびZhou Zhiming氏の「Java仮想マシンの詳細な理解(第3版)」(複数回読むことを強くお勧めします!))に言及しています。

  1. Javaメモリ領域
  2. JVMガベージコレクション
  3. JDK監視およびトラブルシューティングツール
  4. クラスファイル構造
  5. クラスの読み込みプロセス
  6. クラスローダー
  7. [完了予定]最も重要なJVMパラメーターの要約(変換は半分完了しています)
  8. [おやつ]言葉でJVMを知ることができます

新機能

  1. Java 8: Java 8の新機能の概要(翻訳)Java8の一般的な新機能の概要
  2. Java9の新機能の概要
  3. Java10の新機能の概要
  4. Java11の新機能の概要
  5. Java 12〜13の新機能の概要
  6. Java 14〜15の新機能の概要

コンピュータの基本

👉 図解されたコンピュータの基礎PDFダウンロード

オペレーティング·システム

  1. オペレーティングシステムに関するFAQの概要!
  2. バックエンドプログラマーに必要なLinuxの基本の要約
  3. シェルプログラミング入門

通信網

  1. OSIおよびTCP/IPネットワーク層モデルの詳細な説明(基本)
  2. HTTPとHTTPS(アプリケーション層)
  3. HTTP1.0とHTTP1.1(アプリケーション層)
  4. コンピュータネットワークの一般的な知識のポイントと面接の質問(補足)
  5. XieXiren先生による「コンピュータネットワーク」のまとめ

データ構造

グラフィカルなデータ構造:

  1. 線形データ構造:配列、リンクリスト、スタック、キュー
  2. 写真
  3. ヒープ
  4. 樹木:赤黒木、B-、B +、B *樹木、LSM樹木に焦点を当てる

その他の一般的なデータ構造:

  1. ブルームフィルター

アルゴリズム

アルゴリズムのこの部分は非常に重要です。アルゴリズムを学ぶ方法がわからない場合は、私が書いたものを読むことができます。

一般的なアルゴリズムの問​​題の要約

さらに、 WebサイトGeeksforGeeksは、一般的なアルゴリズムを要約し、より包括的です。

データベース

ベース

MySQL

要約:

重要な知識のポイント:

Redis

検索エンジン

検索効率を向上させるために使用される機能は、ブラウザの検索エンジンに似ています。より一般的な検索エンジンは、Elasticsearch(推奨)とSolrです。

開発ツール

Docker

ギット

システムデザイン

ベース

共通のフレームワーク

Java Web開発に触れたことがない場合は、要約した「J2EEの基本」をご覧ください。ただし、この記事の多くのコンテンツは削除されていますが、Javaバックグラウンドテクノロジーの開発についてより深く理解することができます。

Spring / SpringBoot(必見👍)。

知識ポイント/面接の質問

  1. 春の一般的な知識のポイントと面接の質問の概要
  2. SpringBoot入門

重要な知識ポイントの詳細な説明

  1. Spring / Spring Bootの一般的なアノテーションの概要!整える!
  2. 春のトランザクションの概要
  3. Springで使用されているデザインパターンはどれですか?
  4. SpringBoot自動配線の原則

MyBatis

MyBatisの一般的な面接の質問の概要

春のクラウド

SpringCloud入門

安全性

認証済み

データの感度低下

データの感度低下とは、特定のルールに従って機密情報データを変形することを意味します。たとえば、携帯電話番号とID番号の特定の数字の代わりに*を使用します。

機密性の高い単語フィルタリング

システムは、ユーザーが入力したテキスト内のポルノ、政治、暴力関連の単語などのデリケートな単語をフィルタリングする必要があります。

関連資料:「機密性の高い単語のフィルタリング」

時限タスク

友人が最近、時限タスクについて質問しました。それで、私は単に時限タスクのいくつかの概念と時限タスクのいくつかの一般的な技術的選択を要約する記事を書きました:「Java時限タスクが明らかにされました」

分散

CAP理論とBASE理論

CAPは、一貫性、可用性、およびパーティション許容度の最初の文字の組み合わせです。

BASEは、 Basicly AvailableSoft-state、およびEventallyConsistentの3つのフレーズの略語です。BASE理論は、CAPの一貫性と可用性の間のトレードオフの結果であり、大規模なインターネットシステムでの分散型プラクティスの要約から導き出され、CAP定理に基づいて徐々に進化し、システム要件を大幅に削減します。

関連資料:CAP理論とBASE理論の解釈

PaxosアルゴリズムとRaftアルゴリズム

Paxosアルゴリズムは、分散システムの一貫性を解決するための古典的なアルゴリズムである1990年に誕生しました。ただし、Paxosアルゴリズムは理解と実装が非常に難しいため、アルゴリズムを単純化するための絶え間ない試みがあります。PaxosアルゴリズムであるRaftアルゴリズムよりも理解と実装が容易な分散コンセンサスアルゴリズムが誕生したのは2013年のことでした。

関連読書:

RPC

RPCを使用すると、ローカルメソッドを呼び出すのと同じくらい簡単にリモートサービスを呼び出すことができます。

Dubboは、Alibabaがオープンソースとする国内RPCフレームワークです。関連読書:

APIゲートウェイ

ゲートウェイは主に、要求の転送、セキュリティ認証、プロトコル変換、および障害復旧に使用されます。

関連読書:

分布式 id

在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。比如数据量太大之后,往往需要对数据进行分库分表,分库分表后需要有一个唯一 ID 来标识一条数据或消息,数据库的自增 ID 显然不能满足需求。相关阅读:为什么要分布式 id ?分布式 id 生成方案有哪些?

分布式事务

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。

简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。

分布式协调

ZooKeeper

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

  1. 【入门】ZooKeeper 相关概念总结
  2. 【进阶】ZooKeeper 相关概念总结
  3. 【实战】ZooKeeper 实战

高性能

消息队列

消息队列在分布式系统中主要是为了解耦和削峰。相关阅读: 消息队列常见问题总结

  1. RabbitMQ : RabbitMQ 入门
  2. RocketMQ : RocketMQ 入门RocketMQ 的几个简单问题与答案
  3. KafkaKafka 常见问题总结

读写分离&分库分表

读写分离主要是为了将数据库的读和写操作分不到不同的数据库节点上。主服务器负责写,从服务器负责读。另外,一主一从或者一主多从都可以。

读写分离可以大幅提高读性能,小幅提高写的性能。因此,读写分离更适合单机并发读请求比较多的场景。

分库分表是为了解决由于库、表数据量过大,而导致数据库性能持续下降的问题。

常见的分库分表工具有:

sharding-jdbc
(当当)、
TSharding
(蘑菇街)、
MyCAT
(基于 Cobar)、
Cobar
(阿里巴巴)...。 推荐使用
sharding-jdbc
。 因为,
sharding-jdbc
是一款轻量级
Java
框架,以
jar
包形式提供服务,不要我们做额外的运维工作,并且兼容性也很好。

相关阅读: 读写分离&分库分表常见问题总结

负载均衡

负载均衡系统通常用于将任务比如用户请求处理分配到多个服务器处理以提高网站、应用或者数据库的性能和可靠性。

常见的负载均衡系统包括 3 种:

  1. DNS 负载均衡 :一般用来实现地理级别的均衡。
  2. 硬件负载均衡 : 通过单独的硬件设备比如 F5 来实现负载均衡功能(硬件的价格一般很贵)。
  3. 软件负载均衡 :通过负载均衡软件比如 Nginx 来实现负载均衡功能。

高可用

高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的 。

相关阅读: 如何设计一个高可用系统?要考虑哪些地方?

限流

限流是从用户访问压力的角度来考虑如何应对系统故障。

限流为了对服务端的接口接受请求的频率进行限制,防止服务挂掉。比如某一接口的请求限制为 100 个每秒, 对超过限制的请求放弃处理或者放到队列中等待处理。限流可以有效应对突发请求过多。相关阅读:何为限流?限流算法有哪些?

降级

降级是从系统功能优先级的角度考虑如何应对系统故障。

服务降级指的是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。

熔断

熔断和降级是两个比较容易混淆的概念,两者的含义并不相同。

降级的目的在于应对系统自身的故障,而熔断的目的在于应对当前系统依赖的外部系统或者第三方系统的故障。

排队

另类的一种限流,类比于现实世界的排队。玩过英雄联盟的小伙伴应该有体会,每次一有活动,就要经历一波排队才能进入游戏。

集群

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

超时和重试机制

一旦用户的请求超过某个时间得不到响应就结束此次请求并抛出异常。 如果不进行超时设置可能会导致请求响应速度慢,甚至导致请求堆积进而让系统无法再处理请求。

重试的次数一般设为 3 次,再多的重试次数没有好处,反而会加重服务器压力(部分场景使用失败重试机制会不太适合)。在一次重试失败之后通常会加上一个时间间隔 delay 再进行下一次重试,时间间隔 delay 通常建议是随机的。

并且,为了更好地保护下游,我们还可以结合断路器。

灾备设计和异地多活

灾备 = 容灾+备份。

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

さまざまな場所でのマルチアクティブとは、さまざまな場所でのサービスの展開を表し、サービスは同時に外の世界にサービスを提供します。従来のディザスタリカバリ設計との主な違いは、「マルチアクティブ」です。つまり、すべてのサイトが同時に外の世界にサービスを提供します。さまざまな場所に住むことは、火事、地震、その他の自然災害や人為的災害などの緊急事態に対処することです。

関連読書:

開発ツール

ギット

Docker

著者について

スタートレンド

公共

私の更新された記事と共有された乾物をリアルタイムでフォローしたい場合は、私の公式アカウントをフォローすることができます。

「Javaインタビューアサルト」:このドキュメントから派生した「Javaインタビューアサルト」のPDF版は、インタビュー用に特別に作成されています。パブリックアカウントのバックグラウンドで「インタビューアサルト」に返信すると、無料で入手できます。

私のパブリックアカウント