Java と Python のアルゴリズムとデータ構造に関する面接の質問

Java と Python のアルゴリズムとデータ構造に関する面接の質問

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) 検索が実現できることですが、配列は作成後にサイズを変更できないため、配列への要素の追加や削除は遅くなります。

より短い配列またはより長い配列を作成するには、新しい配列を作成し、古い配列から新しい配列にすべての要素をコピーする必要があります。

配列ベースの問題を解決する鍵は、配列データ構造だけでなく、ループ、再帰、基本演算子などの基本的なプログラミング構造にも精通していることです。

練習用に、配列ベースのコーディングに関する面接でよく聞かれる質問をいくつか紹介します。

  1. 1 から 100 までの整数の配列で欠落している数字を見つけるにはどうすればよいでしょうか? (解答)
  2. 与えられた整数の配列で重複する数字を見つけるにはどうすればよいでしょうか? (解決策)
  3. ソートされていない整数の配列で最大数と最小数を見つけるにはどうすればよいでしょうか? (解決策)
  4. 合計が指定された数値に等しいすべての整数のペアの配列をどのように見つけますか? (解答)
  5. 配列に複数の重複が含まれている場合、配列内の重複する数値を見つけるにはどうすればよいですか? (解決策)
  6. Java で指定された配列から重複を削除するにはどうすればよいでしょうか? (解決策)
  7. クイックソートアルゴリズムを使用して整数の配列をソートする方法は? (解決策)
  8. 配列から重複を削除するにはどうすればいいですか? (解決策)
  9. Java で配列を反転するにはどうすればよいですか? (解決策)
  10. ライブラリを使用せずに配列から重複を削除するにはどうすればよいでしょうか? (解決策)

これらの質問は、問題解決能力を向上させるだけでなく、配列データ構造に関する知識も向上させます。

より高度な配列ベースの質問が必要な場合は、「Coding Interview Bootcamp: Algorithms + Data Structures」もご覧ください。これは、Google、Microsoft、Apple、Facebook などの大手テクノロジー企業に就職するための面接準備用に特別に設計された、アルゴリズムに関するブートキャンプ形式のコースです。

10 問では足りず、さらに練習が必要だと感じた場合は、この 30 問の配列質問のリストも確認してください。

2. リンクリストプログラミングの面接の質問

リンク リストは、配列を補完するもう 1 つの一般的なデータ構造です。配列と同様に、これも線形データ構造であり、要素を線形に格納します。

ただし、配列とは異なり、連続した場所に格納されるのではなく、メモリ内に分散され、ノードを使用して相互に接続されます。

リンク リストは、各ノードに格納された値と次のノードのアドレスが含まれるノードのリストです。

この構造のため、配列を作成するのではなくリンクを変更するだけでよいため、リンクリストからの要素の追加と削除は簡単ですが、検索は難しく、要素を見つけるのに通常 O(n) 時間がかかります。単一リンクリスト。

この記事では、配列とリンクリストのデータ構造の違いについて詳しく説明します。

また、リンク リストにはさまざまな種類があり、一方向 (前方または後方) に移動できるリンク リスト、両方向 (前方と後方) に移動できる二重リンク リスト、そして最後に、円を形成する循環リンク リストがあります。

リンク リストは再帰的なデータ構造であるため、リンク リスト ベースの問題を解決するには、再帰に関する十分な知識が重要です。

リンクリストからノードを取得した場合、残りのデータ構造は依然としてリンクリストのままであるため、多くのリンクリストの問題では反復的な解決法よりも再帰的な解決法の方が単純になります。

以下に、リンク リストの面接で最も頻繁に尋ねられる質問とその解決策をいくつか示します。

  1. 単一リンクリストの中央の要素を 1 回のパスで見つけるにはどうすればよいでしょうか? (ソリューション)
  2. 指定されたリンク リストにサイクルが含まれているかどうかを確認するにはどうすればよいですか? サイクルの開始ノードを見つけるにはどうすればよいでしょうか? (ソリューション)
  3. リンクリストを逆にするにはどうすればよいですか? (解決策)
  4. 再帰なしで単リンクリストを逆にする方法は? (解決策)
  5. ソートされていないリンクリスト内の重複ノードを削除するにはどうすればよいでしょうか? (解決策)
  6. 単一リンクリストの長さをどのように調べますか? (解答)
  7. 単一リンクリスト内のチェーンの 3 番目のノードを見つけるにはどうすればよいでしょうか? (解決策)
  8. Stack を使用して 2 つのリンク リストの合計を求める方法 (ソリューション)

これらの質問は、問題解決能力を向上させ、リンク リスト データ構造に関する知識を深めるのに役立ちます。

これらのリンク リストのコーディング問題を解決するのに苦労している場合は、「データ構造とアルゴリズム: Java を使用した詳細な学習」コースを受講して、データ構造とアルゴリズムのスキルをリフレッシュすることをお勧めします。

より多くの練習問題が必要な場合は、この 30 個のリンク リスト面接質問のリストもご覧ください。

3. 文字列コーディングの面接の質問

配列やリンクリストのデータ構造とともに、文字列はプログラミングの就職面接でよく取り上げられるトピックです。文字列ベースの質問がされなかったコーディング面接を受けたことはありません。

文字列の良い点の 1 つは、文字列は単なる文字の配列であるため、配列を知っていれば文字列ベースの問題を簡単に解決できることです。

したがって、配列ベースのコーディング問題を解決する際に学んだすべてのテクニックは、文字列プログラミング問題を解決する際にも適用できます。

プログラミングの就職面接でよく聞かれる文字列エンコードに関する質問の一覧を以下に示します。

  1. 文字列から繰り返し文字を印刷するにはどうすればいいですか? (解決策)
  2. 2 つの文字列が互いにアナグラムであるかどうかをどのように確認しますか? (解答)
  3. 文字列から最初の非繰り返し文字を印刷するにはどうすればよいでしょうか? (解決策)
  4. 再帰を使用して特定の文字列を逆にするにはどうすればよいですか? (解決策)
  5. 文字列に数字のみが含まれているかどうかを確認するにはどうすればよいでしょうか? (解決策)
  6. 文字列内の繰り返し文字を見つけるにはどうすればいいですか? (解決策)
  7. 与えられた文字列内の母音と子音をどのように数えますか? (解答)
  8. 文字列内の特定の文字の出現回数をカウントするにはどうすればよいですか? (解決策)
  9. 文字列のすべての順列を見つけるにはどうすればよいでしょうか? (解答)
  10. ライブラリメソッドを使用せずに、特定の文の単語を逆にするにはどうすればよいですか? (解決策)
  11. 2 つの文字列が互いに回転しているかどうかをどのように確認しますか? (解答)
  12. 与えられた文字列が回文であるかどうかをどのように確認しますか? (解答)

これらの質問は、データ構造としての文字列の理解を深めるのに役立ちます。これらの文字列の問題をすべて誰の助けも借りずに解くことができれば、あなたは良い状態です

より高度な問題については、最も難しいアルゴリズムの問​​題を扱った本である Steven Skiena 著の『Algorithm Design Manual』に掲載されている問題を解くことをお勧めします。

さらに練習が必要な場合は、文字列エンコードの問題 20 個の別のリストを参照してください。

4. バイナリツリーコーディングの面接の質問

これまでは線形データ構造のみを学習してきましたが、現実世界のすべての情報を線形で表現できるわけではありません。そこでツリー データ構造が役立ちます。

ツリー データ構造は、データを階層的に保存できるデータ構造です。データの保存方法に応じて、各ノードに最大 2 つの子があるバイナリ ツリーなど、さまざまな種類のツリーがあります。

近い関係にある二分探索木とともに、最も一般的なツリー データ構造の 1 つです。したがって、それらをトラバースする方法、ノードを数える方法、深さを見つける方法、バランスが取れているかどうかを確認する方法など、それらに基づいた多くの問題が見つかります。

バイナリ ツリーの問題を解決する上で重要なポイントは、バイナリ ツリーの大きさや深さ、リーフとは何か、ノードとは何かといった理論をしっかりと理解することと、前方トラバーサル、後方トラバーサル、順序付きトラバーサルなどの一般的なトラバーサル アルゴリズムを理解することです。

以下は、ソフトウェア エンジニアや開発者の面接でよく聞かれるバイナリ ツリー ベースのコーディングに関する質問の一覧です。

  1. バイナリ検索ツリーを実装するにはどうすればいいですか? (ソリューション)
  2. 与えられたバイナリツリーで事前順序トラバーサルを実行するにはどうすればよいでしょうか? (ソリューション)
  3. 再帰なしで、与えられた二分木を事前順序でトラバースするにはどうすればよいでしょうか? (解決策)
  4. 与えられたバイナリツリーで順序どおりのトラバーサルを実行するにはどうすればよいでしょうか? (ソリューション)
  5. 再帰なしで、順序付きトラバーサルを使用して、指定されたバイナリ ツリーのすべてのノードを印刷するにはどうすればよいですか? (ソリューション)
  6. 後順序トラバーサルアルゴリズムをどのように実装しますか? (ソリューション)
  7. 再帰なしで後順走査でバイナリ ツリーを走査する方法は? (ソリューション)
  8. バイナリ検索ツリーのすべての葉を印刷するにはどうすればよいでしょうか? (解決策)
  9. 与えられたバイナリツリーのリーフノードの数を数えるにはどうすればよいでしょうか? (解決策)
  10. 与えられた配列でバイナリ検索を実行するにはどうすればよいでしょうか? (解決策)

バイナリ ツリー コーディングの理解が不十分で、これらの問題を自力で解決できないと感じる場合は、「From 0 to 1: Data Structures and Algorithms in Java」などの優れたデータ構造とアルゴリズムのコースを受講することをお勧めします。

さらに提案が必要な場合は、役立つデータ構造アルゴリズムの書籍とコースのリストを参照してください。

5. その他のコーディング面接の質問

データ構造に基づく質問に加えて、ほとんどのプログラミングの就職面接では、アルゴリズム、設計、ビット操作、および一般的なロジックに基づく質問もされます。このセクションでは、それらについて説明します。

実際の面接でこれらの概念に対処するのは難しい場合もあるため、これらの概念を練習することが重要です。

事前に練習しておくと、問題に慣れるだけでなく、面接官に解決策を説明するときに自信が持てるようになります。

  1. バブルソートアルゴリズムを実装するにはどうすればいいですか? (ソリューション)
  2. 反復クイックソートアルゴリズムを実装するにはどうすればいいですか? (ソリューション)
  3. 挿入ソートアルゴリズムをどのように実装しますか? (解答)
  4. マージソートアルゴリズムを実装するにはどうすればいいですか? (ソリューション)
  5. バケットソートアルゴリズムを実装するにはどうすればいいですか? (ソリューション)
  6. カウントソートアルゴリズムをどのように実装しますか? (ソリューション)
  7. 基数ソートアルゴリズムを実装するにはどうすればいいですか? (ソリューション)
  8. 3 番目の変数を使用せずに 2 つの数値を交換するにはどうすればよいでしょうか? (解決策)
  9. 2 つの長方形が重なり合っているかどうかを確認するにはどうすればよいでしょうか? (解決策)
  10. 自動販売機はどのように設計しますか? (解答)

このようなコーディングに関する質問がさらに必要な場合は、Gayle Laakmann McDowell 著の「Cracking The Code Interview」などの書籍を参考にしてください。この本には、189 以上のプログラミングに関する質問と解答が掲載されています。就職面接のためにすぐに書ける素晴らしい本です。

ちなみに、練習で解く問題が多ければ多いほど、より良い準備ができます。したがって、50 個では十分ではなく、さらに必要だと思われる場合は、電話面接用の追加の 50 個のプログラミングの質問と、より包括的な準備のためのこれらの書籍とコースを確認してください。

コーディング面接の準備はできましたか?

これらは、面接で良い結果を出すために役立つ最も一般的な質問の一部です。

これらの質問の多くは私のブログでも共有しているので、本当に興味がある場合は、いつでもそこで検索できます。

これらの一般的なコーディング、データ構造、アルゴリズムに関する質問は、あらゆるレベルのプログラミング職に就くために、あらゆる企業(大企業でも小企業でも)の面接に合格するために知っておく必要があるものです。

2018 年にプログラミングやソフトウェア開発の仕事を探している場合は、このコーディングの質問リストを使用して準備を始めることができます。

このリストには、準備するのに適したトピックが記載されており、また、自分の準備を評価して自分の強みと弱みを見つけるのにも役立ちます。

データ構造とアルゴリズムに精通することは、面接を成功させる上で非常に重要であり、ほとんどの時間をそこに集中すべきです。

さらに学ぶ:

  • データ構造とアルゴリズム: Java による深掘り
  • 技術計画/コーディングの就職面接に備えるための 10 冊の本
  • すべてのプログラマーが読むべきアルゴリズムの本 10 冊
  • Java 開発者向けのデータ構造とアルゴリズムに関するベスト 5 書籍
  • 0から1へ: Javaのデータ構造とアルゴリズム
  • データ構造とアルゴリズム分析 - 就職面接
  • プログラマーのためのデータ構造とアルゴリズムに関する100以上の質問
  • プログラマーのためのシステム設計面接の質問 20 選

<<:  大学入試特集:AI出願ガイド

>>:  マイクロソフト、世界規模の公開顔認識データベース MS Celeb を削除

ブログ    
ブログ    
ブログ    

推薦する

MITが家中に設置できる紙のように薄いスピーカーを開発

MITのエンジニアたちは、あらゆる表面を音源に変えることができる紙のように薄いスピーカーを開発した...

10億の顔データが完全に削除されました! Facebookが顔認識ツールを廃止

[[434362]] 11月3日、Facebookは写真のタグ付けに顔認識機能を使うのをやめると発表...

ディープラーニングの仕組み: 今日の AI を支えるニューラル ネットワークの内部を覗いてみよう

[[428985]] [51CTO.com クイック翻訳]今日の人工知能の繁栄は、人工ニューラルネッ...

採血時に血管が見つからない?人工知能には解決策がある

[[318810]]ビッグデータダイジェスト制作出典: rutgers.edu編纂者:張大毓如、夏亜...

人工知能の登場で、自動化は恐怖に震えるべきでしょうか?

歴史は、人々に気づかれずに何度も同じ冗談を繰り返す、昔のいたずらっ子のようなものです。歴史は単なるジ...

ビジネスを阻害する 6 つの AI 神話

AI テクノロジーは職場環境に深く浸透しており、単調で反復的な手作業を置き換えるだけでなく、他の仕事...

小中学校の授業に人工知能教育が取り入れられました!

近年、人工知能分野の発展はますます加熱し続けており、現在の人材不足が注目を集めています。国務院が20...

GPT-4 が人間のデータ専門家を引き継いでいます!事前の知識により、LLMは従来の方法に匹敵する精度で大胆な予測を行うことができます。

データ サイエンスでは、AI 研究者は不完全なデータセットを処理するという課題にしばしば直面します。...

NLP とは異なり、データ駆動型手法と機械学習は、次の 3 つの理由により NLU に勝てません。

自然言語理解 (NLU) は人工知能における中核的なトピックの 1 つであり、最も困難かつ象徴的なタ...

市場規模は100億元を超える可能性あり。これら4種類の医療用ロボットをご存知ですか?

2020年、突然の公衆衛生事件により、医療用ロボットに大きな注目が集まりました。医療用ロボットは、...

人工知能技術の発展の概要

[[352219]]人工知能は、コンピュータサイエンス業界のトップテクノロジーの一つとして、1956...

企業セキュリティのための AI 生体認証

生体認証技術は、市場に登場した最新の AI イノベーションのおかげで、特に 2021 年には長年にわ...

コンピュータビジョンにおける物体検出のためのデータ前処理

この記事では、コンピューター ビジョンにおけるオブジェクト検出問題を解決するときに画像データに対して...