二つの顔
あなたは私を依頼するご質問はありますか?
1、自己紹介、仕事の経験、技術スタック
2.プロジェクトの技術は何を学びましたか?
3、粒度のマイクロサービス部門?
4、どのようにマイクロサービスの高可用性を確保するには?
ロードバランシングとリバースプロキシ、分離、電流制限、降格、タイムアウトと再試行、ロールバック、ストレステストと危機管理計画
5、一般的に使用されるロードバランシングは、使用方法を、あなたはそれの下に言うことができますか?
(1)HTTPリダイレクション
(ブラウザなど)のHTTPプロキシがWebサーバにURLを要求すると、Webサーバは、新しいURLのhttpレスポンスヘッダ情報所在地のマークで返すことができます。これは、自動ジャンプを完了し、新しいURLを要求し続けるためにHTTPプロキシが必要という。
(2)DNS負荷分散
DNSは、サイトにアクセスする際に、DNSサービスを提供する責任があります実際にサイトのDNSドメイン名にDNSサーバポイントのIPアドレスを取得する必要があり、その過程で、DNSサーバは、IPアドレスのマッピングにドメイン名を完了するために、ここでも、このマッピングはまた、多くのいずれかを指定でき、この時、DNSサーバは、ロードバランサのスケジューラとして機能し、それが複数のサーバ間でユーザの要求として、HTTPリダイレクト変換戦略のようだが、その実装メカニズムは完全に異なっています。
(3)IPロードバランシング(LVS-NAT)
リバースプロキシサーバーは、HTTP層で働いているので、オーバーヘッド自体が厳しく、また、その性能限界を制限スケーラビリティを制限しています。それは、HTTPレベル以下でロードバランシングを達成することができることを?
NATサーバは:それは、送信されたIPパケットを変更することがあり、トランスポート層、で働く、パケットの宛先アドレスは、実際のサーバーアドレスを変更します
(4)直接経路(LVS-DR)
NATは、ネットワークトランスポート層の階層モデル(第4層)で働いている、と直接ルーティングは、データリンク層(第2層)、いくつかの一見よりコックに働きます。パケットの宛先MACアドレス、実差にサーバへ転送するパケットを変更することにより、それが(ターゲットIP修飾されていない)は、実際のサーバ応答データパケットがスケジューラを通過することなく、顧客のカルボニルに直接送信されています
(5)IPトンネル(LVS-TUN)
IPトンネリングメカニズムに基づいて、転送要求:IPパケットはスケジューラにカプセル化されたが、実際のサーバーに転送する新しいIPパケットを受信し、その後、実際のサーバ応答パケットを直接クライアントにすることができます。現在のところ、ほとんどのLinuxサポートは、LVS-TUNと呼ばれる、LVSによって実現することができ、及びLVS-DRは異なり、スケジューラサーバが実際には同じネットワークセグメントたいにおいて、実際のIPトンネルサーバによってスケジューラに要求を転送しなくてもよいですので、実際のサーバーは、有効なIPアドレスを持っている必要があります。
必要に応じてLVS-TUN実際のサーバーを展開することができるので、全体的に、LVS-DRとLVS-TUNは、お使いのネットワーク展開のニーズに応じて、そこから選択をするためにどのような適当な非対称応答であり、Webサーバに要求します異なる領域は、最寄りのアクセスの原則に基づいて要求を転送するために、それはこの要求に似ている、それはLVS-TUNを選択する必要があります。
6、バックエンドサービスへのゲートウェイをどのようなメリットをもたらすことができますか?
バックエンドサーバーは、ビジネス要求に集中し、オーバーヘッド接続管理を大幅に節約することができ
図7に示すように、オブジェクトの比較が同じです
一般に二つのオブジェクトの内容を比較するために使用等しい2つのオブジェクトを比較するために使用されるアドレスが等しい==等しいです
ハッシュマップは、預金が繰り返されているかどうかを判断する方法の方法を置く8、
ハッシュコード最初のキーの比較、及びその後に等しいか又は等しいとを比較、書き換えのhashCode()とequals()メソッドを達成するために要素を追加するために繰り返すことができます。
9、セットリスト、そして違いは?
セット(セット):オブジェクトのコレクションは、特定の方法でソートしていない、と重複するオブジェクトされていません。その実装クラスのいくつかは、特定の方法で、コレクション内のオブジェクトを並べ替えることができます。
リスト(リスト):オブジェクトのセットは、インデックス位置によってソート、オブジェクトを繰り返すことができ、目的に応じて、コレクション内の検索対象のインデックス位置を可能にします。
10、ArrayListのとLinkedListの違い
ArrayListのデータ構造は動的配列、LinkedListのベースリンクリストデータ構造に基づいて実装されています
ArrayListのは、AbstractListを継承しました
LinkedListの継承AbstractSequentialList
ArrayListのオブジェクトを格納する配列を使用し、削除を挿入するときの最大の欠点は、非常に面倒であるので、このアプローチの配置は、連続する位置オブジェクト
オブジェクトが別のスペースに保存されているが、それぞれの場合にも、最初のインデックスを見つけるために、LinkedListのが使用されるが、欠点は非常に面倒でリンクされたインデックスでの省スペース塊に始まっています
11、より多くのスペースを取り、同じデータ、ArrayListのとLinkedListのへのアクセスであれば?
LinkedListのは、ポインタを移動するためのランダムアクセスGETとセットの場合、ArrayListには、より良いLinkedListのより感じます
新規および削除操作は、追加のArrayList削除またはあろうアレイ、モバイルセグメント後に必要な配列要素からオブジェクトを挿入するために、データを移動するための削除は、LinedList比較優位は、インデックス、インデックス調整の順序を再調整するため逆に、ある程度の時間を消費するためには、LinkedListの削除またはリストからオブジェクトを挿入するために、リンクされたリストを使用して実装され、直前とを参照した後、被写体を変更します
12、ハッシュテーブルは、あなたはそれを知りますか?
HashtableのサポートもヌルキーのサポートNULL値でもありません。ノートHashtableにノートのHashtableのput()メソッドは、スレッドセーフであります
ハッシュテーブルは、効率が比較的低く、同期メソッドに追加される各方法だ、スレッドセーフであります
ハッシュテーブルのデフォルトの初期サイズは、各拡張後、元の容量が2N + 1になり、11です。
ハッシュテーブル要素の位置は、分割計算する必要があり、分割は、より多くの時間がかかります。
13、同期、ロック
内蔵の機能Java言語であるJavaでのキーワードは、ある同期
コードの同期ブロックが変更され、一つのスレッドが対応するロックを取得し、コードブロックを実行したときに、その後、他のスレッドは、ここでしかロック・スレッドのリリースにロック、ロックを取得し、スレッドのリリースにロックのみを取得するために待って、待っていることができれば2つの問題があります。
1)コード実行スレッドのこのブロック上のロックを取得するために、スレッドは、ロックの所有権を解放します。
2)異常なスレッドの実行が発生しているとJVMが自動的にロックリリースをスレッドします
それはロックを解除しないように起因するIO待ち、または(例えば、コール睡眠法など)他の理由でロックを獲得するには、このスレッドがブロックされている場合は、しかし、他のスレッドでは、これは性能効率をどのように影響するかを想像し、唯一さりげなく待機します。
あなたがスレッドを防止するための仕組みを持っている必要がありますので、もはや待つために無期限に待機している(例えば、のみ一定時間待つか、割り込みに応答することができる)、あなたがロックして行うことができますされています。
別の例:競合が発生しない読み取り操作と書き込みファイルを、紛争と書き込み操作の現象を読み書きし、書き込み操作が現象を競合する可能性があり、発生しますが、読んで読んで、複数のスレッドがある場合。
しかし、synchronizedキーワードを使用して同期を達成するために、それは問題を引き起こします。
複数のスレッドが唯一のスレッドが読み取り操作を行っている際に読み込むことができませんので、他のスレッドだけ待つことができ、読まれている場合。
したがって、我々は唯一のスレッド間の競合ではなく、読み込まれ、複数のスレッドを使用可能にするメカニズムを必要とする、それがロックすることにより行うことができます。
また、ロックがロックを取得するために、成功せずに知ることができるスレッドがあります。これは、同期されて実行することはできません
14、CAS操作
楽観的ロック同期同期ロックからCASの異なる手段によって達成java.util.concurrentパッケージ
CASはますます交換アルゴリズムであります
CASは、メモリ値V、旧Aの期待値は、新しい値Bを変更する、3つのオペランドを持っています AとVの期待値が同じメモリ値である場合のみと、メモリ値VはBに改訂された場合は、それ以外の場合は何もしません
オブジェクト間の保証アトミック参照にAtomicReference JDKクラスを提供し、あなたは、CASの動作に複数の変数にオブジェクトの上に置くことができます。
15、ロックと同期の違いは?
(1)ロックインターフェースであり、Javaで同期キーワード、同期ビルトイン言語。
それはデッドロックを引き起こす可能性があり、UNLOCK(で何のイニシアチブがない場合、例外がロックを解除するために)、発生したときとロック;(2)は、例外が発生したとき、それは自動的に、スレッドがロックを所有してリリースすることがデッドロック現象につながることはありません同期しますそして、そのため、あなたは最終的にロックの使用をブロックしてロックを解除する必要があります。
(3)ロックが割り込みに応答して、ロック・スレッド待ちをすることができますが、スレッドが、いつまでも待ちます割り込みに応答することはできません待って、同期使用するときは、同期されていません。
(4)はロックでロックを取得するために、成功せずに知っている、そしてそれを行うことができません同期することができます。
(5)ロック複数のスレッドは、読み出し動作の効率を向上させることができます。
パフォーマンスの面では、リソースのための熾烈ない競争の場合は、両方の性能は似ていますが、競争が(つまり、同時に競争多数のスレッド)非常に激しい資源であるとき、この時間は、パフォーマンスが非常に優れてロックが同期よりもあります。だから、特定の用途に応じて適切に選択します。
16、株式及び非株式ロックロック
公正かつ不公平なロックキューが二重にリンクされたリストロック内部メンテナンスに基づいており、値は各要求は、現在のスレッドをロックされているノードテーブルノード。公正をロックするたびに、そのチームからの最初のオーダーの値
任意の新しいスレッドがロックを獲得するためにそこにしようとしている場合は、ロックを待っているの過程で不当なロックは、ロックを直接得るための素晴らしいチャンスがあります
(もちろん、あなたがNonfairSyncフェアロックの公正かつ不公平FairSyncの役割は、2が同期含まれてReentrantLockの中で見ることができます実行を開始するスレッドの順序に厳密に従っている、実行の他のスレッドがキューをジャンプすることはできません。しばらく不公平なロックがキューをジャンプすることが許可されています。
ReentrantLockのは、synchronizedキーワードを含め、同期させることです。このパフォーマンスが良くなるので、デフォルトではとても不公平ロックです。RUNNABLEは、スレッドからの状態に、あなたが実行するために開始することができますので、実際のスレッドの実行が長い時間を比較することです。また、ロックを解除した後、他のスレッドは、再取得するロックが必要になります。、他のスレッドが停止状態から回復するために実行可能な、どのロックがロックを保持しているスレッドの解放を経験し、ロックを要求し、他のスレッドは、ロック、実行スレッド、この一連のを取得します。この時間ならば、それはより最適化されたパフォーマンスで、直接要求スレッドロックが消費の回復は、この状態を避けるために実行可能なハングアップする可能性がありますがあります)
17、読み書きロックの問題を解決するために主に設計されましたか?
マルチスレッド、
読み取り操作は、書き込み動作が読んで、排他的である、共有することができ、複数の読み取り、書き込み書き込みでは1つのみを持つことができ、時間が書き込みながら読み取ることができます
読書を解決するために、読み出しを同時に行うことができ、同時に読み込みと書き込みができない、書き込みと書き込みを同時に実行することはできません
18、MySQLのクエリのページ
LIMIT [オフセット]行
オフセットを指定する第二の行が返される行の最大数を指定し、返される最初の行のオフセット
19、MySQLのトランザクション分離レベルと特性
取引の基本的な要素(ACID)
(1)アトミック(原子性):トランザクションの開始後にすべての操作、どちらかのすべてが行われ、またはすべてがそうしていないが、中央部で立ち往生することはできません。エラーがトランザクションの実行中に発生し、トランザクションの開始前の状態にロールバックされます、すべての操作が起こったことはありませんが好きです。そのトランザクションは、これまでに原子高校の化学のように、不可分の全体である物質の基本単位です。
(2)の整合性(一貫性):最初とトランザクションの終了、データベースの整合性制約は、前に破壊されていません。例えば、Bへの転送は、Aがお金を控除することができない、Bは受信しませんでした。
(3)分離(単離):同時に、異なるトランザクション間で互いに干渉することなく同じデータのためにのみ1つのトランザクション要求。例えば、Aは、Bがカードにお金を転送することはできません、銀行カードからお金を引き出すプロセスAの終了前にお金を引き出すことです。
(4)持続的な(耐久性):トランザクションの完了後、データベースに対するすべての更新がデータベースに保存されますトランザクションはロールバックすることはできません。
20、並行性の問題情勢
(1)汚れが読み取り:トランザクションAトランザクションBは、データの更新やロールバックBを読み出し、その後Aがデータを読み出すダーティデータであります
(2)非反復可能読み取り:Aトランザクションが同じデータを複数回読み出しの過程で取引トランザクションA回数Bを読み出し、データが更新され、提出されたAは、同じデータが得られる複数回のトランザクションを読み取り、結果が矛盾しています。
(3)魔法の読書は:Aシステム管理者が変更グレードABCDEからのすべての学生のためのデータベースの特定のスコアになりますが、システム管理者Bは、この時点では、特定のレコードのスコアを挿入する際に変更するAシステム管理者の終わり幻覚として起こったのと同じように、一晩変更しないレコードがあることを発見し、これはファントム読み取りと呼ばれています。
21、使用SQLたシーン
あなたが条件の関数として結果を設定する必要がある場合は、where句を使用することはできません、あなたが持つ句を使用する必要があります。
22は、プロセス全体のバックエンドへのフロントエンド、ブラウザのアドレスhttpリクエストがどのようにでしょうか?
その下にそれを言うことができますか?
DNS - >を開始TCP 3ウェイハンドシェイク - > HTTP要求TCPコネクションの確立を開始する - >サーバーの応答は、httpリクエスト、ブラウザGET HTMLコード - >ブラウザがHTMLコードを解析し、要求は、コードリソースをhtmlの(などのjs、CSS、画像など) - >ブラウザのページレンダリングは、ユーザに提示しました
23、HTTPのデフォルトポート、HTTPSのデフォルトのポート
一般的なHTTPプロトコルプロキシサーバーのポート番号:80/8080/3128/8081/9080
HTTPSサーバー、デフォルトのポート番号は443 / TCP 443 / UDP
24、あなたが知っているDNSは、それをしているのですか?
DNS手段:ドメインネームサーバ(ドメインネームサーバ)。、ドメイン名解決、それらの間の変換作業は、ドメイン名の解決は、特定のドメイン名で必要とされる人々が覚えているが、唯一のマシンのIPアドレス間のお互いを知るためにかかわらず、ドメイン名とIPアドレスの間のインターネット上のドメイン名の一つであります完了するために解決サーバ、DNSはドメイン名解決サーバであります
年プログラマの後に無料提供するために、マップを学習インタビューの質問のための完全なドキュメント、最新の記録と放送、Javaの情報の選択は、終了したいか、昇進や昇給に加え、マイクロチャネル情報ああへの自由なアクセスに13272413561注意したい
取得モードを:
HTTPS ://shimo.im/docs/TC9Jq63Tp6HvTXdg/