トップ8の重要なコーディングインタビューの質問と回答2022[新入生と経験者向け]
公開: 2021-08-25配列、バイナリツリー、ハッシュテーブル、リンクリストなどのデータ構造の優れた基盤が不可欠です。 特にプログラミングジョブに応募する場合は、重要なアルゴリズムとメソッドを認識し、Javaなどのプログラミング言語を十分に理解している必要があります。 重要なコーディング面接の質問に対する答えを確実に学ぶことができますが、ソリューションを自分で広範囲に実践することを強くお勧めします。
ベスト8コーディングインタビューの質問とその回答
Microsoft、IBM、Googleなどの大企業が主催するインタビューで尋ねられる最も重要なコーディングの質問のいくつかを見てみましょう。
1.単語の最初の繰り返されない文字をどのように見つけることができますか?
この質問に答えるには、まずこの機能を促進するために何をしなければならないかを理解する必要があります。 文字列を受け入れ、最初の繰り返されない文字を返す関数を作成する必要があります。
たとえば、「passage」という単語では、「p」は最初の繰り返されない文字であり、「turtle」という単語では、「u」は最初の繰り返されない文字です。 では、この問題をどのように解決するのでしょうか。 すべての文字の繰り返しを保存するためのテーブルを作成してから、繰り返されない最初のエントリを選択できます。
繰り返されない最初の文字を返すコードを作成するために、LinkedHashMapを使用して文字数を格納できます。 このHashMapは挿入の順序に従い、文字は文字列と同じ位置で初期化されます。 スキャンされた文字列は、LinkedHashMapを使用して繰り返され、値が1の必要なエントリを選択する必要があります。
この問題に取り組む別の方法は、firstNonRepeatingChar(String word)を使用することです。 これにより、最初に表示される繰り返されない文字を1回のパスで識別できます。 このアプローチでは、2つのストレージを使用してインタラクションを置き換えました。 このメソッドは、繰り返されない文字と繰り返される文字を別々に格納し、反復が終了すると、必要な文字がリストの最初の要素になります。
2.アレイから重複を削除するにはどうすればよいですか?
まず、LinkedHashSet(Set Interface)を使用して、要素のセットへの元の挿入順序を保持する必要があります。 これらの種類のコーディングインタビューの質問を解決するには、ループまたは再帰関数を使用する必要があります。
配列を処理するときに留意しなければならない主な要因は、重複する要素ではありません。 ここでの主な問題は、代わりに重複を削除することです。 配列は固定長の静的データ構造であるため、変更することはできません。 したがって、配列から要素を削除するには、新しい配列を作成し、コンテンツをこれらの新しい配列に複製する必要があります。
まず、配列を配列リストに変換してから、これらの配列リストからLinkedHashSetsを作成する必要があります。 入力配列に多数の重複が含まれていると、複数の一時配列が生成される可能性があり、コンテンツのインポートコストが増加します。 この制限により、必要なメモリと処理能力が少なくて済む方法でこの問題に取り組むことが強制されます。
重複を削除する必要がありますが、結果の配列にコピーすることはできません。したがって、重複を完全に削除するのではなく、デフォルト値として0に置き換えるだけです。
3.数が素数であるかどうかをどのように確認できますか?
これは、与えられた数が素数であるかどうかを調べることを含む最も一般的なコーディングインタビューの質問の1つです。 これらの種類のプログラムは、素数はすべて1以外の正の数で割ることができない自然数であるという事実に基づいた解決策を考え出す必要があるため、アルゴリズム的思考の基盤です。
1からターゲット番号までの各数値をチェックして、ターゲット番号がそれ自体または1以外の他の正の数で割り切れるかどうかを確認するループを作成するコードを作成する必要があります。
この機能は私たちを解決策に導きます。 特に大きい数をチェックするときは、Nの平方根(Nがターゲット数)まで簡単にチェックできます。 適格な平方根の場合、Nまでチェックする必要はありません。
数値が2で割り切れない場合は、他の偶数で割り切れるかどうかを確認する必要がないため、解を見つけるのに必要な時間が短縮されます。 これはソリューションの最適化されたバージョンであり、ソリューションを作成する前に数値を分析すると便利です。
4.文字列に数字のみが含まれているかどうかを確認するにはどうすればよいですか?
文字列が数字のみであるかどうか、または文字列に数字以外の文字が含まれているかどうかを確認するための正規表現を作成する場合は、最初にJava正規表現での文字セットの使用に慣れておく必要があります。 Javaなどのプログラミング言語は、java.util.regex.Matcherクラスとjava.util.regex.Patternを使用して正規表現をサポートします。 Java.util.regexは、この目的のための専用パッケージです。
正規表現を使用して数値のみの存在を検証するために、コードを使用して、文字列に生の整数が含まれているかどうかを分析できます。 文字列に0〜9の数字のみが含まれているかどうかを確認します。文字列に数字だけでなく他の文字も含まれている場合でも、単純な数値文字列ではありません。 正規表現は整数のみをチェックし、ドット文字(。)を考慮しないため、10進数と浮動小数点を作成するとテストに失敗します。
5.ライブラリメソッドを使用せずに、ターゲット文の単語をどのように逆にすることができますか?
これは、非常に一般的なコーディングインタビューの質問の1つでもあります。 まず、要件と、この要件のギャップを埋める方法を理解する必要があります。 このような質問に直面したとき、私たちは最初に正しい質問をすることに集中しなければなりません。 文字列は、単一の単語または複数の単語を含む可能性のある決定された文字の文に他なりません。
文も空の場合があります。 たとえば、「プログラミングは楽しい」という文が与えられた場合、それを「楽しいはプログラミングです」に逆にする必要があります。 効果的に。 Javaで正規表現を使用して、指定された文字列をスペースに分割し、Collectionsユーティリティクラスのreverse()メソッドを適用する必要があります。
正規表現'\\s'を使用して文字列を分割できるようになると、結果として単語の配列が返されます。 これにより、複数のスペースを使用して区切られた単語も処理されます。 配列が返されるとすぐに、これらの配列からArrayListsを作成し、Collections.reverse()メソッドを使用することを選択できます。 これによりArrayListsが逆になり、すべての単語が逆の順序で再初期化されます。
あとは、StringBuilderを使用して、ArrayListの反復によって複数の文字列を連結するだけです。 StringBuilderのサイズ変更は、処理能力とメモリの点でコストのかかるプロセスであるため、サイズが指定されていることを確認する必要があります。 サイズを変更すると、古いアレイからコンテンツをコピーして新しいアレイが作成されます。
6.文字列から文字を置き換えたり削除したりするにはどうすればよいですか?
文字列「Woocommerce」があり、文字「r」を「n」に置き換えたいとすると、これを実現する方法は複数あります。 Javaの文字列クラスは、CharSequenceとサブ文字列を使用して文字列内の文字を置き換えるための複数のアプローチを提供します。
文字列内でreplaceメソッドを簡単に呼び出すことができます。これにより、ターゲット文字が置き換えられ、結果として目的の文字が返されます。 文字列は、Javaなどのプログラミング言語では不変です。
したがって、削除や置換などのこれらの操作が文字列に対して実行されるたびに、デフォルトで新しい文字列オブジェクトが生成されます。 Javaを使用して文字列を置き換えるための4つのオーバーロードされたメソッドがあります。
- replace(char oldChar、char newChar)
- replaceAll(文字列正規表現、文字列置換)
- replace(CharSequenceターゲット、CharSequence置換)
- replaceFirst(文字列正規表現、文字列置換)
CharSequenceは、文字列のスーパーインターフェイスの1つであるStringBuilderとStringBufferであり、これらのオブジェクトをこの置換メソッドの引数として渡すことができます。 replaceAll()は、すべての一致を置換文字列に置き換えることになりますが、replaceFirst()は最初の一致のみを置き換えます。
全体として、これらはすべて正規表現を受け入れる強力な方法論です。 Java.lang.Stringクラスを使用すると、これらすべてのオーバーロードされたメソッドを使用して、Javaの単一の文字またはサブ文字列を簡単に置き換えることができます。
replaceAll()を使用することを強くお勧めします。これにより、一致する文字が出現するたびに置き換えられます。 このアプローチに従うことで、正規表現パターンを期待できるため、より多くのパワーを獲得できます。 このメソッドでは、すべてのコンマをパイプに置き換えて、コンマで区切られたファイルをパイル区切りの文字列に変換することもできます。
ただし、1つの文字だけを置き換えたい場合は、指定された新旧の文字を考慮したreplace()メソッドを使用できます。
読む: Javaインタビューの質問と回答
7. Javaなどのプログラミング言語のファイルにテキストを追加するにはどうすればよいですか?
追加は、新しいファイルの作成や新しいファイルへのデータの書き込みとは大きく異なります。 追加する場合、ファイルはすでに存在しているので、ファイルの最後にテキストを追加するだけです。 これは、システムで常に更新されるログファイルに似ています。
アプリケーションはログの詳細をこれらのファイルに繰り返し追加し続けるため、ログファイルはテキストを追加する完璧な例です。 この問題にはロギングフレームワークは必要ありませんが、既存のファイルにテキストを追加する方法を知っている必要があります。 この問題を解決するには、文字ファイルを書き込むための便利なクラスに注意する必要があります。
このクラスには、デフォルトのバイトバッファと文字エンコーディングの受け入れ可能性を前提とするコンストラクタがあります。 自分で値を指定する場合は、FileOutputStreamを使用してOutputStreamWriterを作成するだけです。 ファイルの可用性は、ファイルが作成されるかどうかを決定する基盤となるプラットフォームによって異なります。
いくつかのプラットフォームでは、単一のFileWriteまたは複数のファイル書き込みオブジェクトを使用して関数を書き込むためにファイルを初期化できます。 ただし、関連するファイルがすでに初期化されると、このクラスのコンストラクターは失敗します。 FileWriterは文字ストリームの書き込みに使用され、FileOutputStreamは生のバイトストリームを書き込むことができます。
世界のトップ大学からオンラインでソフトウェア開発コースを学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
8.整数の配列で最大または最小の数をどのように見つけることができますか?
このソリューションでは、本格的な整数である配列から最大数または最小数を見つけることができる関数またはメソッドをコーディングする必要があります。 まず、MaximumMinimumArrayDemo.javaという名前を使用してJavaでソースファイルを作成し、コンパイルと実行のためにここに記述されたコードをコピーする必要があります。
'largest'および'smallest'と呼ばれる2つの変数を使用して、配列からそれぞれ最大値と最小値を格納できます。 最小の数値はinteger.MIN_VALUEを使用して初期化でき、最大の数値はinteger.MAX_VALUEを使用して初期化できます。
開始したループを繰り返すたびに、現在の数値を「最大」および「最小」と比較し、それに応じて更新することができます。 配列はJavaのtoStringメソッドをオーバーライドしないため、Arrays.toString()を使用してターゲット配列の内容を出力できます。
この静的メソッドを使用して、main関数を直接呼び出すことができます。 次に、ランダム配列をこのメソッドに渡して、最大値と最小値が正確に返されているかどうかを確認する必要があります。 IDEの単体テストを通じてこのテストを自動化することもできます。
チェックアウト:履歴書に入れるコンピュータースキルトップ4
結論
プログラミングに焦点を当てたコースは、問題を解決するのに最適なだけでなく、仕事に応募するときに選ばれる可能性をさらに高めます。 Javaプログラミングやより高度なコーディングの問題について詳しく知りたい場合は、 upGradのコンピュータサイエンスの理学修士やフルスタック開発コースなどの包括的なコースに登録できます。