프로그래밍

코딩 면접에서 자주 나오는 질문 TOP 6 및 답변 전략

코드금융 2025. 2. 2. 17:36
728x90
반응형

 

 

코딩 면접에서 자주 나오는 질문 TOP 10 및 답변 전략

개발자로 취업하기 위해서는 코딩 면접을 반드시 통과해야 합니다. 많은 기업들은 **알고리즘, 데이터 구조, 시스템 설계** 등 다양한 질문을 통해 지원자의 문제 해결 능력을 평가합니다. 아래에서 **자주 나오는 질문 10가지와 효과적인 답변 전략**을 알아보세요.

1. 배열에서 중복된 요소 찾기

배열에서 중복된 요소를 찾는 코드를 작성하세요.

def find_duplicates(arr):
    seen = set()
    duplicates = set()
    for num in arr:
        if num in seen:
            duplicates.add(num)
        else:
            seen.add(num)
    return list(duplicates)

print(find_duplicates([1, 2, 3, 4, 5, 2, 3, 6]))  # 출력: [2, 3]
        

2. 문자열이 회문인지 확인

주어진 문자열이 **회문(Palindrome)**인지 판별하는 함수를 작성하세요.

def is_palindrome(s):
    return s == s[::-1]

print(is_palindrome("racecar"))  # 출력: True
        

3. 정렬된 배열에서 특정 값 찾기 (이진 탐색)

정렬된 배열에서 주어진 값이 있는지 **이진 탐색(Binary Search)**을 사용해 찾는 코드를 작성하세요.

def binary_search(arr, target):
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

print(binary_search([1, 2, 3, 4, 5, 6, 7, 8, 9], 5))  # 출력: 4
        

4. 피보나치 수열을 구하는 두 가지 방법

피보나치 수열을 **반복문**과 **재귀 함수**로 구현하세요.

# 반복문
def fibonacci_iter(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
    return a

# 재귀 함수
def fibonacci_recur(n):
    if n <= 1:
        return n
    return fibonacci_recur(n - 1) + fibonacci_recur(n - 2)

print(fibonacci_iter(10))  # 출력: 55
print(fibonacci_recur(10))  # 출력: 55
        

5. 스택을 이용한 괄호 검사

주어진 문자열의 괄호가 올바르게 짝을 이루는지 확인하는 함수를 작성하세요.

def is_valid_parentheses(s):
    stack = []
    mapping = {")": "(", "}": "{", "]": "["}
    for char in s:
        if char in mapping:
            top_element = stack.pop() if stack else '#'
            if mapping[char] != top_element:
                return False
        else:
            stack.append(char)
    return not stack

print(is_valid_parentheses("({[]})"))  # 출력: True
        

6. 연결 리스트에서 중간 노드 찾기

연결 리스트에서 중간 노드를 찾는 함수를 작성하세요.

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def find_middle(head):
    slow, fast = head, head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
    return slow.val

# 예제 실행 코드 생략 (단일 연결 리스트 필요)
        

결론

코딩 면접에서는 단순한 개념보다는 **문제 해결 능력과 알고리즘 이해도**가 중요합니다. 위의 질문들을 연습하면서 **효율적인 알고리즘과 데이터 구조**를 익혀 면접에서 자신감을 가지세요!

728x90
반응형