그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Java
Java

Call By Value와 Call By Reference의 차이가 뭔가요?

실무4/5
설계2/5
인간3/5
기초4/5

면접관의 질문 의도

참조 타입을 넘기면 Call By Reference처럼 보이는 자바의 동작을 표면만 외운 사람과, 참조값 복사로 메모리 모델 수준에서 해석할 수 있는 사람을 가르는 질문이다.

큐레이션 답변

학습 자료

Call By Value는 인자를 복사해 전달하므로 호출자 변수와 피호출자 파라미터가 별개로 동작한다. Call By Reference는 동일 참조를 공유해 피호출자에서의 변경이 호출자에 그대로 반영된다. 자바는 원시값뿐 아니라 참조값까지도 복사해서 전달하므로 Call By Value만 존재한다. 메서드 안에서 객체 내부가 바뀌는 게 보이는 이유는 복사된 참조가 같은 객체를 가리키기 때문이지, 참조 자체가 공유돼서가 아니다.

좋은 답변 구조

  1. 01Call By Value와 Call By Reference를 각각 정의하고 핵심 차이를 짚는다
  2. 02자바가 참조값까지 복사해 전달한다는 점을 설명한다
  3. 03참조 타입 전달 시 객체 내부 변경이 보이는 이유를 메모리 관점에서 해석한다
  4. 04변수 재할당과 객체 필드 변경을 나눠 자주 헷갈리는 지점을 정리한다

자주 실수하는 포인트

참조 타입 인자를 넘기면 자바도 Call By Reference라고 단정한다
메서드 안에서 파라미터를 재할당하면 호출자 변수도 바뀐다고 본다
C++ 참조 변수와 자바의 참조값을 같은 개념으로 묶어 설명한다

실무 맥락

  • 도메인 객체를 여러 메서드로 넘기며 상태를 갱신하는 서비스 레이어
  • 객체 필드가 의도치 않게 바뀌어 사이드이펙트 원인을 추적하는 테스트 상황
  • DTO와 엔티티 사이에서 변경 가능성을 어디서 끊을지 정해야 하는 API 계층 설계

본인 경험에 녹이는 힌트

서비스 코드에서 객체 필드가 의도치 않게 바뀌어 디버깅했던 경험을 참조값 복사 동작과 연결할 수 있다

불변 객체나 record를 도입해 부작용을 줄였던 결정과 자바의 값 전달 동작을 엮어 설명할 수 있다

메서드 시그니처나 컬렉션 반환 타입에 변경 의도를 드러내도록 바꿨던 경험을 말할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1자바에서 참조값을 복사한다는 게 메모리 관점에서 어떤 의미인가요
Q2메서드 안에서 파라미터 재할당과 객체 필드 수정은 어떻게 다르게 동작하나요
Q3불변 객체를 쓰면 어떤 사이드이펙트가 줄어드나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문