정보처리기사 소프트웨어 개발 기출변형문제 50제
정보처리기사 소프트웨어 개발 과목 문항입니다. 각 문항의 정답과 해설이 바로 아래에 함께 있습니다.
이 과목에서 나오는 것
자료구조와 알고리즘, 테스트, 형상관리 세 덩어리로 이루어져 있습니다. 자료구조는 후입선출 구조와 선입선출 구조, 트리, 그래프의 정의가 easy로 나오고 hard에서는 스택을 활용하는 예, 너비 우선 탐색에 사용하는 자료구조, 이진 트리의 순회 방법이 묻힙니다. 알고리즘은 정렬 방식의 이름과 동작(인접한 두 원소를 비교해 큰 값을 뒤로 보내는 방식)이 easy, 평균 시간 복잡도가 특정 값에 해당하는 정렬을 모두 고르는 문항과 퀵 정렬의 최악 복잡도, 이분 탐색의 복잡도가 hard입니다. 테스트는 비중이 가장 큽니다. 내부 로직을 보는 기법과 보지 않는 기법의 구분, 단위·통합·회귀·인수 테스트의 단계, 정적 분석 도구가 easy로 나오고, hard에서는 조건문의 참과 거짓을 각각 한 번 이상 실행하게 하는 커버리지 기준, 입력 범위를 그룹으로 나누는 기법, 경계 부분을 집중 공략하는 기법, 샌드위치 통합 테스트, 결함의 우선순위와 심각도의 차이, 회귀 테스트 자동화의 장점, 정적 분석으로 발견하기 어려운 것을 묻습니다. 형상관리는 4대 기능과 버전 관리 도구, 커밋의 개념이 다뤄집니다.
테스트 기법은 '무엇을 보고 케이스를 만드는가'로 두 갈래를 먼저 확정하고, 그 아래에 세부 기법을 붙이는 이층 구조로 정리하세요. 단계(언제 하는가)와 기법(어떻게 케이스를 만드는가)을 섞어 외우면 hard에서 반드시 흔들립니다. 시간 복잡도는 정렬 다섯 종류와 탐색 두 종류의 평균·최악 값만 표로 만들면 관련 문항이 모두 정리됩니다.
문제와 해설
- 1가장 나중에 삽입된 데이터가 가장 먼저 삭제되는(LIFO) 자료구조는? 기본
- 그래프(Graph)
- 스택(Stack)
- 트리(Tree)
- 큐(Queue)
정답 2번 · 스택(Stack)
해설 스택은 후입선출(LIFO, Last In First Out) 구조로, 마지막에 넣은 데이터가 가장 먼저 나온다.
- 2가장 먼저 삽입된 데이터가 가장 먼저 삭제되는(FIFO) 자료구조는? 기본
- 해시 테이블
- 링크드 리스트
- 큐(Queue)
- 스택(Stack)
정답 3번 · 큐(Queue)
해설 큐는 선입선출(FIFO, First In First Out) 구조로, 먼저 넣은 데이터가 먼저 나온다.
- 3부모-자식 관계를 가지는 계층적 자료구조로, 루트 노드에서 시작하는 것은? 기본
- 배열(Array)
- 큐(Queue)
- 스택(Stack)
- 트리(Tree)
정답 4번 · 트리(Tree)
해설 트리는 하나의 루트 노드에서 시작하여 부모-자식 관계로 계층적으로 구성되는 비선형 자료구조이다.
- 4정점(Node)과 그들을 연결하는 간선(Edge)으로 구성되며, 순환 구조도 표현할 수 있는 자료구조는? 기본
- 스택(Stack)
- 큐(Queue)
- 그래프(Graph)
- 트리(Tree)
정답 3번 · 그래프(Graph)
해설 그래프는 정점과 간선으로 구성되며 트리와 달리 순환(cycle) 구조도 표현할 수 있는 자료구조이다.
- 5인접한 두 원소를 비교하여 큰 값을 뒤로 보내는 과정을 반복하는 정렬 알고리즘은? 기본
- 버블 정렬(Bubble Sort)
- 퀵 정렬(Quick Sort)
- 이분 탐색
- 해시 정렬
정답 1번 · 버블 정렬(Bubble Sort)
해설 버블 정렬은 인접한 두 원소를 비교하여 교환을 반복하며 정렬하는 대표적인 단순 정렬 알고리즘이다.
- 6정렬되어 있는 자료에서 중간값을 비교하며 탐색 범위를 절반씩 줄여가는 탐색 방법은? 기본
- 이분 탐색(Binary Search)
- 순차 탐색(Sequential Search)
- 깊이 우선 탐색
- 해시 탐색
정답 1번 · 이분 탐색(Binary Search)
해설 이분 탐색은 정렬된 자료에서 중간값과 비교하여 탐색 범위를 절반씩 줄여가며 원하는 값을 찾는 방법이다.
- 7처음부터 끝까지 자료를 순서대로 하나씩 비교하며 찾는 가장 단순한 탐색 방법은? 기본
- 해시 탐색
- 순차 탐색(Sequential Search)
- 이분 탐색(Binary Search)
- 트리 탐색
정답 2번 · 순차 탐색(Sequential Search)
해설 순차 탐색은 자료를 처음부터 끝까지 순서대로 하나씩 비교하며 원하는 값을 찾는 가장 단순한 탐색 방법이다.
- 8프로그램의 내부 로직(코드 구조)을 보면서 테스트 케이스를 설계하는 테스트 기법은? 기본
- 회귀 테스트
- 인수 테스트
- 블랙박스 테스트
- 화이트박스 테스트
정답 4번 · 화이트박스 테스트
해설 화이트박스 테스트는 프로그램 내부의 소스 코드와 로직 구조를 보며 테스트 케이스를 설계하는 기법이다.
- 9프로그램의 내부 구조는 보지 않고 입력과 출력의 관계만으로 테스트 케이스를 설계하는 기법은? 기본
- 화이트박스 테스트
- 단위 테스트
- 블랙박스 테스트
- 통합 테스트
정답 3번 · 블랙박스 테스트
해설 블랙박스 테스트는 내부 구조를 모른 채 입력에 대한 출력 결과만으로 정상 동작 여부를 검증하는 기법이다.
- 10가장 작은 단위인 모듈이나 함수를 개별적으로 검증하는 테스트 단계는? 기본
- 시스템 테스트(System Test)
- 단위 테스트(Unit Test)
- 인수 테스트(Acceptance Test)
- 통합 테스트(Integration Test)
정답 2번 · 단위 테스트(Unit Test)
해설 단위 테스트는 개별 모듈이나 함수 단위로 정상 동작 여부를 검증하는 가장 작은 단위의 테스트이다.
- 11여러 모듈을 결합했을 때 모듈 간 인터페이스나 상호작용에 오류가 없는지 검증하는 테스트 단계는? 기본
- 회귀 테스트(Regression Test)
- 인수 테스트(Acceptance Test)
- 단위 테스트(Unit Test)
- 통합 테스트(Integration Test)
정답 4번 · 통합 테스트(Integration Test)
해설 통합 테스트는 단위 테스트를 마친 모듈들을 결합했을 때 모듈 간 인터페이스와 상호작용을 검증하는 단계이다.
- 12소프트웨어 수정이나 기능 추가 후, 기존 기능이 정상적으로 동작하는지 재확인하는 테스트를 무엇이라 하는가? 기본
- 동등 분할 테스트
- 회귀 테스트(Regression Test)
- 경계값 분석 테스트
- 단위 테스트
정답 2번 · 회귀 테스트(Regression Test)
해설 회귀 테스트는 코드 수정 후 기존에 정상 동작하던 기능에 결함이 발생하지 않았는지 재확인하는 테스트이다.
- 13고객이나 사용자의 요구를 충족하는지 최종적으로 확인하기 위해 실제 사용 환경에서 수행하는 테스트는? 기본
- 인수 테스트(Acceptance Test)
- 화이트박스 테스트
- 단위 테스트
- 통합 테스트
정답 1번 · 인수 테스트(Acceptance Test)
해설 인수 테스트는 개발 완료된 시스템이 고객의 요구사항을 충족하는지 최종적으로 확인하는 테스트 단계이다.
- 14소스 코드를 실행하지 않고 코드 자체를 분석하여 결함이나 코딩 규칙 위반을 찾아내는 도구를 무엇이라 하는가? 기본
- 동적 분석 도구
- 형상관리 도구
- 빌드 도구
- 정적 분석 도구
정답 4번 · 정적 분석 도구
해설 정적 분석 도구는 프로그램을 실행하지 않고 소스 코드 자체를 분석하여 결함이나 코딩 규칙 위반, 잠재적 버그를 찾아낸다.
- 15소프트웨어의 변경 사항(버전)을 체계적으로 관리하여 이전 버전으로 되돌리거나 변경 이력을 추적할 수 있게 하는 활동은? 기본
- 요구사항 분석
- UI 설계
- 성능 테스트
- 형상 관리(Configuration Management)
정답 4번 · 형상 관리(Configuration Management)
해설 형상 관리는 소프트웨어 산출물의 변경 사항을 체계적으로 식별·통제·기록하여 버전을 추적 관리하는 활동이다.
- 16분산 버전 관리 시스템으로, 소스 코드의 변경 이력을 저장하고 협업을 지원하는 대표적인 도구는? 기본
- Excel
- Photoshop
- PowerPoint
- Git
정답 4번 · Git
해설 Git은 소스 코드의 변경 이력을 관리하고 여러 개발자가 협업할 수 있도록 지원하는 대표적인 분산 버전 관리 시스템이다.
- 17Git에서 변경 사항을 저장소에 기록하는 하나의 단위(스냅샷)를 무엇이라 하는가? 기본
- 커밋(Commit)
- 브랜치(Branch)
- 포크(Fork)
- 머지(Merge)
정답 1번 · 커밋(Commit)
해설 커밋은 Git에서 변경 사항을 저장소에 기록하는 하나의 단위(스냅샷)를 의미한다.
- 18Git에서 원래 코드 흐름과 독립적으로 별도의 작업 공간을 만들어 개발을 진행할 수 있게 하는 기능은? 기본
- 태그(Tag)
- 클론(Clone)
- 브랜치(Branch)
- 커밋(Commit)
정답 3번 · 브랜치(Branch)
해설 브랜치는 원본 코드 흐름과 독립된 별도의 작업 공간을 만들어 병행 개발이 가능하도록 하는 Git의 기능이다.
- 19소스 코드를 실행 가능한 프로그램으로 자동으로 변환·조립하는 과정을 지원하는 도구를 무엇이라 하는가? 기본
- 형상관리 도구
- 빌드 도구
- 디버거
- 테스트 오라클
정답 2번 · 빌드 도구
해설 빌드 도구는 소스 코드의 컴파일, 패키징, 배포 등의 과정을 자동화하여 실행 가능한 프로그램을 생성한다.
- 20테스트 결과가 옳은지 판단하기 위한 예상 결과(기준)를 무엇이라 하는가? 기본
- 테스트 스텁(Stub)
- 테스트 드라이버(Driver)
- 테스트 슈트(Suite)
- 테스트 오라클(Test Oracle)
정답 4번 · 테스트 오라클(Test Oracle)
해설 테스트 오라클은 테스트 케이스의 실행 결과가 옳은지 판단하기 위한 예상 결과 값 또는 기준을 의미한다.
- 21하위 모듈이 완성되지 않았을 때, 이를 대신하여 상위 모듈을 테스트할 수 있도록 임시로 만든 모듈은? 기본
- 테스트 드라이버(Driver)
- 테스트 스텁(Stub)
- 테스트 케이스
- 테스트 오라클
정답 2번 · 테스트 스텁(Stub)
해설 테스트 스텁은 아직 개발되지 않은 하위 모듈을 대신하여 상위 모듈 테스트를 진행할 수 있도록 만든 임시 모듈이다.
- 22상위 모듈이 완성되지 않았을 때, 하위 모듈을 호출하여 테스트를 수행하기 위해 만든 도구는? 기본
- 테스트 오라클
- 테스트 드라이버(Driver)
- 테스트 시나리오
- 테스트 스텁(Stub)
정답 2번 · 테스트 드라이버(Driver)
해설 테스트 드라이버는 아직 개발되지 않은 상위 모듈을 대신하여 하위 모듈을 호출하고 테스트를 수행하는 도구이다.
- 23코드의 가독성과 유지보수성을 높이기 위해 이해하기 쉽고 간결하게 작성된 코드를 무엇이라 하는가? 기본
- 클린 코드(Clean Code)
- 스파게티 코드
- 난독화 코드
- 레거시 코드
정답 1번 · 클린 코드(Clean Code)
해설 클린 코드는 가독성이 높고 간결하며 유지보수가 쉬운, 잘 작성된 코드를 의미한다.
- 24여러 모듈을 순서 없이 결합한 후 전체를 한 번에 테스트하는 통합 테스트 방식을 무엇이라 하는가? 기본
- 빅뱅(Big Bang) 통합 테스트
- 보텀업(Bottom-Up) 통합 테스트
- 샌드위치 통합 테스트
- 탑다운(Top-Down) 통합 테스트
정답 1번 · 빅뱅(Big Bang) 통합 테스트
해설 빅뱅 통합 테스트는 모든 모듈을 한꺼번에 결합한 후 전체 시스템을 대상으로 한 번에 테스트하는 방식이다.
- 25상위 모듈에서 하위 모듈 방향으로 점진적으로 통합하며 테스트하는 방식은? 기본
- 회귀 테스트
- 보텀업(Bottom-Up) 통합 테스트
- 탑다운(Top-Down) 통합 테스트
- 빅뱅 통합 테스트
정답 3번 · 탑다운(Top-Down) 통합 테스트
해설 탑다운 통합 테스트는 최상위 모듈부터 시작하여 하위 모듈 방향으로 점진적으로 통합해가며 테스트하는 방식이다.
- 26화이트박스 테스트의 커버리지 기준 중, 프로그램 내 모든 조건문의 참(True)/거짓(False) 결과를 각각 한 번 이상 실행하도록 테스트 케이스를 설계하는 것은? 심화
- 분기 커버리지(Branch Coverage)
- 경로 커버리지(Path Coverage)
- 조건-결정 커버리지(Condition-Decision Coverage)
- 문장 커버리지(Statement Coverage)
정답 1번 · 분기 커버리지(Branch Coverage)
해설 분기 커버리지는 모든 조건문의 참/거짓 분기를 각각 한 번 이상 실행하도록 테스트 케이스를 설계하는 기준으로, 문장 커버리지보다 강화된 기준이다.
- 27블랙박스 테스트 기법 중, 입력값의 유효한/유효하지 않은 범위를 그룹으로 나누어 각 그룹에서 대표값을 선정해 테스트하는 기법은? 심화
- 원인-효과 그래프(Cause-Effect Graph)
- 경계값 분석(Boundary Value Analysis)
- 상태 전이 테스트(State Transition Testing)
- 동등 분할(Equivalence Partitioning)
정답 4번 · 동등 분할(Equivalence Partitioning)
해설 동등 분할은 입력 데이터를 유효/무효 그룹으로 나누고 각 그룹을 대표하는 값 하나로 테스트하여 테스트 케이스 수를 줄이는 기법이다.
- 28블랙박스 테스트 기법 중, 입력 값의 최소·최대와 같은 경계 부분에서 오류가 발생하기 쉽다는 점에 착안한 테스트 기법은? 심화
- 의사 결정 테이블(Decision Table)
- 동등 분할(Equivalence Partitioning)
- 제어 흐름 테스트
- 경계값 분석(Boundary Value Analysis)
정답 4번 · 경계값 분석(Boundary Value Analysis)
해설 경계값 분석은 입력 값의 경계(최솟값, 최댓값 및 그 인접 값) 부근에서 오류가 자주 발생한다는 경험에 근거한 블랙박스 테스트 기법이다.
- 29다음 중 정렬 알고리즘의 평균 시간 복잡도가 O(n log n)에 해당하는 것을 모두 고른 것은? ㄱ. 퀵 정렬 ㄴ. 버블 정렬 ㄷ. 병합 정렬 ㄹ. 선택 정렬 심화
- ㄷ, ㄹ
- ㄱ, ㄷ
- ㄴ, ㄹ
- ㄱ, ㄴ
정답 2번 · ㄱ, ㄷ
해설 퀵 정렬과 병합 정렬은 평균적으로 O(n log n)의 시간 복잡도를 가진다. 버블 정렬과 선택 정렬은 O(n²)의 시간 복잡도를 가진다.
- 30n개의 데이터를 이분 탐색(Binary Search)으로 찾을 때의 시간 복잡도는? 심화
- O(n log n)
- O(n²)
- O(n)
- O(log n)
정답 4번 · O(log n)
해설 이분 탐색은 탐색 범위를 매번 절반으로 줄여가므로 시간 복잡도는 O(log n)이다.
- 31다음 중 형상관리(Configuration Management)의 4대 기능에 해당하지 않는 것은? 심화
- 성능 최적화
- 형상 통제(Control)
- 형상 감사(Audit)
- 형상 식별(Identification)
정답 1번 · 성능 최적화
해설 형상관리의 4대 기능은 형상 식별, 형상 통제, 형상 감사, 형상 기록(상태 보고)이다. 성능 최적화는 형상관리의 기능이 아니다.
- 32통합 테스트 방식 중 '샌드위치(Sandwich) 통합 테스트'에 대한 설명으로 옳은 것은? 심화
- 모든 모듈을 한 번에 결합하여 테스트한다
- 최상위 모듈 하나만을 테스트한다
- 최하위 모듈만을 반복적으로 테스트한다
- 탑다운 방식과 보텀업 방식을 혼합하여 상위와 하위에서 동시에 통합해 나간다
정답 4번 · 탑다운 방식과 보텀업 방식을 혼합하여 상위와 하위에서 동시에 통합해 나간다
해설 샌드위치 통합 테스트는 상위 계층은 탑다운 방식, 하위 계층은 보텀업 방식으로 동시에 진행하여 중간에서 만나도록 통합하는 방식이다.
- 33다음 중 소스 코드 정적 분석을 통해 발견하기 어려운 것은? 심화
- 코딩 표준 위반
- 선언되었지만 사용되지 않는 변수
- 실제 운영 환경에서의 응답 시간 지연
- 잠재적인 널 포인터 참조 가능성
정답 3번 · 실제 운영 환경에서의 응답 시간 지연
해설 정적 분석은 코드를 실행하지 않고 분석하므로 실제 운영 환경에서 발생하는 성능·응답 시간 문제는 동적 분석(성능 테스트)을 통해 확인해야 한다.
- 34다음 자료구조 중 스택(Stack)을 활용하는 예로 가장 적절한 것은? 심화
- 은행 창구의 대기 순번 처리
- 너비 우선 탐색(BFS)
- 함수 호출 시 복귀 주소를 저장하는 시스템 스택
- 프린터 작업 대기열 처리
정답 3번 · 함수 호출 시 복귀 주소를 저장하는 시스템 스택
해설 함수 호출의 복귀 주소 저장은 후입선출 구조인 스택을 활용한다. 프린터 대기열이나 은행 순번, 너비 우선 탐색은 선입선출 구조인 큐를 활용하는 대표적인 예이다.
- 35다음 중 그래프 탐색 알고리즘인 너비 우선 탐색(BFS)의 구현에 일반적으로 사용되는 자료구조는? 심화
- 큐(Queue)
- 해시 테이블
- 트리
- 스택(Stack)
정답 1번 · 큐(Queue)
해설 너비 우선 탐색(BFS)은 인접 노드를 순서대로 방문하기 위해 큐를 사용하며, 깊이 우선 탐색(DFS)은 주로 스택 또는 재귀를 사용한다.
- 36테스트 케이스 작성 시 포함되어야 할 요소로 거리가 먼 것은? 심화
- 실행 조건
- 입력 데이터
- 테스트 담당자의 개인 취향
- 예상 결과
정답 3번 · 테스트 담당자의 개인 취향
해설 테스트 케이스는 입력 데이터, 실행 조건, 예상 결과 등을 명세해야 하며 담당자의 개인 취향은 테스트 케이스 구성 요소가 아니다.
- 37다음 중 소프트웨어 개발 산출물의 버전을 관리할 때, 이전 버전과의 차이만 저장하는 방식으로 저장 공간을 절약하는 기법과 가장 관련이 깊은 것은? 심화
- 블랙박스 테스트
- 빅뱅 통합
- 델타(Delta) 방식 버전 관리
- 동등 분할
정답 3번 · 델타(Delta) 방식 버전 관리
해설 델타 방식은 전체 파일을 매번 저장하지 않고 이전 버전과의 변경분(차이)만 저장하여 저장 공간을 절약하는 형상관리 기법이다.
- 38다음 중 인터페이스 구현 검증 도구가 수행하는 역할로 가장 적절한 것은? 심화
- 연계된 모듈 간에 데이터가 정해진 형식과 규격대로 정확히 송수신되는지 확인한다
- 요구사항 문서의 오탈자를 검사한다
- 서버의 전기 소비량을 측정한다
- 사용자 화면의 색상 배색이 적절한지 확인한다
정답 1번 · 연계된 모듈 간에 데이터가 정해진 형식과 규격대로 정확히 송수신되는지 확인한다
해설 인터페이스 구현 검증 도구는 시스템 간 연계 시 정의된 인터페이스 규격대로 데이터가 정확히 송수신되는지를 검증하는 역할을 한다.
- 39다음 중 결함(버그)의 우선순위와 심각도(Severity)에 대한 설명으로 옳은 것은? 심화
- 심각도는 개발자의 주관과 무관하게 자동으로 결정된다
- 심각도와 우선순위는 항상 동일한 값으로 결정된다
- 우선순위가 낮으면 반드시 심각도도 낮다
- 심각도는 결함이 시스템에 미치는 영향의 크기를 나타내고, 우선순위는 처리 순서를 나타낸다
정답 4번 · 심각도는 결함이 시스템에 미치는 영향의 크기를 나타내고, 우선순위는 처리 순서를 나타낸다
해설 심각도는 결함이 시스템에 미치는 영향의 크기를, 우선순위는 이를 처리할 순서를 나타내며 서로 독립적으로 결정될 수 있다(심각도가 낮아도 우선순위가 높을 수 있음).
- 40다음 중 회귀 테스트(Regression Test) 자동화의 장점으로 거리가 먼 것은? 심화
- 새로운 요구사항을 자동으로 분석해 설계 문서를 생성한다
- 사람의 실수(휴먼 에러)로 인한 테스트 누락을 줄인다
- 동일한 테스트를 반복 수행할 때 소요 시간을 단축한다
- 코드 변경 후 기존 기능의 회귀 결함을 빠르게 탐지한다
정답 1번 · 새로운 요구사항을 자동으로 분석해 설계 문서를 생성한다
해설 회귀 테스트 자동화는 반복 테스트의 시간 단축, 휴먼 에러 감소, 빠른 회귀 결함 탐지에 도움을 주지만, 요구사항을 분석해 설계 문서를 자동 생성하는 기능은 아니다.
- 41다음 중 이진 트리(Binary Tree)의 순회 방법이 아닌 것은? 심화
- 전위 순회(Preorder Traversal)
- 역순위 순회(Reverse Priority Traversal)
- 후위 순회(Postorder Traversal)
- 중위 순회(Inorder Traversal)
정답 2번 · 역순위 순회(Reverse Priority Traversal)
해설 이진 트리의 대표적인 순회 방법은 전위, 중위, 후위 순회이다. 역순위 순회는 표준 순회 방법이 아니다.
- 42퀵 정렬(Quick Sort)의 최악의 경우(worst case) 시간 복잡도는? 심화
- O(n²)
- O(log n)
- O(n log n)
- O(n)
정답 1번 · O(n²)
해설 퀵 정렬은 피벗 선택이 매번 최소/최대값으로 편중되는 최악의 경우 O(n²)의 시간 복잡도를 가진다. 평균적인 경우는 O(n log n)이다.
- 43다음 중 테스트 자동화 도구 도입 시 고려해야 할 사항으로 가장 거리가 먼 것은? 심화
- 테스트 담당자의 사적인 여가 활동 계획
- 테스트 스크립트의 유지보수 비용
- 반복적으로 수행되는 테스트 케이스의 존재 여부
- 도구와 테스트 대상 환경의 호환성
정답 1번 · 테스트 담당자의 사적인 여가 활동 계획
해설 테스트 자동화 도구 도입 시 반복 테스트 존재 여부, 스크립트 유지보수 비용, 환경 호환성 등을 고려해야 하며, 담당자의 여가 활동과는 무관하다.
- 44다음 중 클린 코드 작성 원칙으로 틀린 것은? 심화
- 의존성을 최소화하여 서로 영향을 적게 받도록 작성한다
- 하나의 함수가 여러 가지 일을 동시에 처리하도록 길게 작성한다
- 변수와 함수의 이름을 의미가 명확하게 짓는다
- 중복 코드를 제거하여 하나의 로직으로 통합한다
정답 2번 · 하나의 함수가 여러 가지 일을 동시에 처리하도록 길게 작성한다
해설 클린 코드는 하나의 함수가 하나의 책임(일)만 수행하도록 간결하게 작성해야 한다. 여러 일을 한 함수에서 처리하는 것은 클린 코드 원칙에 위배된다.
- 45해시 테이블에서 서로 다른 키가 같은 해시 값으로 계산되어 저장 위치가 충돌하는 현상을 무엇이라 하는가? 심화
- 데드락(Deadlock)
- 오버플로우(Overflow)
- 해시 충돌(Collision)
- 세그멘테이션 폴트
정답 3번 · 해시 충돌(Collision)
해설 해시 충돌은 서로 다른 키에 대한 해시 함수 결과값(해시 값)이 동일하게 나와 저장 위치가 겹치는 현상이다.
- 46다음 중 '단위 테스트(Unit Test)'의 장점으로 거리가 먼 것은? 심화
- 코드 변경 시 회귀 테스트로 재사용할 수 있다
- 개별 모듈의 기능을 독립적으로 검증할 수 있다
- 결함을 조기에 발견하여 수정 비용을 낮출 수 있다
- 시스템 전체의 성능 부하를 실제 운영 환경과 동일하게 측정할 수 있다
정답 4번 · 시스템 전체의 성능 부하를 실제 운영 환경과 동일하게 측정할 수 있다
해설 단위 테스트는 개별 모듈을 독립적으로 검증하는 것이 목적이며, 실제 운영 환경과 동일한 부하 측정은 성능 테스트(시스템 테스트 단계)의 역할이다.
- 47다음 중 코드 인스펙션(Code Inspection)에 대한 설명으로 옳은 것은? 심화
- 테스트 자동화 스크립트를 실행하는 도구이다
- 작성된 소스 코드를 정해진 절차에 따라 여러 검토자가 함께 검토하여 결함을 찾는 정적 검증 활동이다
- 프로그램을 실제로 실행시켜 성능을 측정하는 활동이다
- 형상관리 저장소에 커밋하는 절차이다
정답 2번 · 작성된 소스 코드를 정해진 절차에 따라 여러 검토자가 함께 검토하여 결함을 찾는 정적 검증 활동이다
해설 코드 인스펙션은 정해진 절차와 역할에 따라 여러 검토자가 소스 코드를 함께 검토하여 결함을 찾아내는 정적 검증(리뷰) 활동이다.
- 48다음 중 링크드 리스트(Linked List)와 배열(Array)을 비교한 설명으로 옳은 것은? 심화
- 링크드 리스트는 중간에 데이터를 삽입·삭제할 때 배열보다 데이터 이동이 적을 수 있다
- 배열은 크기를 실행 중에 동적으로 변경할 수 없어 링크드 리스트보다 항상 비효율적이다
- 배열은 포인터를 이용해 다음 요소를 참조하는 구조이다
- 링크드 리스트는 인덱스를 이용한 임의 접근(Random Access) 속도가 배열보다 빠르다
정답 1번 · 링크드 리스트는 중간에 데이터를 삽입·삭제할 때 배열보다 데이터 이동이 적을 수 있다
해설 링크드 리스트는 포인터로 노드를 연결하므로 중간 삽입·삭제 시 배열처럼 나머지 요소를 이동시킬 필요가 적다. 다만 임의 접근은 배열이 더 빠르다.
- 49다음 중 소프트웨어 버전 관리 방식인 '중앙집중형(Centralized)'과 '분산형(Distributed)' 방식을 비교한 설명으로 틀린 것은? 심화
- 중앙집중형은 중앙 서버에 장애가 발생해도 각 개발자의 로컬 저장소에서 이력 관리에 영향이 없다
- Git은 분산형 버전 관리 시스템의 대표적인 예이다
- 중앙집중형은 하나의 중앙 서버가 모든 버전 정보를 관리한다
- 분산형은 각 개발자가 전체 이력을 가진 로컬 저장소를 보유한다
정답 1번 · 중앙집중형은 중앙 서버에 장애가 발생해도 각 개발자의 로컬 저장소에서 이력 관리에 영향이 없다
해설 중앙집중형은 중앙 서버가 모든 버전 이력을 관리하므로 서버 장애 시 버전 관리 기능 전체에 영향을 받는다. 분산형(Git 등)은 각 개발자가 전체 이력을 로컬에 보유하여 이러한 위험이 적다.
- 50테스트 레벨을 '단위-통합-시스템-인수' 순서로 진행할 때, 이 순서에 대한 설명으로 옳은 것은? 심화
- 점차 작은 단위에서 큰 단위(전체 시스템)로 테스트 범위를 확장해 나간다
- 시스템 테스트는 개별 모듈만을 대상으로 한다
- 인수 테스트를 가장 먼저 수행한 뒤 단위 테스트로 마무리한다
- 단위 테스트와 인수 테스트는 항상 동시에 수행한다
정답 1번 · 점차 작은 단위에서 큰 단위(전체 시스템)로 테스트 범위를 확장해 나간다
해설 일반적인 테스트 레벨은 단위 테스트(개별 모듈)에서 통합, 시스템(전체 시스템), 인수(고객 요구사항 충족 확인) 순으로 범위를 점차 확장하며 진행한다.