
| 자료형 | 설명 | 예시 |
|---|---|---|
| int | 정수형 데이터 타입 | 123, -456 |
| float | 실수형 데이터 타입 (소수점 포함) | 3.14, -2.71 |
| bool | 논리형 데이터 타입 | True, False |
| str | 문자열 데이터 타입 | "hello", "world" |
| list | 배열, 리스트. 순서가 있는 변경 가능한 시퀀스형 자료구조 | [1, 2, 3], ['a', 'b', 'c'] |
| tuple | 순서가 있는 변경 불가능한 시퀀스형 자료구조 | (1, 2, 3), ('a', 'b', 'c') |
| dict | 키-값 쌍으로 구성된 변경 가능한 매핑형 자료구조 | {'key1': 'value1', 'key2': 'value2'} |
| set | 순서가 없고 중복을 허용하지 않는 변경 가능한 자료구조 | {1, 2, 3}, {'a', 'b', 'c'} |
| 자료구조 | 설명 | 사용 예 |
|---|---|---|
| 리스트 | 임의의 위치에 데이터를 저장하나 각 데이터 간 순서는 존재 | 배열, 리스트 |
| 스택 | 먼저 들어온 데이터를 나중에 처리하는 선입후출의 자료구조 | DFS, 백트래킹, 후위연산 |
| 큐 | 먼저 들어온 데이터를 먼저 처리하는 선입선출의 자료구조 | BFS, 작업 스케줄링, 티켓 시스템 |
| 자료구조 | 설명 | 특징 |
|---|---|---|
| 그래프 | 부모-자식과 같은 관계가 명확하지 않다 | 어떻게든 이어질 수 있음 |
| 트리 | 계층적이며 루트 노드(시작 노드)를 제외한 모든 노드는 부모를 가진다 | - |
| 종류 | 설명 |
|---|---|
| 이진트리 | 각 부모노드의 자식이 2개를 넘을 수 없음 |
| 편향트리 | 각 부모노드는 지정된 방향으로만 자식을 1개 가짐 |
| 포화이진트리 | 각 부모노드의 자식은 0개 또는 2개여야 함 |
| 완전이진트리 | 모두 채워져있되 마지막 레벨의 노드들은 가능한 왼쪽부터 채워져 있는 이진 트리 |
| 유형 | 설명 |
|---|---|
| 공통점 | 스크립트를 기계어로 번역해주어 컴퓨터가 실행하게 해줄 수 있게 만들어주는 프로그램 |
| 컴파일러 | 스크립트 전체를 째로 번역 후 실행 |
| 인터프리터 | 한 문장씩 해석하고 시행하기를 반복 |
| 예시 | 파이썬, 자바스크립트 등이 인터프리터를 채택 |
| 메모리 영역 | 설명 |
|---|---|
| 코드 영역 | 프로그램을 실행하기 위한 명령어들의 저장소 |
| 데이터 영역 | 정적 및 전역 변수를 저장. 프로그램 실행 시 나타나고 종료 시 소멸 |
| 힙 영역 | 동적으로 할당된 메모리의 저장소. 필요에 따라 프로그램 실행 중에 메모리를 할당하고 해제할 수 있음. 데이터 인출은 선입선출 방식으로 진행됨 |
| 스택 영역 | 함수 호출, 지역 변수, 및 함수의 매개변수를 저장. 함수 호출 시 할당되고, 함수가 종료되면 해제됨 |
| 개념 | 설명 |
|---|---|
| 객체 | 스크립트로 구성된 여러 개의 독립된 단위. (클래스 등) |
| 객체 지향 프로그래밍 | 스크립트를 단순히 명령어를 순차적으로 수행하는 것을 넘어, 명령어 블록을 만들고 그것을 불러오는 방식으로 구성하는 프로그래밍 |
| 클래스 | 내가 원하는 객체를 생성할 방법들을 작성해 넣은 것 |
| 개념 | 설명 |
|---|---|
| 캡슐화 | 클래스라는 캡슐 안에 기능들을 저장 |
| 추상화 | 클래스를 설계하는 단계 |
| 상속 | 클래스 안에 다른 클래스를 넣어 부모-자식 관계를 만듬 |
| 다형성 | 변수나 함수 하나가 상황에 따라 다른 기능을 수행함 |
| 오버라이딩 | 상속받은 클래스 내에서 기능을 재정의 |
| 오버로딩 | 함수의 이름은 같으나 매개변수는 다르게 설정해, 사용 목적에 따라 다르게 불러오기 |
| 다이어그램 | 설명 |
|---|---|
| 클래스 다이어그램 | 클래스의 속성과 메소드를 나타내는 다이어그램 |
| 복합체 구조 다이어그램 | 클래스 간의 복합적인 관계를 나타내는 다이어그램 |
| 방법론 | 설명 | 장점 | 단점 |
|---|---|---|---|
| 폭포수 방법론 | 계획, 설계, 개발, 시험, 유지보수 순으로 진행하며 소프트웨어 개발 생명 주기가 굉장히 김. | 명확한 단계와 문서화로 큰 플젝에 적합 | 변경 및 수정이 어려움 |
| 애자일 방법론 | 반복적이고 점진적으로 개발하되, 각 주기마다 기능을 추가하고 개선함. 소프트웨어 개발 생명 주기가 짧음. | 빠른 피드백 및 적응성 | 명확한 계획 수립이 어려움 |
| 패턴 | MVC | MTV |
|---|---|---|
| Model | 데이터와 비즈니스 로직을 관리 | 데이터와 비즈니스 로직을 관리 |
| Template | - | 데이터를 표시하는 템플릿 |
| View | 사용자에게 데이터를 표시 | 템플릿과 모델을 연결하고 데이터 전달 |
| Controller | 사용자 입력을 처리하고 모델 및 뷰와 상호작용 | - |
| 툴 | 설명 |
|---|---|
| git | 분산 버전 관리 시스템 |
| gerrit | 코드리뷰 지원 툴 |
| sourcetree | git 을 GUI로 보기 편하게 해줌 |
| 테스트 단위 | 설명 |
|---|---|
| Unit Test | 함수, 모듈 등 가장 작은 단위들을 테스트 |
| Integration Test | 함수, 클래스, 모듈 간 기능 등을 합쳤을 때 잘 굴러가는지 테스트 |
| System Test | 실제 적용할 하드웨어에 소프트웨어를 깔아 테스트 |
| Acceptance Test | 인수 시험. 출시 및 배포 전 최종 테스트 |
| 테스트 종류 | 설명 |
|---|---|
| 정적 테스트 | 소프트웨어를 구동하지 않고 테스트 |
| 동적 테스트 | 소프트웨어를 구동해서 테스트 |
| 종류 | 설명 |
|---|---|
| 동료 검토 | 동료 간의 코드 검토 |
| 코드 리뷰 | 코드의 품질을 검토하고 개선하기 위한 리뷰 |
| 기술 검토 | 기술적인 측면에서의 검토 |
| 종류 | 설명 |
|---|---|
| 블랙박스 테스트 | 소프트웨어 작동원리를 모른 채 니즈에 일치하는지만 보고 판단 |
| 화이트박스 테스트 | 소프트웨어 작동원리를 안 채 의도대로 작동하는지 확인 |