CS 암기

짧게 외우고 문제로 다시 확인합니다.

CS 영역은 용어가 많아 한 번에 길게 보기보다, 핵심 차이와 대표 예시를 반복하는 방식이 효율적입니다.

TCP와 UDP 차이

TCP는 연결 기반으로 신뢰성 있는 전송을 제공하고, UDP는 비연결 기반으로 빠른 전송에 초점을 둡니다.

  • TCP: 순서 보장, 재전송, 흐름 제어, 혼잡 제어를 제공합니다.
  • UDP: 연결 설정 과정이 단순하고 지연이 적지만 자체적인 전송 보장은 약합니다.

연습 문제 정답/해설: 파일 전송처럼 정확성이 중요하면 TCP가 적합하고, 실시간 스트리밍처럼 지연이 중요한 경우 UDP를 고려할 수 있습니다.

프로세스와 스레드

프로세스는 실행 중인 프로그램의 독립적인 작업 단위이고, 스레드는 프로세스 안에서 실행되는 더 작은 실행 흐름입니다.

  • 프로세스는 독립된 메모리 공간을 가집니다.
  • 스레드는 같은 프로세스의 코드, 데이터, 힙 영역을 공유합니다.
  • 스레드는 공유 자원 접근 시 동기화가 중요합니다.

자주 틀리는 포인트: 스레드는 자원을 공유하기 때문에 빠를 수 있지만, 데이터 경쟁 문제가 생길 수 있습니다.

인증과 인가

인증은 사용자가 누구인지 확인하는 과정이고, 인가는 인증된 사용자가 특정 자원에 접근할 권한이 있는지 확인하는 과정입니다.

로그인은 인증, 관리자 페이지 접근 가능 여부 확인은 인가로 볼 수 있습니다.

연습 문제 정답/해설: 비밀번호를 확인하는 절차는 인증입니다. 로그인 후 결제 내역 페이지 접근 가능 여부를 판단하는 절차는 인가입니다.

디자인 패턴과 소프트웨어공학 용어

디자인 패턴은 반복되는 설계 문제에 대한 재사용 가능한 해결 방법입니다. 정보처리기사 실기에서는 싱글턴, 팩토리, MVC 같은 용어가 자주 등장합니다.

  • 싱글턴: 인스턴스를 하나만 만들어 공유합니다.
  • 팩토리: 객체 생성 로직을 별도 객체나 메서드로 분리합니다.
  • MVC: Model, View, Controller로 관심사를 나눕니다.

연습 문제 정답/해설: 화면, 데이터, 제어 흐름을 분리하는 구조를 묻는다면 MVC를 떠올릴 수 있습니다.

UML과 요구사항 표현

UML은 시스템 구조와 행위를 그림으로 표현하는 표기법입니다. 실기에서는 다이어그램 이름과 용도를 구분하는 문제가 자주 나옵니다.

  • 유스케이스 다이어그램: 액터와 시스템 기능의 관계를 표현합니다.
  • 클래스 다이어그램: 클래스, 속성, 메서드, 클래스 사이 관계를 표현합니다.
  • 시퀀스 다이어그램: 객체 사이 메시지 흐름을 시간 순서로 표현합니다.

자주 틀리는 포인트: 유스케이스는 내부 로직보다 사용자가 보는 기능 범위를 잡는 데 적합하고, 시퀀스는 처리 순서 확인에 적합합니다.

테스트 기법 핵심

테스트 문제는 블랙박스와 화이트박스의 기준을 먼저 나누면 정리하기 쉽습니다.

  • 동등 분할: 같은 결과가 예상되는 입력 범위를 그룹으로 나누어 대표값을 고릅니다.
  • 경계값 분석: 조건의 경계 바로 아래, 경계값, 바로 위 값을 확인합니다.
  • 화이트박스 커버리지: 문장, 분기, 조건, 경로가 테스트되었는지 확인합니다.

연습 문제 정답/해설: 0 이상 100 이하 점수 입력을 검사한다면 -1, 0, 1, 99, 100, 101처럼 경계 근처 값을 확인하는 것이 경계값 분석입니다.

인터페이스 구현과 API

인터페이스는 시스템 사이에 데이터를 주고받기 위한 약속입니다. 명세에는 요청 방식, 데이터 형식, 응답 코드, 오류 처리 기준이 포함되어야 합니다.

  • JSON: 키-값 중심의 가벼운 데이터 표현 방식입니다.
  • XML: 태그 기반으로 계층 구조를 명확히 표현합니다.
  • REST: URI로 자원을 표현하고 HTTP 메서드로 행위를 표현합니다.

자주 틀리는 포인트: GET은 조회, POST는 생성, PUT은 수정, DELETE는 삭제처럼 자원과 행위를 나누어 읽으면 API 문제를 풀기 쉽습니다.

프로그래밍 언어와 코드 해석

코드 해석 문제는 언어 문법을 많이 외우는 것보다 변수 변화 과정을 정확히 추적하는 것이 중요합니다.

  • C 포인터: 값과 주소를 구분하고, *와 &의 의미를 확인합니다.
  • Java: 오버로딩은 매개변수 차이, 오버라이딩은 상속 관계의 재정의입니다.
  • Python: 리스트는 인덱스, 딕셔너리는 키로 접근합니다.

연습 문제 정답/해설: 반복문 문제는 초기값, 조건식, 증가식, 출력 시점을 표로 적으면 마지막 반복에서 생기는 실수를 줄일 수 있습니다.

형상관리, 패키징, 릴리즈

형상관리는 요구사항, 설계, 코드, 배포 산출물의 변경을 추적하고 통제하는 활동입니다. 패키징은 사용자가 설치하고 실행할 수 있도록 산출물을 묶는 과정입니다.

  • 기준선: 승인된 산출물 상태로, 이후 변경 관리의 기준이 됩니다.
  • 릴리즈 노트: 변경 기능, 수정 결함, 알려진 이슈, 주의사항을 정리합니다.
  • 태그: 배포된 특정 커밋을 버전 이름으로 고정해 추적합니다.

자주 틀리는 포인트: 패키징은 실행 파일만 묶는 작업이 아니라 설치 절차, 환경 조건, 매뉴얼, 라이선스 정보까지 포함하는 배포 준비 활동입니다.

CS 문제 풀기