민수님의 면접 결과

40

총점

3

질문 수

0

좋아요

5

조회수

종합 평가

얕은 복사와 깊은 복사의 핵심 차이(메모리 주소 참조 vs. 독립적 값 복사)를 명확하게 이해하고 있으며, 얕은 복사로 인한 사이드 이펙트 문제와 깊은 복사의 재귀적 구현 원리까지 개념적으로 일관되게 설명하셨습니다. 개념 설명은 정확하지만, 실제 코드나 구체적인 언어 예시로 뒷받침하는 능력이 아직 부족하게 드러났습니다. 또한 순환 참조, 배열·Map·Set 같은 특수 참조 타입 처리 등 엣지 케이스에 대한 언급이 전반적으로 없었습니다. JavaScript 기준으로 직접 재귀 deepCopy 함수를 구현해보고, `structuredClone`과 `JSON.parse(JSON.stringify())`의 동작 원리 및 한계(순환 참조, undefined, 함수 처리 여부)를 비교 정리한 뒤, 순환 참조를 WeakMap으로 처리하는 패턴까지 확장해 보시길 권장합니다.

질문별 상세 분석

커뮤니티 공개
Q1B

깊은 복사와 얕은 복사의 차이점을 설명해 주세요.

응답 내용

깊은 복사는 값을 그대로 복사하는 것이고 얕은 복사는 메모리의 주소를 참조하는 복사입니다

AI 피드백

핵심 개념을 정확하게 짚어주셨습니다. 깊은 복사는 실제 값을 독립적으로 복제하고, 얕은 복사는 참조(주소)를 복사한다는 구분을 명확히 표현하셨습니다. 한 단계 더 나아가자면, 중첩된 객체(nested object)가 있는 경우 얕은 복사는 내부 객체의 참조만 복사되므로 원본과 복사본이 같은 내부 객체를 공유하게 되어 한쪽 수정이 다른 쪽에 영향을 미친다는 트레이드오프를 함께 언급하면 더욱 완성도 있는 답변이 됩니다. 예를 들어 "얕은 복사는 1단계 값만 복제되므로, 중첩 객체를 수정하면 원본에도 영향을 미친다"처럼 구체적인 시나리오로 설명하면 실무 이해도를 잘 보여줄 수 있습니다. 심화 학습 방향으로는 Python의 copy.copy()와 copy.deepcopy(), 혹은 JavaScript의 Object.assign()과 JSON.parse(JSON.stringify()) 등 언어별 구현 방식의 차이와 성능 트레이드오프를 살펴보시면 좋겠습니다.

Q2A

얕은 복사를 사용했을 때 어떤 문제가 발생할 수 있나요?

응답 내용

얕은 복사를 사용했을 때는 객체의 메모리 주소를 참조하므로 다른 곳에서 해당 객체 내부의 값을 변경하면 사이드 이펙트를 받을 수 있습니다

AI 피드백

얕은 복사의 핵심 문제인 "참조 공유로 인한 의도치 않은 상태 변경"을 정확하게 짚어주셨습니다. 여기서 한 단계 더 나아가, 이 문제가 특히 중첩 객체(nested object)나 배열처럼 참조 타입이 중첩된 구조에서 어떻게 구체적으로 드러나는지 설명할 수 있다면 더욱 인상적인 답변이 될 것입니다. 예를 들어 "Python에서 copy.copy()로 2D 리스트를 복사하면 내부 리스트는 여전히 같은 객체를 가리키므로, 내부 요소를 수정하면 원본도 변경된다"처럼 구체적인 언어나 자료구조 예시를 들면 실무 감각까지 보여줄 수 있습니다. 심화 학습 방향으로는 언어별 얕은 복사 구현 방식(Java의 clone(), JavaScript의 Object.assign() 등)과 그 한계를 비교해 보시면 좋겠습니다.

Q3B

깊은 복사를 실제로 구현하는 방법을 한 가지 예를 들어 설명해 주실 수 있나요?

응답 내용

깊은 복사를 실제로 구현하는 방법은 원시값의 경우 그대로 복사하면 되고, 참조값의 경우에는 해당 값들을 하나씩 훑어 새로운 객체로 재구성한 뒤 이를 재귀적으로 호출하면서 만들면 됩니다

AI 피드백

원시값과 참조값을 구분하고, 참조값에 대해 재귀적으로 새 객체를 재구성한다는 핵심 알고리즘을 정확히 짚으셨습니다. 다만 질문에서 "한 가지 예를 들어 설명해 주세요"라고 명시했는데, 실제 코드나 구체적인 언어 예시 없이 알고리즘 설명에 그친 점이 아쉽습니다. 예를 들어 JavaScript에서 `function deepCopy(obj) { if (typeof obj !== 'object') return obj; const copy = {}; for (const key in obj) copy[key] = deepCopy(obj[key]); return copy; }` 형태로 보여주셨다면 훨씬 완성도 있는 답변이 됐을 것입니다. 추가로 순환 참조(circular reference)나 배열 처리 같은 엣지 케이스도 함께 언급하면 실무 감각을 더 잘 드러낼 수 있습니다.

커뮤니티 공유 안내

• 이 결과는 AI가 분석한 내용이며, 학습 목적으로 커뮤니티에 공유됩니다.

• 좋아요를 눌러 유용한 답변에 반응을 남겨보세요.

• 개인정보는 포함되지 않으며, 면접 연습 개선을 위한 참고 자료로 활용됩니다.