top 30 programming coding interview questions answers
이 튜토리얼에서는 프로그래밍을 연습 할 수 있도록 프로그램 로직 및 코드 예제와 함께 가장 일반적인 코딩 인터뷰 질문 및 답변을 제공했습니다.
우리는 가장 기본적인 코딩이나 프로그래밍 인터뷰 질문에 답하는 것이 인터뷰에서 우리가 수행하는 방식을 결정한다는 것을 알고 있습니다. 인터뷰는 Java, C ++ 또는 Javascript 요구 사항에 대한 것일 수 있지만 기본은 동일하게 유지됩니다. 즉 우리가 프로그래밍 논리의 기초에서 얼마나 강력한 지에 대한 것입니다.
또한 인터뷰에서 우리의 접근 방식이 신속하고 미묘하다면 선택 가능성이 더 높습니다. 따라서 코딩 인터뷰 질문을 해독하려면 계속 읽으십시오.
인터뷰를하기 전에 이러한 프로그래밍 인터뷰 질문을 공부하고 연습하는 것을 잊지 마십시오. 이것은 당신의 확신을 높일뿐만 아니라 신속하게 답변하는 데 도움이 될 것입니다. 질문은 주로 배열, 문자열, 연결 목록 등과 같은 주제를 다룹니다.
양말을 올려주세요 !!
자주 묻는 기본 프로그래밍 / 코딩 인터뷰 질문
질문 # 1) 문자열을 어떻게 뒤집을 수 있습니까?
답 : 문자열은 다음 알고리즘으로 반전됩니다.
- 시작
- 반전 될 문자열이 선언됩니다.
- 문자열의 길이를 가져옵니다.
- 루프를 시작한 다음 배열 요소의 위치를 바꿉니다.
- 교환 된 위치를 유지하십시오.
- 반전 된 문자열을 인쇄합니다.
Q # 2) 회문 문자열이란 무엇입니까?
대답: Q # 1에서 논의 된대로 문자열이 반전 된 후, 다음 조건을 입력해야합니다.
코드 조각 :
if(actualtxt.equals(reversetxt)){ return “Palindrome”; else return “Not Palindrome”; }
따라서 회문 문자열은 반전시 동일하게 유지되는 문자열입니다. 예를 들면 –‘madam’은 회문 문자열입니다.
ps4 용 vr 헤드셋을 사용할 수 있습니까?
Q # 3) 문자열에서 일치하는 문자를 얻는 방법은 무엇입니까?
답변 : 문자열에서 일치하는 문자를 얻으려면 다음 단계를 따르십시오.
- 키-값 쌍과 함께 작동하는 해시 맵 데이터 구조가 사용됩니다.
- 문자열을 문자별로 반복하고 문자열의 해당 문자가 해시 맵에 존재하는지 확인하십시오.
- 결과가 참이면 해시 맵의 문자에 대한 카운터가 증가하거나 1로 카운트됩니다.
- 루프가 끝나면 해시 맵을 탐색하고 1 개 이상의 카운트로 문자를 인쇄합니다.
코드 조각 :
HashMap mp = new HashMap (); for (int j = 0; j1){ System.out.println(ch+ ' - ' + c); } }
질문 # 4) 문자열에서 일치하지 않는 문자를 얻는 방법은 무엇입니까?
대답: 문자열에서 일치하지 않는 문자를 가져 오려면 다음 단계를 따르십시오.
- 키-값 쌍과 함께 작동하는 해시 맵 데이터 구조가 사용됩니다.
- 문자열을 문자별로 반복하고 문자열의 해당 문자가 해시 맵에 있는지 여부를 확인합니다.
- 결과가 참이면 해시 맵의 문자에 대한 카운터가 증가하거나 1로 카운트됩니다.
- 루프가 끝나면 해시 맵을 탐색하고 1과 같은 개수로 문자를 인쇄합니다.
코드 조각 :
HashMap mp = new HashMap (); for (int j = 0; j Q # 5) 문자열의 모음과 자음 수를 계산하는 방법은 무엇입니까?
답 : 문자열의 모음과 자음 수를 계산하려면 다음 단계를 따르십시오.
- 카운트를 수행해야하는 문자열을 가져옵니다.
- 0에서 문자열 길이까지 루프를 실행합니다.
- 한 번에 한 문자를 가져와 모음 그룹의 일부인지 확인하십시오.
- 결과가 참이면 모음 수를 늘리거나 자음 수를 늘립니다.
코드 조각 :
for (int k = 0; k Q # 6) 두 문자열이 애너그램이라는 것을 어떻게 증명합니까?
대답: 두 개의 문자열이 다양한 순서로 유사한 문자 그룹을 수용하는 경우 애너그램이라고합니다.
두 문자열이 아나그램인지 확인하려면 다음 단계를 따르십시오.
- 두 변수에서 두 문자열을 초기화합니다.
- 두 문자열의 길이가 비슷한 지 확인하십시오. 그렇지 않으면 문자열이 애너그램이 아닙니다.
- 결과가 참이면 두 문자열을 가져와 문자 배열에 저장합니다.
- 두 문자형 배열을 정렬 한 다음 정렬 된 두 배열이 같은지 확인합니다.
- 결과가 참이면 두 문자열은 아나그램이 아니라 아나그램입니다.
코드 조각 :
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부터 문자열 길이까지 루프를 시작합니다.
- 문자열의 특정 문자가 검색중인 문자와 같은지 비교합니다.
- 결과가 참이면 카운터 값을 증가시킵니다.
코드 조각 :
for (int l=0; l Q # 8) 두 줄이 서로 회전하는지 확인하는 방법은 무엇입니까?
답변 : 두 문자열이 서로 회전하는지 확인하려면 다음 단계를 따르십시오.
- 두 개의 변수에서 두 문자열을 초기화합니다.
- false를 반환하지 않으면 두 문자열의 길이가 비슷한 지 확인합니다.
- 문자열을 그 자체에 결합하십시오.
- 결합 된 문자열에 회전 된 문자열이 있는지 확인합니다.
- 결과가 참이면 두 번째 문자열은 첫 번째 문자열의 회전입니다.
코드 조각 :
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 데이터 구조와 반복되지 않는 문자에 대한 목록이 사용됩니다.
- 반복 및 비 반복을 분리 한 후 반복이 끝날 때 목록의 첫 번째 요소가 콘솔에 인쇄됩니다.
코드 조각 :
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) 정수 배열에서 일치하는 요소를 얻는 방법은 무엇입니까?
답 : 정수 배열에서 일치하는 요소를 얻으려면 다음 단계를 따르십시오.
- 두 개의 루프를 만듭니다.
- 첫 번째 루프에서 요소를 한 번에 하나씩 수집하고 선택한 요소의 인스턴스 수를 더합니다.
코드 조각 :
for (m = 0; m Q # 13) 정수 배열에서 반복되는 요소를 삭제하는 방법은 무엇입니까?
답 : 정수 배열에서 반복되는 요소를 삭제하려면 다음 단계를 따르십시오.
qa 리드 인터뷰 질문 및 답변 pdf
- 이전에 존재하는 모든 요소를 선택하는 해시 맵을 작성하십시오.
- 배열을 반복하고 요소가 이미 해시 맵에 있는지 확인합니다.
- 결과가 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) 배열에서 두 번째로 큰 요소를 결정합니다.
답 : 배열에서 두 번째로 큰 요소는 다음 단계를 통해 계산할 수 있습니다.
- 가장 큰 요소를 배열의 첫 번째 요소로, 두 번째로 큰 요소를 배열의 두 번째 요소로 지정합니다.
- 배열을 순회하기 위해 루프를 반복합니다.
- arry (i)가 가장 큰 요소보다 큰 경우 THEN
두 번째 요소? 가장 큰 요소
가장 큰 요소 배열 (i)
두 번째 요소가 arry (i) THEN보다 작 으면
두 번째 요소? 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) 어레이의 반전을 설명하십시오.
답변 : 어레이 반전은 다음과 같은 방법으로 수행됩니다.
- 요소가있는 배열을 가져옵니다.
- 이제 첫 번째 요소의 위치를 마지막 요소로 바꾸고, 마찬가지로 두 번째 요소도 두 번째 요소로 바꿉니다.
- 이는 전체 어레이가 반전 될 때까지 계속됩니다.
코드 조각 :
for (t = 0; t Q # 19) 소문자로 된 문자열에서 특수 문자를 제거하는 방법은 무엇입니까?
대답: 문자열의 특수 문자는 Java에서 replaceAll 함수를 사용하여 제거 할 수 있습니다.
코드 조각 :
string str = “Testing@” str.replaceAll(“(^a-z0-9)”,””)
이 솔루션에서는 정규식이 사용됩니다.
Q # 20) 세 번째 변수를 사용하지 않고 두 문자열을 교체하는 방법은 무엇입니까?
답 : 다음 단계에 따라 세 번째 변수의 도움없이 두 문자열을 교체합니다.
(나는) 두 개의 문자열 i, j를 가져 와서 추가 한 다음 첫 번째 문자열에 저장합니다.
(ii) 하위 문자열 방법을 사용하여 문자열을 추출합니다.
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) 연결 목록의 중간으로 이동하는 방법은 무엇입니까?
답변 : 연결 목록의 중간으로 이동하려면 다음 단계를 따르십시오.
- 연결된 목록 헤드로 초기화되는 두 개의 포인터를 먼저 선언하고 두 번째 포인터를 선언합니다.
- 각 루프에서 첫 번째 연결 목록을 두 노드 씩 늘리고 두 번째 연결 목록을 한 노드 늘립니다.
- 첫 번째 노드가 목록 끝에 도달하는 동안 두 번째 노드는 중간을 가리 킵니다.
코드 조각 :
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) 정렬되지 않은 연결 목록에서 일치하는 요소를 삭제하는 과정은 무엇입니까?
답변 : 정렬되지 않은 연결 목록에서 일치하는 요소를 삭제하려면 다음 단계를 따르십시오.
두 파일을 비교하는 unix 명령
- 연결 목록의 머리에서 꼬리까지 이동합니다.
- 연결된 목록의 모든 값에 대해 해시 테이블에 이미 있는지 확인합니다.
- 결과가 참이면 요소가 해시 테이블에 추가되지 않습니다.
코드 조각 :
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) 연결 목록의 세 번째 노드를 얻는 방법은 무엇입니까?
답변 : 연결 목록의 세 번째 노드로 이동하려면 다음 단계를 따르십시오.
- 값 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은 처음 두 피보나치 수이고 0과 1 이후의 모든 수는 이전 두 수를 더한 것입니다.
코드 조각 :
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로되어 있지만 언어를 모르더라도 대부분의 질문에 대해 여기에 제공된 알고리즘의 단계 또는 세부 사항은 인터뷰 준비에 도움이 될 것입니다.
프로그래밍, 논리, 데이터 구조의 기본에 대해 열심히 공부하고 침착하게 유지하고 이러한 프로그래밍 인터뷰 질문을 연습하십시오.
다가오는 인터뷰를 위해 최선을 다하십시오!
추천 도서