疫病の影響で、ビデオ面接となっています。A 側の顔ぶれは、人事責任者 1 名とプロダクト マネージャー 1 名です。この面接の直接の責任者はテクニカル ディレクター A です。他の 2 人は別の部門の責任者であるようです (B C) 同じポジションにいます (まあ、全員 35 歳です)。
早速、本題に入りましょう。 (コロンで区切りたい人もいますが、キーボードのコロンキーとタブが壊れているようです)
冒頭、hrから面接に携わったメンバーや役職の紹介があり、その後にこんなことを聞かれました。プロダクト マネージャーは、Ben の退職理由と彼が知りたい問題について説明してくださいと尋ねました。
そして、本当のドラマが始まります。
ディレクター A: あなたは MySQL に精通しているようですが、MySQL の分離レベルについて教えてください。 。
私: MySQL トランザクションの分離レベルは最初から最高まで、コミットされていない読み取り、コミットされた読み取り、反復可能な読み取り、シリアル化されています。MySQL のデフォルトの分離レベルは反復可能な読み取りであり、トランザクションの同時実行により問題がダーティになる可能性があります。読み取り、繰り返し不可読み取り、ファントム読み取りに分けて、それぞれの動作とその原因となる解決策を説明します。
ディレクター A: 実際のシナリオで分離レベルを変更するための戦略は何ですか。
私: .... (ここでの省略記号は、私がナンセンスをでっち上げていることを意味します。実際、私は数千万のトラフィック データしか処理したことがないため、少し混乱していましたが、そうではありません)同時実行性が高いため、isolation. セクターの変更を必要としない、または思考の深さが十分ではありません)
ディレクター A: innodb のインデックスは何ですか、また、それらはどのように実装されていますか。
私: 主キーは一意の共通結合インデックスであり、B ツリー、B ツリー、ハッシュで実装できます。
ディレクター A: これらの実装の違いは何ですか?インデックスを設計するときに、それらを選択するためにどのような戦略を使用しますか?
私: B-treeとB-treeでは葉ノードのデータと木の深さが異なり、同じ検索を行う場合、B-treeの方がIOが1回多く必要になります。実際のビジネス シナリオに応じて、インデックス アルゴリズムを選択します。読み取りが多く、書き込みが少ない場合は、B ツリーを選択します (実際には忘れたのでわかりません)
ディレクター A: 分類と機能MySQL ロックの場合は、実際の作業でシナリオを使用します。
私:(これまでのインタビューが浅いところから深いところまであったので、この時は少し緊張していました)...それで自分の理解を簡単に述べましたが、実は満足のいく答えではありませんでした。 B と C は他の質問も挿入するためです。
ディレクター B: 分散についてご存知ですか? 分散ロックの実装方法は? etcd について学んだことがありますか?
私: これを実装するには、redis の setnx と有効期限を組み合わせて使用できます。なぜなら、私はこれを以前にビジネスで etcd で実装したことがありますが、これを理解したことがなかったからです (私のビジネスにはこの概念がありません)。また、(中断)
ディレクター C: 時間が限られていますので、他の質問を続けましょう。PHP の最適化を行ったかどうかと、opcahche の使用方法を見てみましょう。
私: (しばらく考えて)、オペコードの解析と最適化。
ディレクター C: オペコードはどこですか
私: これについては何の印象もありません (私はこれはまったく印象にありません) なぜなら、以前のビジネスシナリオに基づいて、フロントエンド、CDN、サーバーリバースプロキシ、データベースキャッシュ、プログラムロジックコードの最適化に至るまでプロジェクトの質的な改善を行ってきましたが、それはそれだけですopchache と opcode については触れていません。間違い)
ディレクター C: URL のプロセスを簡単に説明します。要点だけに注目してください。
私のブラウザは URL を入力して解析します。それを IP に変換し、Web サーバーにリクエストを送信します。nginx の場合は、CGI を通じて PHP-FPM に送信され、PHP スクリプトが解析、ロジックを処理し、データに応答するのを待ちます。
ディレクター C: cgi とは何ですか?何に使用されますか?
私: cgi はプロトコルであり、PHP などの言語が Web サーバーと通信するためのプロトコルです。
ディレクター B: PHP-FPM のアーキテクチャ モデルは何ですか?また、それをどのように最適化しましたか?
私: マスター(メイン)-ワーカー(ワーカープロセス)のアーキテクチャモデルです 実際にリクエストを処理するワークプロセスです マスターは主に子プロセスの管理と再利用を行います 最適化すると変更されますプロセス数の構成について簡単に説明します: 以前に構成された静的モードにより、デフォルトのプロセス数は 200 でした。後で、ある程度の同時実行性があった場合、「3 番目」の構成モードに変更する必要があります。プロセス数には最小値と最大値があり(実際には最大値はここでは忘れていますが、制限はないと思うだけです。結局のところ、ハードウェアリソースが上限です)、動的に増加します。実際のリクエスト数に基づくプロセス数。
ディレクター B: 他に最適化はありますか?
私: (しばらく黙っていました。実際、改訂中に他にも変更を加えましたが、本当に忘れていました。このインタビューは長すぎると感じました。)、その時は他の最適化も行いましたが、それらを思い出せません。
ディレクター B: あなたが使用している Rabbitmq とそれについてのあなたの理解を教えてください。
私: (rabbitmq のアーキテクチャを簡単に説明します) と私の使用シナリオとビジネス。
ディレクター B: あなたが使用しているトピック モードについて教えてください
私: (トピックの使用プロセスについて簡単に説明しました。これはパスとみなされます)。
ディレクター A: Redis シャーディングについて話しましょう。
私: シャーディングは、キーを複数の Redis インスタンスに分割するプロセスであり、複数のコンピューターのメモリと CPU の処理能力を使用して、、、、
ディレクター A : 実装方法ランキング リスト
私: Redis の順序付きセットを使用できます。これにはスコアがあるため、、、
部長A: その関数を使って値を取得してください
私: (思い出してみると本当に思い出せない) これは忘れました、何のメンバー関数ですか。
ディレクターA: AOPについて話しましょう。使ったことはありますか?
私: AOPアスペクトプログラミングとは、動的プロキシやその他のテクノロジーを使用して、機能モジュールの統合メンテナンスを実現することであり、laravelのようなものです。ファサード(わかりませんが、結局のところ、考えたら失敗します)。
部長A: hyperfの特徴について話しましょう
私: swooleというプラグイン型の高性能かつ柔軟性の高いコルーチンフレームワークをベースにしており、依存性注入、aopモードでコンテナ化されています。モード、イベント モード、、、
ディレクター A: コルーチン プールとコルーチンの状態管理について話しましょう
私: (ここでは実際には答えていません。実際、 、考えてみても、部分的にはまだ回答できます。少なくともコルーチンの状態管理については回答できます)
ディレクター A: Go を知っているなら、この質問は非常に簡単です。
ディレクター A: しましょうlaravel について話します
私 : (これが私の長所なので、一つずつ簡単には説明しません)
ディレクター B: Linux とシェル スクリプトについて話しましょう
Me: (Linux と一般的なコマンドと vi の簡単な紹介)、シェルの式と変数の定義と使用法は PHP 言語とは異なります。
ディレクター C: データのバッチ処理にマップ リデュースを使用しているようですが、それについて教えてください。
私はデータの処理に monogo のマップ リデュースを使用しています、、、(中断)
ディレクターC: hadoop のマップ リデュースを使おうと思っていました
ディレクター A: 今後の計画について教えてください
私: …
以上が私の時間です ビデオ インタビュー「100%復旧しました。後からよく考えてみたら、解決策がたくさんあったのですが、なぜこのインタビューの効果にばらつきがあったのでしょうか?リズムです。そう、リズムです。」私のリズムを乱したのは、面接官が「深い」内容を話してきたことです。
関連する推奨事項: 「PHP ビデオ チュートリアル 」「 PHP 面接の質問の概要 (コレクション) 」
以上が感染症流行中の中高年層の PHP 面接の要点を記録するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。