8. Windows 시스템 프로그래밍 질문
- 프로세스와 스레드의 차이는 무엇인가요?
- 한 프로세스의 스레드들은 무엇을 공유하나요?
- 스레드마다 독립적으로 가지는 것은 무엇인가요?
- 컨텍스트 스위칭이란 무엇인가요?
- 컨텍스트 스위칭 비용은 왜 발생하나요?
- 커널 모드와 사용자 모드의 차이는 무엇인가요?
- 시스템 콜이란 무엇인가요?
- WinMain과 main의 차이는 무엇인가요?
- Windows 메시지 루프를 설명해주세요.
GetMessage와 PeekMessage의 차이는 무엇인가요?
- 게임 루프에서는 주로 어떤 방식을 사용하나요?
- 윈도우 프로시저는 무엇인가요?
- HWND, HINSTANCE, HDC는 각각 무엇인가요?
- Handle이란 무엇인가요?
- 커널 오브젝트란 무엇인가요?
- Event, Mutex, Semaphore의 차이는 무엇인가요?
- Critical Section과 Mutex의 차이는 무엇인가요?
- SRWLock은 무엇인가요?
- 스핀락은 무엇인가요?
- 원자적 연산이란 무엇인가요?
- Interlocked 함수는 어떤 역할을 하나요?
- DLL의 로드 방식에는 무엇이 있나요?
- 정적 로딩과 동적 로딩의 차이는 무엇인가요?
LoadLibrary, GetProcAddress는 무엇인가요?
- UTF-8, UTF-16, ANSI의 차이는 무엇인가요?
char, wchar_t, TCHAR의 차이는 무엇인가요?
- Windows가 UTF-16 기반 API를 사용하는 이유는 무엇인가요?
- 파일 입출력에서 동기 I/O와 비동기 I/O 차이는 무엇인가요?
- Overlapped I/O란 무엇인가요?
- IOCP란 무엇인가요?
- 가상 메모리란 무엇인가요?
- 페이지와 페이지 폴트란 무엇인가요?
VirtualAlloc과 일반적인 new의 차이는 무엇인가요?
- 메모리 맵 파일이란 무엇인가요?
- DLL 경계에서 메모리 할당과 해제를 주의해야 하는 이유는 무엇인가요?
- Debug 빌드와 Release 빌드의 차이는 무엇인가요?
- PDB 파일은 무엇인가요?
- 크래시 덤프를 통해 무엇을 분석할 수 있나요?
- 콜스택은 무엇인가요?
- 데드락 상태의 덤프에서는 무엇을 확인해야 하나요?
9. 운영체제·멀티스레드 질문
- 동시성과 병렬성의 차이는 무엇인가요?
- 경쟁 상태란 무엇인가요?
- 임계 구역이란 무엇인가요?
- 데드락이란 무엇인가요?
- 데드락 발생 조건 네 가지를 설명해주세요.
- 데드락을 방지하는 방법은 무엇인가요?
- 라이브락과 기아 상태는 무엇인가요?
- Mutex와 Semaphore의 차이는 무엇인가요?
- 조건 변수는 무엇인가요?
- Producer-Consumer 문제를 설명해주세요.
- Thread Pool을 사용하는 이유는 무엇인가요?
- 작업 큐는 어떻게 구현할 수 있나요?
- 메인 스레드와 워커 스레드의 역할을 어떻게 나누나요?
- 게임 객체를 워커 스레드에서 직접 수정하면 왜 위험한가요?
- 워커 스레드 결과를 메인 스레드에 반영하려면 어떻게 하나요?
- Lock-Free 자료구조란 무엇인가요?
- CAS란 무엇인가요?
- ABA 문제란 무엇인가요?
- 메모리 배리어란 무엇인가요?
- memory ordering이란 무엇인가요?
volatile은 스레드 동기화를 보장하나요?
std::atomic과 mutex는 언제 각각 사용하나요?
- False Sharing이란 무엇인가요?
- False Sharing을 완화하는 방법은 무엇인가요?
- 스레드를 많이 만들수록 성능이 좋아지지 않는 이유는 무엇인가요?
- 프레임 동기화는 어떻게 구현하나요?
- 렌더 스레드와 게임 스레드 사이의 동기화는 어떻게 하나요?
- 더블 버퍼링된 명령 큐는 어떤 장점이 있나요?