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 を削除
研究ツールとして、LLM は科学研究に新たなブレークスルーをもたらすことができますか?本日、Micr...
出典 | https://www.infoworld.com/article/3707989/why...
MITのエンジニアたちは、あらゆる表面を音源に変えることができる紙のように薄いスピーカーを開発した...
[[434362]] 11月3日、Facebookは写真のタグ付けに顔認識機能を使うのをやめると発表...
[[428985]] [51CTO.com クイック翻訳]今日の人工知能の繁栄は、人工ニューラルネッ...
[[318810]]ビッグデータダイジェスト制作出典: rutgers.edu編纂者:張大毓如、夏亜...
歴史は、人々に気づかれずに何度も同じ冗談を繰り返す、昔のいたずらっ子のようなものです。歴史は単なるジ...
AI テクノロジーは職場環境に深く浸透しており、単調で反復的な手作業を置き換えるだけでなく、他の仕事...
近年、人工知能分野の発展はますます加熱し続けており、現在の人材不足が注目を集めています。国務院が20...
データ サイエンスでは、AI 研究者は不完全なデータセットを処理するという課題にしばしば直面します。...
自然言語理解 (NLU) は人工知能における中核的なトピックの 1 つであり、最も困難かつ象徴的なタ...
2020年、突然の公衆衛生事件により、医療用ロボットに大きな注目が集まりました。医療用ロボットは、...
[[352219]]人工知能は、コンピュータサイエンス業界のトップテクノロジーの一つとして、1956...
生体認証技術は、市場に登場した最新の AI イノベーションのおかげで、特に 2021 年には長年にわ...
この記事では、コンピューター ビジョンにおけるオブジェクト検出問題を解決するときに画像データに対して...