- 얕은 복사와 깊은 복사의 차이점은 무엇인가요? 얕은 복사는 객체의 참조를 복사하는 것이다. 얕은 복사로 복사된 객체는 원본 객체와 일부 데이터(참조 형식 데이터)를 공유한다. 깊은 복사는 객체의 데이터를 새로운 메모리에 복사하는 것이다. 값 형식뿐만 아니라 참조 형식 데이터도 새로운 복사복을 만들기 때문에 원본과 복사본이 독립적인 상태가 된다.
쉬운 설명 : 우리가 데이터를 만들기 위해서는 데이터를 저장할 주소가 필요하다. 만약 A = 6 이라는 데이터가 있다고 했을 때, A는 6이라는 데이터가 들어간 주소값이 된다. 여기서 얕은 복사는 객체를 복사해서 똑같은 A라는 주소값을 사용하게 되는 것이고(같은 집 공유, 그래서 하나를 변경하면 서로 영향 주고 받음), 깊은 복사는 A-1라는 새로운 주소값을 만들어서 사용하게 되는 것(새 집 만들어서 거기 데이터 복사)이다. - 박싱과 언박싱이 일어나는 과정을 메모리 관점에서 설명해주세요. 박싱은 값 형식 데이터를 참조 형식으로 변환하는 과정이다. 값 형식 데이터가 힙 메모리에 새로운 객체로 저장되면서 이 객체의 주소(참조)가 생성된다. 그러니까 힙 메모리에 해당 값 형식 데이터의 복사본이 만들어지고, 힙에 저장된 객체의 주소는 스택에 저장된다. 언박싱은 참조 형식 데이터를 다시 값 형식으로 변환하는는 과정이다. 힙 메모리에 있던 값 형식 데이터를 스택 메모리로 복사하게 된다.
- 클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요? 클래스는 : 기호를 통해 상속을 받을 수 있다. 기본 클래스를 파생 클래스가 상속받으면, 기본 클래스의 멤버를 사용할 수 있다.
- 클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요. 다이아몬드 문제는 다중 상속에서 발생할 수 있는 충돌 문제를 말한다. 이는 한 클래스가 여러 부모 클래스를 상속받고, 이 부모들이 공통의 조상을 가질 때 발생한다.
쉬운 설명 : 기본 클래스를 A, B가 상속받고 이 A, B 클래스를 C가 상속받으면 어떤 클래스를 통해 기본 클래스에 접근해야 할지 알 수 없게 된다.
다중 상속 대신 인터페이스를 사용하여 해결이 가능하다. (기본 클래스를 인터페이스로 만들고, A와 B 중 하나의 클래스만 상속받으면 된다.) - 인터페이스란 무엇인가요? 인터페이스(Interface)는 서로 다른 객체가 공통적인 기능을 가져야 할 때, 추상화를 하기 위해 사용하는 설계 방식 중 하나이다. 인터페이스 자체에는 구현이 없고, 오직 멤버들의 선언(시그니처)만 포함됩니다.
- 인터페이스와 추상클래스의 차이는 무엇인가요? 인터페이스는 하나의 클래스에서 여러 개의 인터페이스를 상속 받을 수 있고 상속 받은 자식 클래스에게 모든 멤버의 구현을 강제한다. 반면 추상 클래스는 단일 상속만 가능하며 일반 메서드와 추상 메서드를 별도로 분리해서 만들 수 있다. 자식 클래스는 추상 메서드만의 구현이 강제된다.
- 가비지 컬렉터란 무엇인가요? 가비지 컬렉터(Garbage Collector, GC)는 .NET과 같은 관리형 언어(C#, Java 등)에서 메모리 관리를 자동으로 처리하는 시스템이다. GC는 더 이상 사용되지 않는 객체(즉, 접근할 수 없는 메모리)를 탐지하고 회수하여, 개발자가 명시적으로 메모리를 해제하지 않아도 되도록 한다.
- 가비지 컬렉터의 장점과 단점에 대해 설명해주세요.
- 가비지 컬렉터의 세대 개념에 대해 설명해주세요.
// 가비지 컬렉터 진짜 처음 듣는데 이건 유튜브 봐야 할 듯? - 박싱, 언박싱을 사용할 때 주의해야 할 점은 무엇일까요?
- 오브젝트 풀을 사용하면 메모리 관리에 도움이 되는 이유가 무엇일까요?
- 제네릭이란 무엇인가요? 메서드나 클래스를 작성할 때 데이터 형식을 지정하지 않고 실제 사용하는 시점에서 데이터 형식을 지정할 수 있도록 하는 기능으로 <T> 이렇게 생겼다. (ex. 싱글톤, GetComponent)
- 람다식(Lambda Expression)이 무엇인지 설명해주세요. 이름이 없는 익명 함수로 별도의 메서드를 정의하지 않고도 함수를 사용할 수 있게 해준다. (=>)
- LINQ란 무엇인가요? 데이터를 질의하고 조작하기 위해 일관되고, 직관된 문법
- 리플렉션(Reflection)이 뭔지, 사용을 해봤다면 어떤 이유에서 사용했는지 설명해주세요.
내일 8시에 꼭 일어나서 나머지를 채웁시다.
'[내배캠] 본 캠프 개발 학습 > 매일매일 쓰는 TIL' 카테고리의 다른 글
12월 24일 화요일 본 캠프 개발 일지 (0) | 2024.12.26 |
---|---|
12월 23일 월요일 본 캠프 개발 일지 (0) | 2024.12.24 |
12월 19일 목요일 본 캠프 개발 일지 (2) | 2024.12.20 |
12월 16일 월요일 본 캠프 개발 일지 (0) | 2024.12.16 |
12월 12일 목요일 본 캠프 개발 일지 (2) | 2024.12.12 |