개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. Call By Value와 Call By Reference의 차이에 대해 설명해주세요.
  • Q. 그럼 Java에서 어느 부분이 call by value이고 어느 부분이 call by reference에 해당하나요?
  1. 01 Java

Call By Value와 Call By Reference

Q. Call By Value와 Call By Reference의 차이에 대해 설명해주세요.

Call By Value는 인자로 받은 값을 복사하여 처리하는 방식을 말합니다. 값을 복사하여 처리하기 때문에 원래의 값이 보존된다는 장점이 있고, 복사하기 때문에 메모리 사용량이 증가한다는 단점이 있습니다. Call By Feference는 인자로 받은 값의 주소를 참조하여 직접 저장해 값에 영향을 주는 방식을 말합니다. 복사하지 않고 직접 참조하기 때문에 빠르다는 장점이 있고, 직접 참조를 하기에 원래의 값이 영향을 받는다는 단점이 있습니다.

Q. 그럼 Java에서 어느 부분이 call by value이고 어느 부분이 call by reference에 해당하나요?

Java는 기본적으로 모든 전달 방식이 Call by Value입니다. 이는 즉, 값을 복사해서 전달한다는 의미입니다. 참조형의 경우 객체의 주소값을 전달하니까 Call by Reference가 아니냐고 생각할 수 있지만, 이것도 정확히 말씀드리면 Call by Value입니다. 그 이유는 다음과 같습니다. 첫째, 우리가 흔히 말하는 '주소값'이라는 것이 실제로는 '주소를 가리키는 참조값'이기 때문입니다. 둘째, 이 참조값을 전달할 때도 복사해서 전달합니다. 즉, 직접 주소를 전달하는 것이 아니라 그 주소를 가리키는 값을 복사해서 전달하는 것입니다. 결과적으로, Java에서는 기본형 변수든 참조형 변수든 모두 자신이 가지고 있는 값을 복사해서 전달합니다. 이것이 바로 Java가 Call by Value라고 불리는 이유입니다. 즉, 기본형은 '값 자체'를 복사하고, 참조형은 '참조값'을 복사한다고 볼 수 있습니다.

Previous예외(Throwable)NextString, equals, StringBuffer

Last updated 6 months ago