자료형 | 설명 | 예시 |
---|---|---|
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 | 인수 시험. 출시 및 배포 전 최종 테스트 |
테스트 종류 | 설명 |
---|---|
정적 테스트 | 소프트웨어를 구동하지 않고 테스트 |
동적 테스트 | 소프트웨어를 구동해서 테스트 |
종류 | 설명 |
---|---|
동료 검토 | 동료 간의 코드 검토 |
코드 리뷰 | 코드의 품질을 검토하고 개선하기 위한 리뷰 |
기술 검토 | 기술적인 측면에서의 검토 |
종류 | 설명 |
---|---|
블랙박스 테스트 | 소프트웨어 작동원리를 모른 채 니즈에 일치하는지만 보고 판단 |
화이트박스 테스트 | 소프트웨어 작동원리를 안 채 의도대로 작동하는지 확인 |