top 30 programming coding interview questions answers
このチュートリアルでは、プログラミングを練習するためのプログラムロジックとコード例を含む最も一般的なコーディングインタビューの質問と回答を提供しました。
最も基本的なコーディングまたはプログラミングの面接の質問に答えることで、面接でのパフォーマンスが決まることは誰もが知っています。インタビューは、Java、C ++、またはJavascriptの要件に関するものかもしれませんが、基本は同じです。つまり、プログラミングロジックの基盤にどれほど強いかということです。
また、面接で私たちのアプローチが迅速かつ微妙である場合、選択の可能性は高くなります。だから、コーディングインタビューの質問をクラックするために読んでください。
面接に直面する前に、これらのプログラミング面接の質問を勉強して練習することを忘れないでください。これはあなたの信念を高めるだけでなく、彼らに素早く答えるのにも役立ちます。質問は主に配列、文字列、リンクリストなどの主題をカバーします。
靴下を引き上げろ!
よくある基本的なプログラミング/コーディングの面接の質問
Q#1) どうすれば文字列を逆にすることができますか?
回答:文字列は次のアルゴリズムで逆になります。
- 開始する
- 反転する文字列を宣言します。
- 文字列の長さを取得します。
- ループを開始してから、配列要素の位置を入れ替えます。
- 交換したポジションを維持します。
- 反転した文字列を印刷します。
Q#2)パリンドロームストリングとは何ですか?
トップ5のホスト侵入検知システム
回答: Q#1で説明したように、文字列が逆にされた後 次の条件を設定する必要があります。
コードスニペット:
if(actualtxt.equals(reversetxt)){ return “Palindrome”; else return “Not Palindrome”; }
したがって、パリンドロームストリングは、反転しても同じままであるストリングです。 例えば、 –「マダム」は回文文字列です。
Q#3)文字列内の一致する文字を取得するにはどうすればよいですか?
回答:文字列内の一致する文字を取得するには、次の手順に従います。
- キーと値のペアで機能するハッシュマップデータ構造が採用されます。
- 文字列を1文字ずつループし、文字列のその文字がハッシュマップに存在するかどうかを確認します。
- 結果がtrueの場合、ハッシュマップ内の文字のカウンターが増加するか、カウントが1になります。
- ループが終了すると、ハッシュマップがトラバースされ、複数のカウントを持つ文字が出力されます。
コードスニペット:
HashMap mp = new HashMap (); for (int j = 0; j1){ System.out.println(ch+ ' - ' + c); } }
Q#4) 文字列内の一致しない文字を取得するにはどうすればよいですか?
回答: 文字列内の一致しない文字を取得するには、次の手順に従います。
- キーと値のペアで機能するハッシュマップデータ構造が採用されます。
- 文字列を1文字ずつループし、文字列のその文字がハッシュマップに存在するかどうかを確認します。
- 結果がtrueの場合、ハッシュマップ内の文字のカウンターが増加するか、カウントが1になります。
- ループが終了すると、ハッシュマップがトラバースされ、1に等しいカウントで文字が出力されます。
コードスニペット:
HashMap mp = new HashMap (); for (int j = 0; j Q#5)文字列内の母音と子音の数を計算するにはどうすればよいですか?
回答:文字列内の母音と子音の数を計算するには、次の手順に従います。
- カウントを実行する必要がある文字列を取得します。
- 0から文字列の長さまでループを実行します。
- 一度に1つの文字を取り、それらが母音のグループの一部であるかどうかを確認します。
- 結果がtrueの場合は、母音の数を増やすか、子音の数を増やします。
コードスニペット:
for (int k = 0; k Q#6)2つの文字列がアナグラムであることをどのように証明しますか?
回答: 2つの文字列は、さまざまな順序で同様の文字グループに対応する場合、アナグラムと呼ばれます。
2つの文字列がアナグラムであるかどうかを確認するには、次の手順に従います。
- 2つの変数で2つの文字列を初期化します。
- 2つの文字列の長さが類似しているかどうかを確認します。類似していない場合、文字列はアナグラムではありません。
- 結果がtrueの場合は、2つの文字列を取得し、それらを文字配列に格納します。
- 2つの文字配列を並べ替えてから、並べ替えられた2つの配列が類似しているかどうかを確認します。
- 結果がtrueの場合、2つの文字列はアナグラムではなくアナグラムです。
コードスニペット:
if (str1.length() != str2.length()) { System.out.println(str1 + ' and ' +str2 + ' not anagrams string'); }else{ char() anagram1 = str1.toCharArray(); char() anagram2 = str2.toCharArray(); Arrays.sort(anagram1); Arrays.sort(anagram2); anagrmstat = Arrays.equals(anagram1, anagram2); } if (anagrmstat == true) { System.out.println(str1 + ' and ' +str2 + ' anagrams string'); }else{ System.out.println(str1 + ' and ' +str2 + ' not anagrams string'); } }
Q#7)文字列内の特定の文字の出現回数を検索します。
回答:文字列内の特定の文字の出現をカウントするには、次の手順に従います。
- 文字列と、出現回数をカウントする特定の文字から始めます。
- 0から文字列の長さまでループを開始します。
- 文字列の特定の文字が検索対象の文字と等しいかどうかを比較します。
- 結果がtrueの場合は、カウンターの値をインクリメントします。
コードスニペット:
for (int l=0; l Q#8)2つの弦が相互に回転しているかどうかを確認するにはどうすればよいですか?
回答:2つの文字列が相互に回転しているかどうかを確認するには、次の手順に従います。
- 2つの変数で2つの文字列を初期化します。
- 2つの文字列の長さが類似しているかどうかを確認し、そうでない場合はfalseを返します。
- 文字列をそれ自体に結合します。
- 回転する文字列が結合された文字列に存在するかどうかを確認します。
- 結果がtrueの場合、2番目の文字列は最初の文字列の回転です。
コードスニペット:
String concat = org_string + org_string; if (concat.indexOf (rotat) ! = -1) { return true; }
Q#9)文字列の数字の桁数を計算するにはどうすればよいですか?
回答:文字列の桁数を計算するには、次の手順に従います。
- カウントを実行する必要がある文字列を取得します
- すべての数字を「」に置き換えるreplaceAll関数を使用します。
- 数字なしの文字列の長さを取得します。
コードスニペット:
package introduction; public class GG { public static void main(String() args) { // TODO Auto-generated method stub String str = 'TESTu45'; str=str.replaceAll('\d', ''); int l = str.length(); System.out.println('The length of the string without digit is:' + l); } }
このソリューションでは、正規表現が使用されます。
Q#10)繰り返されない文字列の最初の文字を計算するにはどうすればよいですか?
回答:繰り返されない文字列の最初の文字を計算するには、次の手順に従います。
- 繰り返される文字のセットデータ構造と繰り返されない文字のリストが取得されます。
- 繰り返されるものと繰り返されないものを分離した後、反復の終わりに、リストの最初の要素がコンソールに出力されます。
コードスニペット:
Set repeated = new HashSet(); List nonRepeated = new ArrayList(); for (int m = 0; m Q#11)1から100までの整数を含む配列で欠落している数値を検索するにはどうすればよいですか?
回答:1から100までの整数を含む配列で欠落している数値を検索するには、以下の手順に従います。
- 1から100までの数字の整数配列を取ります。
- 数値の合計を計算します。合計は= l *(l + 1)/ 2になります。ここで、lは整数の数です。
- 合計数の加算から欠落している要素の減算を実行します。
Q#12)整数配列で一致する要素を取得するにはどうすればよいですか?
回答:整数配列で一致する要素を取得するには、次の手順に従います。
- 2つのループを作成します。
- 最初のループでは、要素を一度に1つずつ収集し、選択した要素のインスタンスの数を合計します。
コードスニペット:
for (m = 0; m Q#13)整数配列で繰り返される要素を削除するにはどうすればよいですか?
回答:整数配列で繰り返される要素を削除するには、次の手順に従います。
- 以前に存在するすべての要素を選択するハッシュマップを作成します。
- 配列をループして、要素がハッシュマップにすでに存在するかどうかを確認します
- 結果がtrueの場合、配列トラバーサルが続行されます。それ以外の場合、要素はコンソールに出力されます。
コードスニペット:
HashMap m = new HashMap(); for (int j = 0; j Q#14)ソートされていない配列の最大要素と最小要素を決定します。
回答:配列の最大要素と最小要素を決定するには、以下の手順に従う必要があります。
- 配列をトラバースし、これまでに見つかった最大要素を監視します。配列の境界に到達するまで、最大の要素が達成されます。
- 配列をトラバースし、これまでに見つかった最小要素を監視して、配列の境界に到達するまで、最小要素が達成されます。
Q#15)バブルソートアルゴリズムについて説明してください。
回答:バブルソートアルゴリズムには、次の手順が含まれます。
- 最初の要素から始めて、配列内の次の要素との比較を実行します
- 現在の要素が配列の次の要素よりも大きい場合は、それらの位置を入れ替えます。
- 現在の要素が配列の次の要素よりも小さい場合は、次の要素に移動して、手順1を繰り返します。
コードスニペット:
for(k = 0; k Q#16)挿入ソートアルゴリズムを実装します。
回答: 挿入ソートの実装。
コードスニペット:
for (m = 1; m 0 && arry(n - 1) > arry(n)) { k = arry(n); arry(n) = arry(n - 1); arry(n - 1) = k; n--; } }
Q#17)配列の2番目に大きい要素を決定します。
int c ++への文字番号
回答:配列の2番目に大きい要素は、次の手順で計算できます。
- 最大の要素を配列の最初の要素として記述し、2番目に大きい要素を配列の2番目の要素として記述します。
- 配列をトラバースするためにループを繰り返します。
- arry (i)が最大の要素より大きい場合THEN
2番目の要素?最大の要素
最大の要素?arry (i)
2番目の要素がarry (i)未満の場合THEN
2番目の要素?arry (i)
コードスニペット:
if(arry(0) > arry(1)) { l = arry(0); s = arry(1); } else { l = arry(1); s = arry(0); } for(i = 2; i Q#18)配列の反転について説明してください。
回答:アレイの反転は次の方法で実行されます。
- 要素を含む配列を取ります。
- ここで、最初の要素の位置を最後の要素と交換し、同様に2番目の要素を最後から2番目の要素と交換します。
- これは、アレイ全体が反転するまで続きます。
コードスニペット:
for (t = 0; t Q#19)小文字の文字列内の特殊文字を削除するにはどうすればよいですか?
回答: 文字列内の特殊文字は、JavaのreplaceAll関数を使用して削除できます。
コードスニペット:
string str = “Testing@” str.replaceAll(“(^a-z0-9)”,””)
このソリューションでは、正規表現が使用されます。
Q#20)3番目の変数を使用せずに2つの文字列を交換するにはどうすればよいですか?
回答:次の手順により、3番目の変数を使用せずに2つの文字列が交換されます。
(私) 2つの文字列i、jを取得して追加し、最初の文字列に格納します。
(ii) substringメソッドを使用して、文字列を抽出します。
j = substring(0,i.length()-j.length())
(iii) 文字列jを文字列iに格納します
i= subsrtirng(j.length)
コードスニペット:
string i = “abc”, j =”def”; i = i+j; j = i. substring(0,i.length()-j.length()); i = i.substring(j.length()) System.out.println(i +””+j);
Q#21)リンクリストの途中までトラバースするにはどうすればよいですか?
回答:リンクリストの中央に移動するには、次の手順に従います。
- リンクリストヘッドに初期化される2つのポインタを最初と2番目に宣言します。
- 各ループで、最初のリンクリストを2ノードずつインクリメントし、2番目を1ノードずつインクリメントします。
- 最初のノードがリストの最後に到達している間、2番目のノードは中央を指します。
コードスニペット:
first = second = head; while(first !=null) { first = first.next; if(first != null && first.next != null) { second = second.next; first = first.next; } } return second; }
Q#22)リンクリストを逆にするプロセスを実装します。
回答:リンクリストは、以下の手順で元に戻すことができます。
- 前後の3つのノードを宣言します。
- 現在のノードにいる間、上記はnullになります。
- リストを逆にするには、present.nextを前に置きます。
- 各ループでは、現在と先行が1ずつ増加します。
コードスニペット:
Node preceding=null; Node following while(present!=null) { following=present.next; present.next=preceding; preceding=present; present=following; } return preceding; }
Q#23)ソートされていないリンクリストから一致した要素を削除するプロセスは何ですか。
回答:ソートされていないリンクリストから一致する要素を削除するには、次の手順に従います。
- リンクリストの先頭から末尾に移動します。
- リンクリスト内のすべての値について、その値がハッシュテーブルにすでに存在するかどうかを確認します。
- 結果がtrueの場合、要素はハッシュテーブルに追加されません。
コードスニペット:
HashSet h = new HashSet(); node present = head; node preceding = null; while (present != null) { int presentval = present.value; if (h.contains(presentval)) { preceding.next = present.next; } else { h.add(presentval); preceding = present; } present = present.next; } }
Q#24)リンクリストの長さを取得するにはどうすればよいですか?
回答: リンクリストの長さを取得するには、次の手順に従います。
- 値0でカウンターを開始し、ノードをヘッドとして提示します。
- 現在のノードがnullでなくなるまで、次の手順を実行します。
- 現在=現在->次
- カウンター=カウンター+1
- カウンター値が返されます。
コードスニペット:
{ Node present = head; int c = 0; while (present != null) { c = c + 1; present = present.next; } return c; }
Q#25)リンクリストで特定の値を検索するにはどうすればよいですか?
回答:リンクリスト内の特定の値を検索するには、次の手順に従います。
- 現在のノードをヘッドとして宣言します。
- 現在のノードがnullでなくなるまで、次の手順を実行します。
- 現在->値は、真を返すために検索されている値と同じです。
- 現在=現在->次。
- 見つからない場合は、falseが返されます。
コードスニペット:
Node present = head; while (present != null) { if (present.value == value) return true; present = present.next; } return false; }
Q#26)数が素数であるかどうかを確認するにはどうすればよいですか?
回答: 数が素数であるかどうかを確認するには、次の手順に従います。
- 値2(k)から(数値/ 2)までのループを開始します
- 数がkで完全に割り切れる場合、その数は素数ではありません。
- 数が1とそれ自体を除いて完全に割り切れない場合、その数は素数です。
コードスニペット:
for(k = 2; k <= number / 2; k++) { if(number % k == 0) { stat = false; break; } } if (stat) System.out.println('Prime'; else System.out.println('Not prime');
Q#27)リンクリストの3番目のノードを取得するにはどうすればよいですか?
回答:リンクリストの3番目のノードに到達するには、次の手順に従います。
- 値0でカウンターを開始します。
- リンクリストを繰り返し処理し、次の手順を実行します。
- カウンターの値が3の場合、現在のノードが返されます。
- カウンターが1増加します。
- 現在の次のことを意味するように、現在を変更します。
コードスニペット:
Node present = head; int c = 0; while (c != null) { if (c == 3) return present.val; c = c+1; present = present.next; }
Q#28)最初の5つのフィボナッチ数を計算します。
回答: 0と1は最初の2つのフィボナッチ数であり、0と1の後のすべての数は前の2つの数の加算です。
コードスニペット:
int num1=0, num2=1,t; for ( int k = 0; k<5,k++) { System.out.println(num1); t = num1 + num2; num1 = num2; num2 = t; }
Q#29)番号を逆にする方法は?
回答:数値の逆転は、次の手順で実行されます。
- 数字の右端の桁を取り出します。
- 数字を新しい逆数で合計します。
- 10を掛けます。
- 数を10で割ります。
Q#30)数の因数を決定します。
回答:数値の因数は、次のコードスニペットで表されます。
int no = 75; for(int j = 1; j <= no; j++) { if (no % j == 0) { System.out.print(j); }
結論
基本的なコーディング面接の質問に対する質問への回答の多くが明確になったことを願っています。
ここで説明したコーディングの実装のほとんどはJavaで行われていますが、言語に気付いていない場合でも、ほとんどの質問に対してここに記載されている手順またはアルゴリズムの詳細は、面接の準備に役立ちます。
プログラミング、ロジック、データ構造の基本に一生懸命取り組み、落ち着いて、これらのプログラミング面接の質問を練習してください。
今後のインタビューに最適です!
推奨読書