Uber や Netflix などの企業でプログラミング、コーディング、ソフトウェア開発の職に応募するコンピューターサイエンスの卒業生やプログラマーはたくさんいます。 Amazon、Microsoft、Google などの大規模な組織、および Infosys や Luxsoft などのサービスベースの企業。しかし、これらの企業に就職を申し込む場合、面接でどのようなプログラミングの質問が予想されるか分からない企業が多くあります。 この記事では、大学を卒業したばかりの人から 1 ~ 2 年の経験を持つプログラマーまで、さまざまな経験レベルのプログラマーからよく聞かれるアルゴリズムとデータ構造に関する面接の質問をいくつか紹介します。 コーディング面接は主にデータ構造とアルゴリズムに基づく質問と、「一時変数を使用せずに 2 つの整数を交換するにはどうすればよいですか?」などの論理的な質問で構成されていました。 コーディング面接の質問をさまざまなトピック領域に分割すると役立つと思います。面接でよく見かけるトピック領域は、配列、リンクリスト、文字列、バイナリツリー、アルゴリズムに関する質問(文字列アルゴリズム、クイックソートや基数ソートなどのソートアルゴリズム、その他さまざまなもの)であり、この記事ではそれらについて説明します。 コーディングやデータ構造、アルゴリズムに関する質問が必ずされるという保証はありませんが、実際のプログラミング関連の面接でどのような質問を受ける可能性があるかを知るには役立ちます。 これらの質問に答えれば、どんな面接にも自信を持って臨めるはずです。 ちなみに、基本的なデータ構造やアルゴリズムに関する十分な知識がない場合、または長年触れていない場合は、これらの質問に挑戦しても意味がありません。 この場合、Robert Horvick による「Algorithms and Data Structures Part 1」および「Part 2」のような優れたコースを受講して、DS とアルゴリズムのスキルを復習する必要があります。 アルゴリズムとコーディングに関する面接の質問トップ 50 では、これ以上長々と説明せずに、プログラミング関連の就職面接で最もよく聞かれるコーディング面接の質問のリストを以下に示します。ほとんどの問題に対する解決策を Java でも共有しましたが、Python 開発者であれば、Python でのロジックと実装を確認できます。ほとんどの質問は非常に一般的なので、Google で検索して答えを見つけることもできます。 1. 配列コーディング面接の質問 配列は、連続したメモリ位置に要素を格納する最も基本的なデータ構造です。これは面接官の間でも主要な話題であり、配列の反転、配列のソート、配列内の要素の検索など、コーディング面接では配列に関する多くの質問を聞くことになります。 配列データ構造の主な利点は、インデックスがわかっている場合に高速な O(1) 検索が実現できることですが、配列は作成後にサイズを変更できないため、配列への要素の追加や削除は遅くなります。 より短い配列またはより長い配列を作成するには、新しい配列を作成し、古い配列から新しい配列にすべての要素をコピーする必要があります。 配列ベースの問題を解決する鍵は、配列データ構造だけでなく、ループ、再帰、基本演算子などの基本的なプログラミング構造にも精通していることです。 練習用に、配列ベースのコーディングに関する面接でよく聞かれる質問をいくつか紹介します。
これらの質問は、問題解決能力を向上させるだけでなく、配列データ構造に関する知識も向上させます。 より高度な配列ベースの質問が必要な場合は、「Coding Interview Bootcamp: Algorithms + Data Structures」もご覧ください。これは、Google、Microsoft、Apple、Facebook などの大手テクノロジー企業に就職するための面接準備用に特別に設計された、アルゴリズムに関するブートキャンプ形式のコースです。 10 問では足りず、さらに練習が必要だと感じた場合は、この 30 問の配列質問のリストも確認してください。 2. リンクリストプログラミングの面接の質問 リンク リストは、配列を補完するもう 1 つの一般的なデータ構造です。配列と同様に、これも線形データ構造であり、要素を線形に格納します。 ただし、配列とは異なり、連続した場所に格納されるのではなく、メモリ内に分散され、ノードを使用して相互に接続されます。 リンク リストは、各ノードに格納された値と次のノードのアドレスが含まれるノードのリストです。 この構造のため、配列を作成するのではなくリンクを変更するだけでよいため、リンクリストからの要素の追加と削除は簡単ですが、検索は難しく、要素を見つけるのに通常 O(n) 時間がかかります。単一リンクリスト。 この記事では、配列とリンクリストのデータ構造の違いについて詳しく説明します。 また、リンク リストにはさまざまな種類があり、一方向 (前方または後方) に移動できるリンク リスト、両方向 (前方と後方) に移動できる二重リンク リスト、そして最後に、円を形成する循環リンク リストがあります。 リンク リストは再帰的なデータ構造であるため、リンク リスト ベースの問題を解決するには、再帰に関する十分な知識が重要です。 リンクリストからノードを取得した場合、残りのデータ構造は依然としてリンクリストのままであるため、多くのリンクリストの問題では反復的な解決法よりも再帰的な解決法の方が単純になります。 以下に、リンク リストの面接で最も頻繁に尋ねられる質問とその解決策をいくつか示します。
これらの質問は、問題解決能力を向上させ、リンク リスト データ構造に関する知識を深めるのに役立ちます。 これらのリンク リストのコーディング問題を解決するのに苦労している場合は、「データ構造とアルゴリズム: Java を使用した詳細な学習」コースを受講して、データ構造とアルゴリズムのスキルをリフレッシュすることをお勧めします。 より多くの練習問題が必要な場合は、この 30 個のリンク リスト面接質問のリストもご覧ください。 3. 文字列コーディングの面接の質問 配列やリンクリストのデータ構造とともに、文字列はプログラミングの就職面接でよく取り上げられるトピックです。文字列ベースの質問がされなかったコーディング面接を受けたことはありません。 文字列の良い点の 1 つは、文字列は単なる文字の配列であるため、配列を知っていれば文字列ベースの問題を簡単に解決できることです。 したがって、配列ベースのコーディング問題を解決する際に学んだすべてのテクニックは、文字列プログラミング問題を解決する際にも適用できます。 プログラミングの就職面接でよく聞かれる文字列エンコードに関する質問の一覧を以下に示します。
これらの質問は、データ構造としての文字列の理解を深めるのに役立ちます。これらの文字列の問題をすべて誰の助けも借りずに解くことができれば、あなたは良い状態です より高度な問題については、最も難しいアルゴリズムの問題を扱った本である Steven Skiena 著の『Algorithm Design Manual』に掲載されている問題を解くことをお勧めします。 さらに練習が必要な場合は、文字列エンコードの問題 20 個の別のリストを参照してください。 4. バイナリツリーコーディングの面接の質問 これまでは線形データ構造のみを学習してきましたが、現実世界のすべての情報を線形で表現できるわけではありません。そこでツリー データ構造が役立ちます。 ツリー データ構造は、データを階層的に保存できるデータ構造です。データの保存方法に応じて、各ノードに最大 2 つの子があるバイナリ ツリーなど、さまざまな種類のツリーがあります。 近い関係にある二分探索木とともに、最も一般的なツリー データ構造の 1 つです。したがって、それらをトラバースする方法、ノードを数える方法、深さを見つける方法、バランスが取れているかどうかを確認する方法など、それらに基づいた多くの問題が見つかります。 バイナリ ツリーの問題を解決する上で重要なポイントは、バイナリ ツリーの大きさや深さ、リーフとは何か、ノードとは何かといった理論をしっかりと理解することと、前方トラバーサル、後方トラバーサル、順序付きトラバーサルなどの一般的なトラバーサル アルゴリズムを理解することです。 以下は、ソフトウェア エンジニアや開発者の面接でよく聞かれるバイナリ ツリー ベースのコーディングに関する質問の一覧です。
バイナリ ツリー コーディングの理解が不十分で、これらの問題を自力で解決できないと感じる場合は、「From 0 to 1: Data Structures and Algorithms in Java」などの優れたデータ構造とアルゴリズムのコースを受講することをお勧めします。 さらに提案が必要な場合は、役立つデータ構造アルゴリズムの書籍とコースのリストを参照してください。 5. その他のコーディング面接の質問 データ構造に基づく質問に加えて、ほとんどのプログラミングの就職面接では、アルゴリズム、設計、ビット操作、および一般的なロジックに基づく質問もされます。このセクションでは、それらについて説明します。 実際の面接でこれらの概念に対処するのは難しい場合もあるため、これらの概念を練習することが重要です。 事前に練習しておくと、問題に慣れるだけでなく、面接官に解決策を説明するときに自信が持てるようになります。
このようなコーディングに関する質問がさらに必要な場合は、Gayle Laakmann McDowell 著の「Cracking The Code Interview」などの書籍を参考にしてください。この本には、189 以上のプログラミングに関する質問と解答が掲載されています。就職面接のためにすぐに書ける素晴らしい本です。 ちなみに、練習で解く問題が多ければ多いほど、より良い準備ができます。したがって、50 個では十分ではなく、さらに必要だと思われる場合は、電話面接用の追加の 50 個のプログラミングの質問と、より包括的な準備のためのこれらの書籍とコースを確認してください。 コーディング面接の準備はできましたか? これらは、面接で良い結果を出すために役立つ最も一般的な質問の一部です。 これらの質問の多くは私のブログでも共有しているので、本当に興味がある場合は、いつでもそこで検索できます。 これらの一般的なコーディング、データ構造、アルゴリズムに関する質問は、あらゆるレベルのプログラミング職に就くために、あらゆる企業(大企業でも小企業でも)の面接に合格するために知っておく必要があるものです。 2018 年にプログラミングやソフトウェア開発の仕事を探している場合は、このコーディングの質問リストを使用して準備を始めることができます。 このリストには、準備するのに適したトピックが記載されており、また、自分の準備を評価して自分の強みと弱みを見つけるのにも役立ちます。 データ構造とアルゴリズムに精通することは、面接を成功させる上で非常に重要であり、ほとんどの時間をそこに集中すべきです。 さらに学ぶ:
|
>>: マイクロソフト、世界規模の公開顔認識データベース MS Celeb を削除
ダボスで開催された世界経済フォーラムで、マイクロソフトの元社長兼CEOのビル・ゲイツ氏が、ヤフー・フ...
[[432741]]小学生の頃、「暗算日常練習」の文章題に戸惑ったトラウマをまだ覚えていますか?ぜひ...
海外メディアの報道によると、食品・飲料業界では人工知能やモノのインターネット技術がますます頻繁に利用...
[[384945]]近年、人工知能 (AI) は強化学習アルゴリズムのサポートにより目覚ましい成果を...
ある観点から見ると、激しい競争は業界の人気を示しています。最近、人気のディープラーニングも論争を引き...
人工知能、モノのインターネット、産業インターネットなどがもたらすインテリジェント化の波は、技術発展の...
近年人気の技術である機械学習は、数多くの「人工知能」製品でよく知られているだけでなく、従来のインター...
[[407004]]工学部の学生は、さまざまなシミュレーターから切り離すことはできません。シミュレー...
量子コンピューティングは、常に次の産業革命の原動力と考えられてきました。さまざまな国やテクノロジー企...
2017年にはすでに「残高不足」が発生。今年、中国の人工知能開発は多くの進歩を遂げ、実りある成果を達...
ハッシュは、一般的に「ハッシュ」と翻訳され、「ハッシュ」と直接書き起こされることもあります。ハッシュ...
ポッドキャスト業界は、よりリラックスした、自然でカジュアルなオーディオストーリーテリングへと移行して...
[[375635]] 2020 年は激動の年であり、組織は数多くの課題に直面しました。 2021年に...