2022년 주요 코딩 면접 질문 및 답변 8가지 [신입생 및 경험자용]

게시 됨: 2021-08-25

배열, 이진 트리, 해시 테이블 및 연결 목록과 같은 데이터 구조의 좋은 기초는 필수적입니다. 필수 알고리즘, 방법을 알고 있어야 하며 특히 프로그래밍 작업에 지원하는 경우 Java와 같은 프로그래밍 언어에 대해 잘 알고 있어야 합니다. 중요한 코딩 면접 질문에 대한 답은 확실히 배울 수 있지만, 스스로 솔루션을 광범위하게 연습하는 것이 좋습니다.

최고의 8 코딩 면접 질문 및 답변

Microsoft, IBM, Google 등과 같은 대규모 회사에서 주최한 인터뷰에서 가장 중요한 코딩 질문을 살펴보겠습니다.

1. 단어에서 반복되지 않는 첫 번째 문자를 어떻게 찾을 수 있습니까?

이 질문에 답하려면 먼저 이 기능을 홍보하기 위해 수행해야 하는 작업을 이해해야 합니다. 문자열을 받아들이고 반복되지 않는 첫 번째 문자를 반환하는 함수를 작성해야 합니다.

예를 들어 'passage'라는 단어에서 'p'는 반복되지 않는 첫 번째 문자이거나 'turtle'이라는 단어에서 'u'는 반복되지 않는 첫 번째 문자입니다. 그렇다면 이 문제를 어떻게 해결할 수 있을까요? 모든 문자에 대한 반복을 저장하기 위한 테이블을 만든 다음 반복되지 않는 첫 번째 항목을 선택할 수 있습니다.

반복되지 않는 첫 번째 문자를 반환하는 코드를 작성하기 위해 LinkedHashMap을 사용하여 문자 수를 저장할 수 있습니다. 이 HashMap은 삽입 순서를 따르며 문자열과 동일한 위치에서 문자가 초기화됩니다. 값이 1인 필수 항목을 선택하려면 LinkedHashMap을 사용하여 스캔한 문자열을 반복해야 합니다.

이 문제에 접근하는 또 다른 방법은 firstNonRepeatingChar(String word)를 사용하는 것입니다. 이렇게 하면 단일 패스에서 처음으로 나타나는 반복되지 않는 문자를 식별할 수 있습니다. 이 접근 방식은 상호 작용을 대체하기 위해 두 개의 저장소를 사용했습니다. 이 방법은 반복되지 않는 문자와 반복되는 문자를 별도로 저장하고 반복이 끝나면 필요한 문자가 목록의 첫 번째 요소입니다.

2. 어레이에서 중복을 어떻게 제거할 수 있습니까?

먼저 LinkedHashSet(Set Interface)를 사용하여 요소의 원래 삽입 순서를 집합에 유지해야 합니다. 이러한 종류의 코딩 면접 질문을 풀려면 루프 또는 재귀 함수를 사용해야 합니다.

배열을 다룰 때 염두에 두어야 할 주요 요소는 중복 요소가 없다는 것입니다. 여기서 주요 문제는 대신 중복을 제거하는 것입니다. 배열은 고정된 길이의 정적 데이터 구조이므로 변경할 수 없습니다. 따라서 배열에서 요소를 삭제하려면 새 배열을 만들고 내용을 이러한 새 배열에 복제해야 합니다.

먼저 배열을 Arraylists로 변환한 다음 이러한 ArrayLists에서 LinkedHashSets를 만들어야 합니다. 입력 배열에 더 많은 수의 중복이 포함된 경우 여러 임시 배열이 생성되어 콘텐츠 가져오기 비용이 증가할 수 있습니다. 이 제한은 우리가 더 적은 메모리와 처리 능력을 필요로 하는 방식으로 이 문제에 접근하도록 강제합니다.

우리는 중복을 제거해야 하지만 결과 배열에 복사해서는 안 됩니다. 따라서 중복을 완전히 삭제하지 않고 단순히 기본값으로 0으로 대체해야 합니다.

3. 숫자가 소수인지 어떻게 확인할 수 있습니까?

이것은 주어진 숫자가 소수인지 아닌지 알아내는 것과 관련된 가장 일반적인 코딩 면접 질문 중 하나입니다. 이러한 종류의 프로그램은 소수가 1 이외의 양수로 나눌 수 없는 모든 자연수라는 사실에 기반한 솔루션을 제시해야 하므로 알고리즘 사고의 기초입니다.

목표 숫자가 자신이나 1이 아닌 다른 양수로 나눌 수 있는지 확인하기 위해 1부터 시작하여 목표 숫자까지 각 숫자를 확인하는 루프를 만드는 코드를 작성해야 합니다.

이 기능은 우리를 솔루션으로 인도할 것입니다. 특히 큰 숫자를 확인할 때 N의 제곱근까지 확인할 수 있습니다. N은 목표 숫자입니다. 적격 제곱근의 경우 N까지 확인할 필요가 없습니다.

그 수가 2로 나누어 떨어지지 않으면 다른 짝수로 나누어 떨어지는지 확인할 필요가 없으므로 해를 찾는 데 걸리는 시간을 줄일 수 있습니다. 이것은 솔루션을 작성하기 전에 숫자를 분석하는 것이 편리한 솔루션의 최적화된 버전입니다.

4. 문자열에 숫자만 포함되어 있는지 어떻게 확인할 수 있습니까?

문자열이 숫자인지 또는 숫자가 아닌 문자가 포함되어 있는지 확인하기 위해 정규식을 작성하려면 먼저 Java 정규식에서 문자 집합을 사용하는 데 익숙해져야 합니다. Java와 같은 프로그래밍 언어는 java.util.regex.Matcher 클래스 및 java.util.regex.Pattern의 도움으로 정규식을 지원합니다. Java.util.regex는 이러한 목적을 위한 전용 패키지입니다.

정규식을 사용하여 숫자만 존재하는지 확인하기 위해 코드를 사용하여 문자열에 원시 정수가 포함되어 있는지 분석할 수 있습니다. 문자열에 0~9 사이의 숫자만 포함되어 있는지 확인합니다. 문자열에 숫자와 다른 문자가 포함되어 있더라도 단순한 숫자 문자열이 아닙니다. 정규식은 정수만 확인하고 점 문자(.)는 고려하지 않으므로 십진수와 부동 소수점이 테스트에 실패합니다.

5. 라이브러리 메서드의 도움 없이 어떻게 대상 문장의 단어를 뒤집을 수 있습니까?

이것은 또한 매우 일반적인 코딩 면접 질문 중 하나입니다. 먼저 요구 사항과 이 요구 사항의 공백을 채우는 방법을 이해해야 합니다. 이러한 질문에 직면했을 때 우리는 먼저 올바른 질문을 하는 데 집중해야 합니다. 문자열은 단일 단어 또는 여러 단어를 포함할 수 있는 결정된 문자의 문장일 뿐입니다.

문장이 비어있을 수도 있습니다. 예를 들어, '프로그래밍은 재미있다'라는 문장이 주어진다면 '재미는 프로그래밍이다'로 바꿔야 합니다. 효과적으로. Java에서 정규식을 사용하여 주어진 문자열을 공백으로 나눈 다음 Collections 유틸리티 클래스에서 reverse() 메서드를 적용해야 합니다.

정규식 '\\s'를 사용하여 문자열을 나눌 수 있게 되면 결과적으로 단어 배열이 반환됩니다. 이것은 또한 여러 공백을 사용하여 구분된 단어를 처리합니다. 배열이 반환되는 즉시 이러한 배열에서 ArrayList를 생성하도록 선택한 다음 Collections.reverse() 메서드를 사용할 수 있습니다. 이것은 ArrayLists를 반대로 하고 모든 단어는 역순으로 다시 초기화됩니다.

이제 남은 것은 StringBuilder를 사용하여 ArrayList 반복을 통해 여러 문자열을 연결하는 것입니다. StringBuilder 크기 조정은 처리 능력과 메모리 측면에서 비용이 많이 드는 프로세스이므로 크기가 지정되었는지 확인해야 합니다. 크기 조정은 이전 배열의 내용을 복사하여 새 배열을 만드는 것으로 끝납니다.

6. 문자열에서 문자를 어떻게 바꾸거나 제거할 수 있습니까?

'Woocommerce'라는 문자열이 있고 문자 'r'을 'n'으로 바꾸려는 경우 이를 달성하기 위한 여러 가지 방법이 있다고 가정합니다. Java의 문자열 클래스는 CharSequence 및 하위 문자열을 사용하여 문자열 내부의 문자를 대체하는 여러 접근 방식을 제공합니다.

대상 문자를 대체하고 결과적으로 원하는 문자를 반환하는 문자열 내에서 replace 메서드를 쉽게 호출할 수 있습니다. 문자열은 Java와 같은 프로그래밍 언어에서 변경할 수 없습니다.

따라서 제거 또는 교체와 같은 이러한 작업이 문자열에 대해 수행될 때마다 기본적으로 새 문자열 개체가 생성됩니다. Java를 사용하여 문자열을 대체하는 4가지 오버로드된 메서드가 있습니다.

  • 바꾸기(char oldChar, char newChar)
  • replaceAll(문자열 정규식, 문자열 대체)
  • replace(CharSequence 대상, CharSequence 교체)
  • replaceFirst(문자열 정규식, 문자열 대체)

CharSequence는 문자열, StringBuilder 및 StringBuffer에 대한 수퍼 인터페이스 중 하나이며, 이를 통해 이 대체 메서드에 대한 인수로 이들로부터 개체를 전달할 수 있습니다. replaceAll()은 모든 단일 일치를 대체 문자열로 바꾸는 반면 replaceFirst()는 첫 번째 일치만 대체합니다.

대체로 이 모든 것은 정규식을 수용하는 강력한 방법론입니다. Java.lang.String 클래스는 Java에서 단일 문자 또는 하위 문자열을 쉽게 대체할 수 있는 이러한 모든 오버로드된 메서드를 허용합니다.

replaceAll() 은 일치하는 모든 문자를 대체하므로 사용하는 것이 좋습니다. 이 접근 방식을 따르면 정규식 패턴을 기대할 수 있으므로 더 많은 힘을 얻을 수 있습니다. 이 방법은 쉼표로 구분된 파일을 파일로 구분된 문자열로 변환하기 위해 모든 쉼표를 파이프로 대체할 수도 있습니다.

그러나 단일 문자만 교체하려는 경우 이전 문자와 새 문자를 고려하는 replace() 메서드를 사용할 수 있습니다.

읽기: Java 인터뷰 질문 및 답변

7. Java와 같은 프로그래밍 언어로 파일에 텍스트를 어떻게 추가할 수 있습니까?

추가는 새 파일을 만들고 새 파일에 데이터를 쓰는 것과는 매우 다릅니다. 추가의 경우 파일이 이미 존재하고 파일 끝에 텍스트를 추가하기만 하면 됩니다. 이것은 시스템과 함께 지속적으로 업데이트되는 로그 파일과 유사합니다.

로그 파일은 응용 프로그램이 반복적으로 이러한 파일에 로그 세부 정보를 계속 추가하므로 텍스트를 추가하는 완벽한 예입니다. 이 문제에는 로깅 프레임워크가 필요하지 않지만 기존 파일에 텍스트를 추가하는 방법을 알고 있어야 합니다. 이 문제를 해결하기 위해서는 문자 파일을 작성하는 편의 클래스를 알고 있어야 합니다.

클래스에는 기본 바이트 버퍼 및 문자 인코딩의 허용 가능성을 가정하는 생성자가 있습니다. 값을 직접 지정하려면 FileOutputStream을 사용하여 OutputStreamWriter를 구성하면 됩니다. 파일의 가용성은 파일 생성 여부를 결정하는 기본 플랫폼에 따라 다릅니다.

일부 플랫폼에서는 단일 FileWrite 또는 여러 파일 쓰기 개체를 사용하여 함수를 작성하기 위해 파일을 초기화할 수 있습니다. 그러나 관련 파일이 이미 초기화되면 이 클래스의 생성자는 실패합니다. FileWriter는 문자 스트림을 작성하는 데 사용되며 FileOutputStream은 원시 바이트 스트림을 작성할 수 있습니다.

세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

8. 정수 배열에서 가장 큰 수 또는 가장 작은 수를 어떻게 찾을 수 있습니까?

이 솔루션을 위해서는 완전한 정수인 배열에서 가장 큰 숫자나 가장 작은 숫자를 찾을 수 있는 함수나 메서드를 코딩해야 합니다. 먼저 MaximumMinimumArrayDemo.java라는 이름을 사용하여 Java에서 소스 파일을 만들고 컴파일 및 실행을 위해 작성된 코드를 여기에 복사해야 합니다.

배열의 최대값과 최소값을 각각 저장하기 위해 '가장 큰' 및 '가장 작은'이라고 하는 두 개의 변수를 사용할 수 있습니다. 가장 작은 숫자는 integer.MIN_VALUE를 사용하여 초기화할 수 있고 가장 큰 숫자는 integer.MAX_VALUE를 사용하여 초기화할 수 있습니다.

시작한 루프를 반복할 때마다 현재 숫자를 '가장 큰' 및 '가장 작은'과 비교하고 그에 따라 업데이트할 수 있습니다. 배열은 Java의 toString 메서드를 재정의하지 않으므로 Arrays.toString()을 사용하여 대상 배열의 내용을 인쇄할 수 있습니다.

이 정적 메서드를 사용하여 main 함수를 직접 호출할 수 있습니다. 그런 다음 이 메서드를 통해 임의의 배열을 전달하여 최대값과 최소값이 정확하게 반환되었는지 확인해야 합니다. IDE의 단위 테스트를 통해 이 테스트를 자동화하도록 선택할 수도 있습니다.

체크아웃: 이력서에 넣어야 할 4가지 컴퓨터 기술

결론

프로그래밍에 중점을 둔 과정은 문제 해결에 탁월할 뿐만 아니라 지원 시 선발될 가능성도 높아집니다. Java 프로그래밍 및 고급 코딩 문제에 대해 자세히 알아보려면 upGrad의 컴퓨터 공학 석사 또는 풀 스택 개발 과정 과 같은 종합 과정에 등록할 수 있습니다 .

풀 스택 개발자 되기

upGrad 소프트웨어 공학 직무연계PG 자격증 신청