ソフトウェア エンジニアのコーディング面接でよく聞かれるアルゴリズム トップ 10

ソフトウェア エンジニアのコーディング面接でよく聞かれるアルゴリズム トップ 10

あなたは、コンピューターサイエンスまたはソフトウェアエンジニアリングの学位を取得して大学を卒業したばかりで、就職先を探しています。学生時代にコーディングが好きだったこと、仲間とクールなプロジェクトに取り組んだこと、そして開発者になりたいと思ったことを覚えています。

就職面接の準備を始めたものの、仕事の評価にどのアルゴリズムを覚えておくことが重要なのかがわかりません。あなたがそのような立場にあり、すぐに面接を受けることになったら、この記事は就職面接で必要になる可能性のあるコーディング アルゴリズムをすべて記憶するのに役立ちます。

ソフトウェア エンジニアの基本的な職務内容には、システムとアプリケーションの設計、強化、実装が含まれます。

これを行うには、ソフトウェア エンジニアは多くの複雑なアルゴリズムを覚える必要はありません。代わりに、実用的なライブラリ、フレームワーク、データベースを組み合わせて使用​​し、ソフトウェアのニーズを満たすツールを作成するように求められます。

ソフトウェア エンジニアリング分野の専門家によると、高度な検索アルゴリズムをいくつか知っておくと、最適化の際に役立ちますが、そうでない場合は、組み込みライブラリを使用する可能性が高くなります。そうは言っても、面接を受ける際に基本的な知識を持っておくべき重要なアルゴリズムのリストを以下に示します。

動的プログラミング

動的プログラミングは、再帰呼び出しの必要性を排除することで暗黙的な関数を最適化する戦略です。コードの特定の部分が複数回呼び出される再帰関数を見つけるたびに、動的プログラミングを使用することで大幅に改善できます。前のサブ関数の結果を保存することで再帰を排除し、複数回呼び出す必要がなくなります。これにより、時間の計算量が指数時間から多項式時間に短縮されます。動的プログラミングのカテゴリに分類されるアルゴリズムの例は次のとおりです。

バイナリ検索

名前が示すように、検索アルゴリズムは、データ構造と呼ばれる特定のコレクションから要素を検索するために使用されます。バイナリ検索は、ソートされた要素の配列と検索キーが指定されている場合に機能します。バイナリ検索は、中央の要素を選択して検索キーと比較し、キーが中央の要素の左側よりも小さい場合は、同じ方法でトラバースすることによって実装されます。今度は右側の部分でキーを検索します。バイナリ検索の時間計算量は O(log n) です。ここで、n は配列内の要素数です。

ソートアルゴリズム

ソートアルゴリズムは配列をソートするために使用され、入力にはソートする必要があるデータのタイプが含まれます。データ セットは昇順または降順で並べ替えることができます。以下に、覚えておくべき重要なソートアルゴリズムをいくつか示します。

マージソート

マージソートは、分割統治アルゴリズムの原理に基づいています。これは、問題を小さな部分に分割し、それらを一つずつ解決し、最後にそれらを統合する実践を指します。マージソートは、配列を 2 つに分割し、両方の半分に対してソート関数を呼び出し、2 つの半分をソートしてから、マージ関数を使用してそれらを結合します。マージソートの時間計算量は O(n log n) です。

クイックソート

マージソートと同様に、クイックソートも分割統治アルゴリズムに基づいていますが、ソート機能がマージソートとは異なります。クイックソートは、最後の要素をピボット番号として選択し、それを中央に配置して、小さい数字を左側に、大きい数字を右側に配置することによって機能します。左側と右側は sort 関数で再度呼び出され、配列全体がソートされます。クイックソートの時間計算量は O(n^2) です。

深さ優先探索

DFS は、ノードから検索プロセスを開始し、左端のブランチの最後のリーフまで進む検索アルゴリズムです。左端の葉に到達した後、アルゴリズムはバックトラックを開始し、ツリーの右側をトラバースします。この DFS の問題は、サイクルがある場合にノードが複数回訪問される可能性があることです。 DFS の時間計算量は O(V + E) です。ここで、V と E はそれぞれグラフ内の頂点と辺の数を表します。

幅優先探索

BFS は DFS と同様にルートから開始する検索アルゴリズムです。ただし、左側のすべてのリーフをトラバースするのではなく、同じレベルの近くのノードを検索します。 1 つのレベルを走査した後、アルゴリズムは次のレベルに進み、要素が見つかるまで走査を続けます。 BFS の時間計算量は DFS と同じで、O(V + E) です。

カスタムデータ構造

場合によっては、一般的な定義済みデータ構造ではタスクに対応できず、より優れた強力なものが必要になることがあります。カスタム データ構造は、データ メンバーの目的に応じて、実際のオブジェクトまたは抽象オブジェクトになります。データ メンバーは、指定されたオブジェクトに属する変数と考えることができます。

ハッシュテーブル

ハッシュテーブルは、O(1) 時間でデータを保存、アクセス、変更するために使用されるデータ構造です。ハッシュ データ構造は、ハッシュ関数を使用して、特定の値を特定のキーにマッピングします。このキーは、これらの値にすばやくアクセスして取得するために使用されます。ハッシュが実行される効率は、使用されるハッシュ関数の種類によって異なります。

リンクリスト

通常、配列またはリンクされたデータ構造のコンポーネントは、連続したメモリ位置に格納されます。これによりスペースが占有され、一部のメモリ ブロックにアクセスできなくなります (つまり、メモリが不足した場合)。この問題を克服するために、リンク リスト データ構造が使用されます。この構造では、データは連続して格納されず、代わりにリスト内の各項目に次の要素の格納場所へのポインターがあります。最初の要素はヘッドと呼ばれ、最後の要素はテールと呼ばれます。

質問する

ソフトウェア エンジニアが知っておくべき最も重要なことは、顧客に尋ねることです。ほとんどのクライアントは彼らの視点を理解できず、開発者が質問をしない場合は、誤解により問題が発生する可能性があります。こうすることで、彼らが直面している困難だけでなく、彼らが達成しようとしている中核的な問題も理解できるようになります。

結論は

これらの基本的なアルゴリズムの知識があれば、面接に簡単に合格することができます。ソフトウェア エンジニアは通常、これらのアルゴリズムに依存して作業を行うわけではないことに注意してください。代わりに、それらは、コードがどのように機能するかを個人が理解しているかどうかをテストするために使用されます。それでは、次回の面接でのご健闘をお祈りいたします。

<<:  企業における機械学習: 次の 1 兆ドル規模の成長はどこから来るのでしょうか?

>>:  2020 年の企業向け最高の AI プラットフォーム

ブログ    

推薦する

Pudu Technology、新製品「Hulu」をリリース、4月19日より先行販売開始

人工知能やマルチセンサー情報融合などの技術の進化により、サービスロボットは急速に発展し、さまざまな分...

USTCのニューラルネットワークとエンドツーエンドのトレーニングフレームワークは、教育環境が学生の能力に与える影響を調査する

[[424271]]中国科学技術大学の研究者らは、教育コンテキスト認識型認知診断フレームワークを提案...

がん治療への新たな希望:AIが科学者の生きた人間の細胞の観察を向上

[[230060]]細胞生物学者と細胞研究者は、新しい細胞モデルツールを利用できるようになりました。...

...

...

...

マイクロソフト、人間の編集者をAIに置き換え、ジャーナリスト数名を解雇

[[328414]]マイクロソフトは、マイクロソフトニュースとMSNチームから数十人のジャーナリスト...

AdobeなどがAIを活用しアニメキャラクターのポーズ移行を実現する新タイプの「パペットアニメーション」を提案

人形アニメーションの制作は、クリエイターの手描きに頼るアニメーションと比べると、非常に手間のかかる作...

Llama 2 の中国語版はオープンソースであり、言語モデルとマルチモーダルモデルの両方を備えているため、完全に商用利用可能です。

7月19日、Metaはついに無料の商用版Llama 2をリリースし、オープンソースの大規模モデルの...

1人当たり6万ドル:2024年NVIDIA奨学金リストが発表、中国人5名が選出

今週の金曜日、待望の NVIDIA 奨学金の受賞者リストが発表されました。 NVIDIA 大学院フェ...

...

AIチップ市場で何が起こっているのか?

現在、AI チップ市場全体はディープラーニングを中心に展開しています。ディープラーニング (DL) ...

世界トップジャーナルPNASに掲載されました!科学者たちは理論上のコンピューターに基づく意識モデル「意識のあるチューリングマシン」を提案した。

5月下旬、トップの国際学術誌である米国科学アカデミー紀要(PNAS)は、昨年10月に査読が受理され...

検証可能な AI に向けて: 形式手法の 5 つの課題

人工知能は、学習、問題解決、合理的な思考や行動など、知能と直感的に関連付けられる機能を含め、人間の知...