技術面接を受けます(レベル2)

画像



これは、ソフトウェア業界で仕事をする過程をより楽しく面白いものにする記事の続きです。 むしろ、あなたが主人公であるゲームのチートコードとして考えるべきであり、リクルートメントマネージャーに対して発言する準備をしています。



レベル2:ボス、開発主任



主任開発者:



アクターが役割を取得する前にオーディションを受けるように、ソフトウェア開発者にインタビューします。 もちろん、開発者への「聞き取り」は、候補者の能力を判断する一連の技術的な質問で構成されます。



彼らはあなたの履歴書と以前の仕事を見て、あなたがこのポジションにふさわしいかどうか言うことができませんか? そのように見えますが、残念ながら、ここでは100%確信が持てません。 たとえば、履歴書の事実をうそをつく、または誇張することができます。 または、履歴書があいまいな場合や不完全な場合があります。



たとえば、.NETの1人の候補者が3年の経験を積むと、3か月に及ぶ数か月の作業が発生し、別の人は3年間すべて同じ分野で毎日集中的に作業できます。 そして、私たちは皆、仕事の経験が常に有用なスキルを獲得することに関連しているわけではないことをよく知っています。 時々、下位の従業員は上司よりも賢く、インタビューでの質問は特に見つけるために設計されています。



発生する可能性のある技術的な問題は、通常、3つの部分に分けられます。一般的にこの分野の知識をテストする質問、プログラミングとアルゴリズムに関する質問、およびシステムアーキテクチャに関する質問です。 実際、多くのインタビュアーは経験に関係なくすべての候補者に同じ質問をします。



一般的な技術知識をテストする質問には、はい/いいえの回答が含まれます。 特定のプログラミング言語の用語と一般原則を繰り返すことで準備できます。



CareerCupやGlassdoorなどのWebサイトで、多くの一般的なインタビューの質問を見つけることができます。 検索するときは、受け取った回答をどこでどのように使用できるかに注目してください。



すぐに答えを思い出せない場合、すべてが失われることはありません。 この場合、他のプログラミング言語の知識を応用したり、別の方法で答えを覚えたりすることができます。



回答がわからないことを面接官に説明しますが、推測するようにしてください。 場合によっては、質問に対する直接的な回答よりも、技術に関するより高いレベルの知識を示すことができます。



プログラミングとアルゴリズムに関する質問は、純粋な知識よりも多くのスキルをテストするように設計されています。 プログラミングと問題解決のスキルはここでテストされます。 これらの質問はあなたに考えさせるべきです。 しかし、これは実際には良いニュースです。 ここでは、答えを知る必要はありません。 インタビュアーは、あなたがどのように問題に取り組んでいるかを見たいと思っています。



これらの質問のいくつかは、パターンとアルゴリズムの知識に合わせて調整される場合があります。



チートコード:各質問に対するあなたの答えは、同じ質問に対する他の候補者の答えと比較して評価されます。 完璧になろうとしないでください!



これらの質問に答えるには、次のテクニックが役立ちます。



質問する



インタビュアーがいくつかの詳細を逃したか、 あなたが聞き間違えかもしれません 。 間違った方向に考えないために、質問を繰り返して、よくわからない詳細を見つけてください。



例を使用する



問題の解決策がすぐに見つからない場合は、例を参考にして自分の方向を決めてください。 この場合、例が適切であることを確認してください。



大声で話す



インタビュアーは、問題を解決するためにどのアプローチを使用するかを知りたいと考えています。 大声で話すと、あなたは彼/彼女があなたの知識を評価するのを手伝います。 また、あなたが話している相手の表情とその行動によって、あなたが正しい方向に動いているかどうかを(場合によっては)判断できるので、あなたにとっても便利です。 インタビュアーがあなたにヒントを与えることさえあります。



擬似コード



これが役立つ場合は、メインコードに進む前に、最初にシンボリックコードを記述します。 これは、複雑なコードや詳細が多いコードを作成する場合に特に役立ちます。



手でコードを書く



コードを書くためのコンピューターが与えられない場合があります。 ほとんどの場合、ペンと紙、または書くボードを受け取ります。 インタビュアーは注意を払わないかもしれませんが、どこかでコロンを見逃した場合は、コードに問題がないようにする必要があります。 このような場合の擬似コードは効果的ではありません(ただし、導入として役立ちます)。



確認する



コードの記述が終了したら、ソース管理システムでのみチェックしますか? もちろん違います。 また、インタビューでは、すべてを書いたからといって、すべてが準備できていると考えるべきではありません。 インタビュー中に書かれたコードも検証する必要があります。 いいえ、この場合もコンピューターは提供されませんが、いくつかの例を使用して手作業でコードを確認できます。



間違いを見つけた場合-ほとんどの場合そうですが-パニックに陥らないでください! 間違いを犯しても大丈夫です。 特にコンピュータを与えられていない場合、完璧なコードをすぐに書くことを期待する合理的なインタビュアーはいません。 バグをよく考えて修正してください。



各質問に対するあなたの答えは、他の候補者の同じ質問に対する答えと比較して評価されます。 質問が複雑であればあるほど、答えを見つけるのに時間がかかり、各候補者のミスが増え、一般的に、それぞれがインタビューの全体的な印象を少し損ないます。 インタビュアーは、評価においてより柔軟になります。 あなたは完璧である必要はありません!



通常、 システムアーキテクチャに関する質問には、システムの構造の開発が含まれます。 メールシステムまたはtinyurl.comのようなものである可能性があります。



これらの問題では、条件を理解することから始める必要があります。 メールシステムを構築する必要があるとしましょう。 なぜ開発するのですか? 何百万人ものユーザーにサービスを提供するGmailやHotmailのような大規模システムを構築していますか? または、中小企業向けにシステムを開発しますか? どのプロトコルをサポートする必要がありますか? これらの問題は、最初にインタビュアーと議論する必要があります。



次に、システムのコンポーネントをリストする必要があります。 電子メールの場合、ほとんどの場合、受信メッセージと送信メッセージ用のサーバー、ある種のデータベース、および場合によってはシステム全体を管理する特定のサーバーが必要になります。 特に、GmailやHotmailのようなWebフロントエンドがある場合、ユーザーをシステムに含めることもできます。 これは、ボードに書くか、何らかの図面を描くのが最適です。



3番目のステップは、これらのコンポーネントがどのように連携するかを説明することです。 これらのコンポーネントはいつ、どのように相互作用しますか? 受信サーバーと送信サーバーは直接動作しますか、またはデータベースからのみ情報を読み取りますか?



次に、システムをより良くする方法を検討してください:より速く、より信頼性が高いなど。 大量のデータをどのように処理しますか? サーバーに障害が発生するとどうなりますか?



質問に応じて、使用するテクノロジーを詳細に伝えることができます。 特定の技術のプラスとマイナスの特徴を明らかにすることは理にかなっています。



ふう! トレーニングですね リクルートメントマネージャーと主任開発者を通過する方法に関する必要な情報を入手したので、次のレベルである次のボスであるソフトウェアマネージャーと直接会う時間です。



PSトピックに関する別の記事- 自由時間管理:現実か神話か?



翻訳の著者は、 MBA Consultの創設者であるVyacheslav Davidenkoです。



All Articles