あなたは、コンピューターサイエンスまたはソフトウェアエンジニアリングの学位を取得して大学を卒業したばかりで、就職先を探しています。学生時代にコーディングが好きだったこと、仲間とクールなプロジェクトに取り組んだこと、そして開発者になりたいと思ったことを覚えています。 就職面接の準備を始めたものの、仕事の評価にどのアルゴリズムを覚えておくことが重要なのかがわかりません。あなたがそのような立場にあり、すぐに面接を受けることになったら、この記事は就職面接で必要になる可能性のあるコーディング アルゴリズムをすべて記憶するのに役立ちます。 ソフトウェア エンジニアの基本的な職務内容には、システムとアプリケーションの設計、強化、実装が含まれます。 これを行うには、ソフトウェア エンジニアは多くの複雑なアルゴリズムを覚える必要はありません。代わりに、実用的なライブラリ、フレームワーク、データベースを組み合わせて使用し、ソフトウェアのニーズを満たすツールを作成するように求められます。 ソフトウェア エンジニアリング分野の専門家によると、高度な検索アルゴリズムをいくつか知っておくと、最適化の際に役立ちますが、そうでない場合は、組み込みライブラリを使用する可能性が高くなります。そうは言っても、面接を受ける際に基本的な知識を持っておくべき重要なアルゴリズムのリストを以下に示します。 動的プログラミング 動的プログラミングは、再帰呼び出しの必要性を排除することで暗黙的な関数を最適化する戦略です。コードの特定の部分が複数回呼び出される再帰関数を見つけるたびに、動的プログラミングを使用することで大幅に改善できます。前のサブ関数の結果を保存することで再帰を排除し、複数回呼び出す必要がなくなります。これにより、時間の計算量が指数時間から多項式時間に短縮されます。動的プログラミングのカテゴリに分類されるアルゴリズムの例は次のとおりです。 バイナリ検索 名前が示すように、検索アルゴリズムは、データ構造と呼ばれる特定のコレクションから要素を検索するために使用されます。バイナリ検索は、ソートされた要素の配列と検索キーが指定されている場合に機能します。バイナリ検索は、中央の要素を選択して検索キーと比較し、キーが中央の要素の左側よりも小さい場合は、同じ方法でトラバースすることによって実装されます。今度は右側の部分でキーを検索します。バイナリ検索の時間計算量は 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 プラットフォーム
ダウンロードはデータの送信であることはご存じのとおりです。この点に関しては、すでに合意内容について多...
Python3 を使用して、写真内のすべての顔を認識して表示します。コードは次のとおりです。 # -...
近年、顔認識技術は、女性や有色人種の誤検出率の高さや、個人の自由やプライバシーへの悪影響など、常に世...
アルゴリズムは私たちの生活の中でますます一般的なものになってきています。しかし、アルゴリズムに関する...
[[255293]]明らかに、自動運転と5Gはチップビジネスそのものよりもはるかに魅力的です。 AI...
電気の「ジュージュー」という音が響くコンピューター室では、「スマートガーディアン」コンピューター室検...
AI ビデオ生成は、2024 年には次の最先端分野になる可能性があります。過去数ヶ月を振り返ると、R...
19 世紀以前、人々が集まるときには、人生の物語を語り、感情や考えを伝えるために、常に最も原始的な...
[[271210]]海外メディアの報道によると、マングローブ・キャピタル・パートナーズは今週、201...
[[441681]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...