오늘의 코드카타
- 우박수열 정적분
- 두 원 사이의 정수 쌍
- N-Queen
오늘의 공부
모의 면접
함정 문제 (올바르게 대답하지 못함)
- Stack 메모리와 Heap 메모리의 동작구조는 어떻게 되나요?
- Stack 메모리는 LIFO(Last In, First Out) 구조로 가장 늦게 들어간 것이 가장 빨리 나오는 구조임
- Heap 메모리는 동적 메모리 해제 시에 데이터가 제거되기 때문에, 특정한 동작구조는 아님
- 배열과 벡터 중 연속적인 메모리를 가지는 것은 무엇인가요?
- 벡터도 내부적으로 배열로 구현되어 있기 때문에, 둘 다 연속적인 메모리를 가짐
잘 몰랐던 내용 (정확하게 대답하지 못함)
- Stack 메모리의 크기를 어떻게 결정하나요?
- Stack 메모리의 크기는 컴파일 시점에 결정되는데, 이를 가능하게 하는 이유는 스택 프레임의 구조가 고정적이기 때문임
- 컴파일러는 각 함수가 사용하는 모든 지역 변수, 매개 변수 등의 크기를 분석하는데, 이 정보의 크기가 함수 정의 시점에 고정되기 때문에, 컴파일 시점에 스택 메모리 크기를 결정할 수 있음
- 상속 접근 지정자 별로 멤버 접근 지정자 차이가 어떻게 되나요?
public 상속 : 부모의 원래 접근 권한을 그대로 유지함
public 멤버는 자식에게도 public
protected 멤버는 자식에게도 protected
protected 상속 : 부모의 public 멤버가 자식 클래스 내부에서만 접근 가능하도록 제한함
public, protected 멤버는 모두 자식 클래스 내에서 protected가 됨
private 상속 : 부모 클래스의 기능을 구현 내부에서만 사용하고, 외부로는 노출하지 않으려는 경우
public, protected 멤버는 모두 자식 클래스 내에서 private가 됨
- 레드-블랙 트리의 규칙에 대해 설명해주세요.
- 각 노드는 빨강 또는 검정이다.
- 루트 노드는 항상 검정이다.
- 모든 리프는 검정이다.
- 빨강 노드의 자식은 모두 검정이다. (빨강은 연속될 수 없음)
- 루프에서 리프까지의 모든 경로에 있는 검정 노드의 개수는 동일하다. (Black-height)
-> 따라서 트리 높이는 최대 2*log(n) 이내로 유지됨
- 프로세스 간의 통신 방법(IPC, Inter-Process Communication)을 설명해주세요.
- 공유 메모리 방식 : 두 프로세스가 특정 영역을 공유하여 직접 데이터를 읽고 쓸 수 있도록 함
- OS가 프로세스들의 주소 공간에 공통된 메모리 영역을 매핑해줌
- 장점 : 데이터 복사 과정 없이 접근하므로 통신 속도가 빠름
- 단점 : 동기화 문제를 개발자가 직접 해결해야 함 (뮤텍스 또는 세마포어 사용)
- 메시지 전달 방식 : 커널을 통해 데이터를 간접적으로 전달하는 방식
- 파이프 : 두 프로세스를 연결하여 단방향 또는 양방향으로 데이터를 전달함
- 메시지 큐 : 메시지를 큐 형태로 저장해두고, 프로세스가 필요할 때 메시지를 가져가는 방식
- 소켓 : 네트워크를 통해 통신하는데 사용되는 방식이지만, 같은 시스템 내의 프로세스 간 통신에도 사용 가능