-
기술 면접 예상 질문 - Struct - Class 차이에 대해서 설명해주세요.
-
기술 면접 예상 질문 - 값 - 참조 형식의 차이에 대해서 설명해주세요.
-
기술 면접 예상 질문 - 스택 - 힙 영역에 차이에 대해서 설명해주세요.
-
기술 면접 예상 질문 - 깊은 복사 - 얕은 복사에 대해서 설명해주세요.
기술 면접 예상 질문 - Struct - Class 차이에 대해서 설명해주세요.
Struct는 값 형식의 데이터 입니다. Class는 참조 형식의 데이터 입니다.
Struct는 값 형식이기 떄문에 스택 영역에서 관리되어 접근이 빠릅니다. Struct는 값 복사가 발생하기 때문에 작은 규모의 데이터거나 데이터를 하나의 지역에서만 사용한다면 Struct가 유리하다고 생각합니다 만약 큰 규모의 데이터를 계속해서 값 복사한다면 성능이 저하될수 있습니다.
Class는 참조 형식이기 떄문에 힙 영역에서 관리되어 큰 데이터를 관리할 때 유리하고 데이터를 여러 객체에서 참조해야 한다면 얕은 복사로 새로운 데이터의 생성 없이 참조할 수 있기 때문에 Class가 더 유리하다고 생각합니다.
기술 면접 예상 질문 - 값 - 참조 형식의 차이에 대해서 설명해주세요.
값 형식은 데이터를 스택 영역에 저장하고 값 복사 방식으로 복사됩니다. 참조 형식은 데이터를 힙 영역에 저장하고 얕은 복사, 깊은 복사 두가지의 복사 방식이 있습니다.
기술 면접 예상 질문 - 스택 - 힙 영역의 차이에 대해서 설명해주세요.
스택 영역은 컴파일 시점에서 미리 크기를 정해놓는 메모리 영역으로 함수의 호출과 지역변수 같은 코드가 동작하면서 필요한 데이터들이 스택영역에 연속적으로 저장됩니다. 메모리가 연속적으로 저장되기 때문에 메모리의 접근이 빠르다는 장점이 있습니다. 컴파일 시점에서 스택영역이 일정크기를 초과하게 되면 스택 오버플로우가 발생해 컴파일 에러가 발생합니다.
힙 영역은 런타임에 동적할당으로 사용되는 메모리 영역입니다. 참조형식의 데이터는 new 키워드로 힙 영역에 저장되고 스택에서 참조형식의 데이터를 참조하여 사용합니다. 힙 영역의 데이터는 가비지 컬렉션으로 관리되며 스택영역에서 더 이상 힙 영역의 데이터를 참조하고 있지 않다면 가비지 컬렉터가 해당 메모리를 해제합니다. 스택에 비해 훨신 큰 메모리 공간을 사용할 수 있습니다.
기술 면접 예상 질문 - 깊은 복사 - 얕은 복사 에 대해서 설명해주세요.
값 형식을 다른 값 형식에 할당하게 되면 값 복사가 발생합니다. 값 복사는 원본과 새로 만든 값이 독립적으로 저장됩니다.
참조 형식은 다른 참조 형식에 할당하게 되면 얕은 복사가 발생합니다. 참조 형식은 애초에 힙 영역에 있는 데이터를 참조하고 있기 때문에 원본과 새로만든 참조형식 모두 힙 영역에 있는 같은 데이터를 가리키게 됩니다.
참조 형식의 복사를 값 복사와 같이 독립적인 데이터로 복사하고 싶다면 깊은 복사 방식을 사용해야 합니다. 깊은 복사 방식은 힙 영역에 독립적인 객체를 새로 생성해서 원본의 데이터를 모두 복사합니다. 그 결과 힙 영역에 독립적인 두 데이터가 생기게 되고 원본과 새로운 참조 형식이 독립적으로 다른 객체를 가르키게 됩니다.