기술면접을 준비하고 경험하면서 받았던 질문들과 주요 개념 리스트를 작성했습니다.
취업 준비나 학습에 도움이 될까하여 공유하고자 했습니다.
C++
- 절차적 프로그래밍과 객체지향의 차이
- struct와 class 차이
- 클래스와 객체, 인스턴스
- STL Container
각 컨테이너들의 특징과 구조, 동작 방식, 차이점
1. vector
2. list
3. map
4. unordered map(hash map)
- Overloading과 Override의 차이
- 동적 바인딩과 정적 바인딩
- Call-by-Value와 Call-by-Ref
- 얕은 복사와 깊은 복사
- 가상 함수의 동작 원리
- 가상 소멸자를 사용해야 하는 이유
- malloc과 new의 차이점
- 캐스트 연산자
- 스마트 포인터
각 스마트 포인터의 등장 이유와 특징, 구조
1. unique_ptr
2. shared_ptr
3. weak_ptr
- C++와 C#의 차이
- char*, char[]와 string의 차이
운영체제
- 운영체제의 개념
- 프로세스와 스레드의 개념과 차이
- 프로세스의 메모리 구성
- PCB(Process Control Block, 제어 블록)
- 컨텍스트 스위칭(Context Switching)
- 프로세스 스케줄링 알고리즘
- 기아 상태(Starvation)와 Aging 기법
- 교착 상태(Deadlock)
단순한 의미보다는 교착 상태가 일어날 법한 논리적인 상황 설명
- 뮤텍스(Mutex)
- 세마포어(Semaphore)
- Starvation과 Deadlock의 차이
- 캐시 메모리(Cache Memory)
- 가상 메모리
- 메모리 관리 전략
- 메모리 단편화
네트워크/소켓 프로그래밍
- TCP와 UDP의 개념 및 차이
- 주소 체계
Mac 주소
IP 주소
- DNS
- HTTP와 HTTPS의 개념과 차이
- TCP 통신 중 입력 버퍼가 가득 찼을 때의 전송 상황
- Listen 함수의 동작
- Accept 함수의 동작
- Nagle 알고리즘
- IOCP 서버
데이터베이스
- 관계형 데이터베이스와 비관계형 데이터베이스
- 정규화
- 인덱스
인덱스에 대한 설명과 아래 두 종류 인덱스에 대한 설명
검색 형태에 따라 어떤 인덱스가 유리한지
1. 클러스터링 인덱스
2. 논-클러스터링 인덱스
- 트랜잭션