1. 멀티스레딩을 무엇이며, 사용하는 이유
2. 데드락이란
3. 메모리 누수란 무엇이며, 왜 문제가 되는지
4. 워터폴, 에자일 방법론이란
워터폴(폭포수 방법론): 요구사항 정의-디자인-개발-테스트-배포의 과정을 순차적으로 진행, 단계별로 업무를 분담해서 맡은 역할이 명확, 계획 단계의 문서화로 시간, 상황 파악, 병목 파악이 쉬움 / 속도가 느림, 유연성이 부족
에자일: 일정한 주기를 가지고 제품을 출시해서 고객의 요구사항, 변화된 환경에 맞게 요구를 수정해나가는 방법론, 짧은 사이클(디자인, 개발, 테스트)로 제품을 제품을 개발, 테스트, 피드백을 받아 보완
5. 소프트웨어 테스팅 종류
블랙 박스: 외부 사용자 관점에서 기능을 테스트하는 것, 소스 코드는 테스트 대상이 아니고 주고 QA(서비스의 기능과 품질을 검증)에서 사용
화이트 박스: 프로그램 코드를 검증하면서 소프트웨어 기능을 테스트 하는 기법, 주로 개발자가 사용
단위: 프로그램을 구성하는 기본 단위를 테스트, 기본 단위를 독립 실행한 결과값이 예상값과 일치하는지 확인
통합: 시스템은 여러 컴포넌트 간의 상호 작용으로 이루어짐, 같은 시스템 또는 다른 시스템과의 컴포넌트 간 상화 작용을 테스트
시스템: 완전하고 통합된 하나의 시스템에 대해 요구 스펙을 만족하는지 확인하는 테스트
6. 선형 탐색과 이진 탐색의 시간 복잡도, 어떤 상황에서 사용하는지
7. 힙의 사용 사례
8. 힙이 무엇이며 어떻게 작동하는지, 최소 힙과 최대 힙의 차이점
9. 이진 탐색 알고리즘에 대해서
10. PK와 FK의 차이점
PK: 테이블의 유일한 값을 가지는 필드, 중복, NULL, 공백 불가, NOT NULL + Unique 속성을 충족, 다른 테이블의 필드에서 참조당함
FK: 다른 테이블의 PK와 연결, 중복, null 가능, 참조하는 테이블에서 FK 선언, PK 타입과 동일하게 사용, PK 필드명과 동일하게 사용하는 것을 권장
11. 해시 테이블이 무엇이며, 어떻게 작동하는지, 충돌은 어떤 문제를 일으키고 이를 위한 해결 방법
해시 함수를 사용하여 변환한 값을 index로 key, value를 저장하는 자료구조
key값을 해시 함수로 사용한 값을 index로 하여 해당 공간에 데이터를 저장
결정론적이어야 하고 원하는 범위의 값이 고르게 리턴되도록 해야 하고 빨라야 함
키 값이 다른데 같은 해시 결과값이 나오면 데이터의 충돌이 일어남, 이전의 데이터가 사라질 수 있음
chaining: 충돌이 일어날 경우 linked list를 사용하여 이전 데이터에 새로운 데이터를 연결하도록 설계
Open Addressing: 동일한 주소에 데이터가 존재하는 경우 데이터가 없는 비어있는 주소를 사용하여 데이터를 저장
그 외에 선형 탐사, 제곱 탐사 등 방법이 있음
12. 해시 테이블을 사용하면 충돌이 발생할 수 있음에도 사용하는 이유
13. DFS, BRS의 차이, 각각의 구현 방법에 대해서
DFS(깊이 우선 탐색):스택을 사용, 그래프를 깊이 우선적으로 탐색하는 방법
BFS(너비 우선 탐색):큐를 사용, 그래프를 너비 우선적으로 탐색
14. SQL Injection이 무엇이며, 이를 방지하는 방법
15. 완전이진트리가 무엇인지 왜 사용하는지
16. 가장 좋아하는 탐색 알고리즘과 그 이유
17. 조작어에 대해서 DML
18. 제어어에 대해서 DCL
19. 정의어에 대해서 DDL
20. 사용해본 SQL 언어와 그 언어의 특징
MySQL: 오픈소스, 높은 성능과 확장성, 커뮤니티가 크다, 대부분의 웹 애플리케이션과 호환성이 좋다.
SQLite3: 오픈소스, 서버-클라이언트 구조가 아니라 파일 기반의 DB, 트랜잭션 안정성이 뛰어남, 서버가 아닌 인프라 내에 직접 빌드
21. 퀵 정렬 알고리즘의 동작 방식과 시간복잡도
22. 트랜잭션이 무엇인지
더 이상 분할이 불가능한 업무처리의 단위
-> 하나의 작업을 위해 더 이상 분할될 수 없는 명령들의 모음
-> 수행되어야 할 일련의 연산모음
ACID의 특성을 가짐
원자성(Atomicity)
트랜잭션이 DB에 모두 반영되던가 아니면 전현 반영되지 않아야 한다
일관성(Consistency)
트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다.
트랜잭션이 진행되는 동안 DB가 변경되어도 트랜잭션을 진행 하기 위해 참조한 DB로 진행
독립성(Isolation)
둘 이상의 트랜잭션이 동시에 실행되는 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연사에 끼어들 수 없다
영구성(Durability)
결과는 영구적으로 반영되어야 한다