面接プロセス
私は最近、Ali's Cainiao Internationalに面接と交流を行ったところ、大企業が面接担当者の知識構造を非常に厳密に評価していることがわかりました。これは、日常業務や研究のガイドとして使用できます。面接で聞いた事柄は実際の仕事ではあまり使われないという人も多いのですが、「面接中にロケットを作って仕事をねじ込む」という格言さえあります。
しかし、インタビューから、実際の企業のインタビュアーのナレッジシステムに対する要件を実際に確認できます。そのような要求に応じて仕事を続けていけるのであれば、面接で確実にうまくいくはずです。
一般的に言えば、アリババのインタビューには、技術基盤をクロスチェックするための2つのラウンドの技術面接があります。プロジェクトの経験をテストするために、2回のオンサイトの技術面接があります。ただし、知識システムの観点から見ると、アリババのインタビューにおける知識の評価は、基本的な知識の評価、プロジェクトの経験の評価、プロジェクトの深さの評価の 3つのレベルに分類できます。
1.基本的な知識の評価
このレベルでは、主に、Java言語自体の原則とさまざまなフレームワークの原則に対する理解を評価します。Java開発の立場については、これらの知識ポイントには以下が含まれますが、これらに限定されません。
- コレクションHashMapの原則、およびHashtableとConcurrentHashMapの違いは?
- Javaスレッドプールのコア属性と処理フロー
- Javaコンカレントパッケージの原則、同期キーワード、ロック
- スレッドのライフサイクル
- JVMクラスローディングメカニズム
- JVMメモリモデル
- JVMの生成とガベージコレクションのメカニズム
- Spring Beanコンテナーのライフサイクル
- 春のAOP原則
- ダボリクエストプロセスと原則
- データベースSQL最適化、データベースインデックス、インデックス原則
- ……
たくさんのナレッジポイントを見て、すぐにびっくりしましたが、いつまでにたくさんのナレッジポイントを読まなければならないのでしょうか?しかし、後で理解したいと思います。実際、それらすべてを理解する必要はありませんが、知識ポイントのほとんどを理解する必要があり、これらの最も知識のあるポイントのいくつかは深く理解する必要があります。このレベルに達した場合、基本的には評価に合格できます。
基本的な知識の評価は、主にアリの最初の2回の電話インタビューに現れました。このため、事前によくある面接の質問を読んでおり、基本的に複数面接で問題はありません。
2.プロジェクトの経験の評価
基本的な知識の評価に合格したら、次のレベルのテスト、つまりプロジェクトの理解度に進みます。
インタビュアーはまず、自分が得意なプロジェクトを選択してアーキテクチャ図を描き、その後の質問はすべてこのアーキテクチャ図からトリガーされます。アーキテクチャ図を描いた後、各モジュールの役割、各フレームワークの原理、および他のフレームワークとの違いを明確に説明する必要があります。
たとえば、クラシックプロジェクトとして行った検索プロジェクトを使用して、インタビュアーと話し合います。
プロジェクトでKafkaフレームワークが使用されている場合、インタビュアーはKafkaとRocketMQの違いは何ですか、そして2つの違いは何ですか?
AlibabaのオープンソースフレームワークであるCanalもプロジェクトで使用されているので、インタビュアーは当然、これが何のためのもので、原理は何ですか?
Zookeeperはプロジェクトのコーディネーターとしても使用されているので、このプロジェクトでのZookeeperの役割とは何ですか?
「プロジェクト理解」の評価は、3回または4回の技術面接で行われます。このレベルでは、きちんとしたプロジェクトがあり、すべてのフレームワークと原則をよく理解している必要があります。そうしないと、虐待されます。
3.プロジェクトの深さの評価
「プロジェクト理解」評価の最後のラウンドに合格すると、基本的にプロジェクト全体を包括的に理解できるようになり、アプリケーションレベルの問題によって基本的に問題が解決されることはありません。しかし、「プロジェクト思考の深さ」の評価では、それは単に評価適用レベルの問題ではありません。
今でも例として行った検索プロジェクトを使用します。オープンソースフレームワークであるCanalは、当面はクラスタリング機能を実装していません。インタビュアーは次のように尋ねました。
Canalのクラスター機能を実現するために、このプロジェクトをどのように変換しますか?
現時点では、この問題について考えたことがないために混乱していることがわかります。すべての作業内容は、オープンソースフレームワークの使用方法を考えています。これらのオープンソースフレームワークが優れているかどうか、および何を改善できるかについては、さらに考えていません。
したがって、このレベルで評価されるのは、オープンソースフレームワークについてのあなたの考えの深さ、これらのフレームワークが優れているかどうか、優れているもの、悪いもの、および改善できるものです。
「プロジェクト思考の深さ」の評価は、技術面接の第3または第4ラウンドでも行われます。このレベルでは、プロジェクト自体を十分に理解するだけでなく、プロジェクト自体から飛び出し、オープンソースフレームワーク自体の問題について考える必要があります。
4、まとめ
戻って要約すると、これらの3つのレベルは漸進的で徐々に深まっていることがわかります。これはインタビューでまとめた経験ですが、優れた学習ガイドです。読者は自分自身で現在の場所を確認できるため、作業の上位レベルに進むことができます。
私にとって不足しているのは、プロジェクトに対する考え方の深さであり、業界では何度も良いと思っているので、それを利用しています。しかし、上級開発者、またはアーキテクトになろうとしている上級開発者でさえ、これらのフレームワークを使用する理由を知っている必要がありますか?それの何が問題になっていますか?この方法でのみ成長できます。
アリババのインタビューの質問:
一方(主にjvm、並行性、ロック、データ構造など)
- 自己紹介(得意なことやスキルについて話す)
- ツリーマップとハッシュマップの違いについて話してください。HashMapとConcurrentHashMapの違いは?
- HashMapの最下層を実現する方法(JDK1.8の変更)
- ハッシュの一貫したアルゴリズムについて話しますか?
- どのGCアルゴリズムとリサイクル戦略を知っていますか?GCのメカニズムは何ですか?
- ガベージコレクターの基本原則?メモリをすぐに解放できますか?ガベージコレクションのためにJVMに積極的に通知する方法は?
- 親委任モデルメカニズムのスレッドプール作成のコア構築パラメーターは何ですか?
- 楽観的ロックと悲観的ロック?再入可能ロックと同期?それらはすべて再入可能ロックですか?どちらがより効率的ですか?
- CountDownLaunchとCylicbarriorの違いと、それらはどのシナリオで使用されますか?
- HttpとHttpsの違いとHttps暗号化の方法は何ですか?
- 今後のキャリアプランとアイデア
両面(主にデータベース、プロトコル、Springなど)
- 自己紹介し、よくできていると思うプロジェクトについて話します。
- InnoDBがサポートする4つのトランザクション分離レベルの名前は何ですか?それらの違いは何ですか?MySQL分離レベルとは何ですか?
- トランザクションの特性について話しますか?遅いクエリの分析について話しますか?
- BTreeメカニズムを理解していますか?
- MySQLで一般的に使用される最適化方法は何ですか?6. Httpリクエストプロセス、DNS解決プロセス?7. 3ウェイハンドシェイクおよび4ウェイハンドシェイクプロセス?
- B +ツリーインデックスとハッシュインデックスの違いは何ですか?
- Spring IOCはBean間の依存関係をどのように管理し、循環依存関係を回避する方法を教えてください。
- SpringBeanの作成における設計パターン?11. AOPの実現原理について話しますか?
- Tomcatの基本的なアーキテクチャは何ですか?
3つの側面(主にキャッシング、並行性、分散)
- 独自のプロジェクトにまとめられた同時実行の経験
- MySQLロックの同時実行性について話しますか?ロックメカニズムとは何ですか?
- 同時実行性の高いシナリオでデッドロックを防ぎ、データの一貫性を確保するにはどうすればよいですか?
- クラスタリングと負荷分散のアルゴリズムと実装?
- サブライブラリとサブテーブルの設計について話しますか?
- サブデータベースとサブテーブル、および対応する戦略によってもたらされる分散型ジレンマは何ですか?
- RedisおよびSetnxコマンドはどのように分散ロックを実装しますか?
- 非同期キューにRedisを使用する方法?欠点は何ですか?
- キャッシュの内訳の概念と解決策は?
- Redisデータ構造?スレッドモデル?Redisデータ削除メカニズム?
- データの一貫性の問題12. Redis MQの基本原理の実現?
- Javaを使用せずにブロッキングキューを実装する方法
- 負荷分散の原理についてお話しください。
- 高並行性環境でピークシェービングと電流制限を実現するにはどうすればよいですか?
リアルバイドゥインタビューの質問:
バイドゥ側
- 手書きのArrayList
- 手書きの16進変換アルゴリズム、数値の2進数1の数を見つけます
- JAVA基本と等しい==
- マルチスレッドモード、threadlocal、さまざまなロック、同期およびロック
- デザインパターン、スプリングクラス読み込みメソッド、インスタンスの保存場所、aop ioc、リフレクションメカニズム
- クラスローダー、親委任モデル、ホットデプロイメント
- JVMメモリモデル、メモリ構造、ヒープの世代別アルゴリズム、ヒープのパーティション、GCアルゴリズム、GCプロセス。
- tcp ip取得と送信、長さ、セキュリティの7層レストインターフェイス仕様の違い。
- tcp ipのarpプロトコル。同じネットワーク上の2つのホストが互いのMACアドレスを取得する方法。
- 負荷分散、高並行性、高可用性アーキテクチャ
- MySQLエンジンの違い
- Redisキャッシュ、redisクラスターデプロイメント、ホットバックアップ、マスター/スレーブバックアップ、マスター/スレーブデータベース、指定されたノードを見つけて知るためのハッシュマップ。
- クラウドコンピューティングについて知っていますか、クラウドコンテナーDockerについて知っていますか、コンテナーと仮想マシンの違い
百度二面
- プロジェクトの責任者を紹介します
- プロジェクト、マスタースレーブデータベース、クラスターのデータベースバックアップ
- データベースインデックスの原則、b +ツリーの原則、ツリーの拡張、バイナリ検索ツリーの原則
- 大量のデータから単語を検索、分散計算マップを削減、またはhsahマッピングを使用して部分的な結果をフィルタリング
- Java抽象クラスとインターフェース、Javaハッシュマップ、Javaメモリモデル、パーティション、世代別ガベージコレクションアルゴリズムの違い。インスタンスと定数を配置する場所。
- Int 4バイト、double 8バイト。
- マルチスレッドにおける待機とスリープの違い、通知の役割
- 設計パターンが理解すること、オブザーバーパターンを記述します。1つはサブジェクトでもう1つはオブザーバーである2つのインターフェイスを実装し、対応するメソッドを記述します。
- プロデューサー-コンシューマーキューメソッドを記述し、プロデューサーとコンシューマーを表す2つのクラスを記述し、キューを使用してその生産と消費をシミュレートします。これは、whileループとwaitnotifyで実現できますが、同期キーワードをキューに追加するのを忘れたため、別の質問を書きましょう。書かれていることは、文字列を入力し、1回だけ現れる最初の文字を入力して、それを書き出すことです。
- tcp ipの4つのウェーブされたサブネットマスク、サブネットマスク(サブネットマスク)の機能は、ネットワークマスク、アドレスマスク、サブネットマスクとも呼ばれます。これは、IPアドレスのどのビットを示すために使用される一種の識別です。ホストが配置されているサブネット、およびホストのビットマスクを識別するビットです。サブネットマスクは単独では存在できません。IPアドレスと組み合わせて使用する必要があります。サブネットマスクには1つの機能しかありません。これは、IPアドレスをネットワークアドレスとホストアドレスの2つの部分に分割することです。
- Linuxを知っていますか、Linuxのカーネルロックについて話していますか?触れていません。
- sedを使用したことがありますか?シェルスクリプトを使用して、テキスト内の文字を置き換えるスクリプトを記述します。Linuxはもうない
百度三面
- 自己紹介
- モジュール、どのモジュール、プロジェクト1の構造を担当するので、私はあまりにも長い間忘れていたと言って、最新のプロジェクトについて話しました。
- データベース接続プール、構成ファイル、データベースドライバーのダウンロード方法、永続化レイヤーフレームワークとは何ですか。
- データベース接続プールを使用する理由と利点は何ですか。
- 変数とインスタンスが存在するJavaのメモリモデル。Javaスタックの役割、Javaスタックに格納されるもの、およびメソッド領域に格納されるもの。
- Javaの世代別コレクション。
- プロジェクトがクラウドホストにデプロイされる方法、速度の向上とは何か、なぜ改善があるのか?答えは主に機器のパフォーマンスと帯域幅についてです。
- tomcatの構成、ヒープの初期サイズはどのくらいか、わかりません。
- 発生した問題を尋ねます。
- 問題が発生したときに何をすべきか尋ねます。
- 圧縮能力
- 長所と短所
- 残業を受け入れる。
- 同僚が仕事の問題に協力しない場合はどうすればよいですか?
- 始めるための簡単な方法。
- いくつかのポイントを引用する通常の学習方法。
- キャリアプランニング
最後に、
仲間のプログラマーに読んでくれてありがとう。よろしくお願いいたします。共有するように努力します。それを好きな友達がそれに注意を払うことができます。インタビューを通じて、あなたのお気に入りのオファーを入手してください。
面接の質問に答えて解決するには、ここをクリックして、ここをクリックして、ここに信号を返信してください。CSは無料で受け取ることができます。さまざまなインタビューの質問と回答の分析、Javaの高度なアーキテクチャの知識ポイントのリソースが含まれています。これに限定されない(分散アーキテクチャ、高並行性、JVMパフォーマンスチューニング、Spring、MyBatis、Nginxソースコード分析、Redis、ActiveMQ、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginxおよびその他の知識ポイント)分析)主要なインターネット企業の才能があり、共通の進歩についてコミュニケーションと議論ができます。
共有するその他のメモ
最新かつ最も完全なドキュメント共有インタビュー、大規模なインターネットの顔の質問と回答を理解するための最初のステップ、直接ここをクリックできる興味のあるインタビュー要約ドキュメント、ここ、ここに返信信号; CSは大規模なインターネット企業のインタビュー回答の無料(簡単ではない)を受け取ることができます詳細を入手!