1. 스프링) 기술면접 질문
1)Call by reference란 무엇이고 보통 어떻게 쓰이나요?
Call by reference는 프로그래밍에서 변수를 함수에 인자로 전달할 때 사용되는 방식 중 하나입니다. 이 방식은 변수의 메모리 주소를 함수에 전달하여 함수 내에서 해당 변수를 직접 조작할 수 있게 합니다.
일반적으로 함수에 인자를 전달할 때는 "값에 의한 호출"이라는 방식이 사용됩니다. 이 방식은 변수의 값을 복사하여 함수에 전달하므로, 함수 내에서 변수를 변경하더라도 원본 변수에는 영향을 주지 않습니다. 하지만 때로는 함수 내에서 변수를 직접 수정하고 그 결과를 원본 변수에 반영해야 할 때가 있습니다. 이때 Call by reference를 사용하면 됩니다.
Call by reference를 사용하는 언어에는 C++과 C# 등이 있습니다. 이러한 언어에서는 변수를 함수에 전달할 때 변수 앞에 특별한 기호(주로 & 기호)를 사용하여 표시합니다. 이렇게 전달된 변수는 함수 내에서 해당 변수의 주소를 이용하여 값을 변경할 수 있습니다. 이는 변수에 대한 포인터를 전달하는 것과 유사한 동작을 합니다.
Call by reference를 사용하면 함수 호출 시 메모리 사용량이 증가하고, 함수 내에서 변수를 수정할 수 있으므로 주의가 필요합니다. 변수의 값이 변경되는 부작용이 발생할 수 있으므로, 적절한 상황에서 사용해야 합니다.
2)Override 와 Overload 를 설명해주실 수 있을까요?
Override와 Overload는 객체 지향 프로그래밍에서 메서드의 다형성을 구현하기 위해 사용되는 두 가지 개념입니다.
Override(재정의)는 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 동일한 이름과 시그니처로 다시 정의하는 것을 말합니다. 자식 클래스에서 부모 클래스의 메서드를 재정의 함으로써, 자식 클래스는 부모 클래스의 동작을 수정하거나 확장할 수 있습니다. 이때 자식 클래스의 메서드는 부모 클래스의 메서드와 동일한 이름, 매개변수 타입 및 반환 타입을 가져야 합니다. 메서드 호출 시, 객체의 실제 타입에 따라 재정의된 메서드가 호출됩니다. 이는 상속 관계에서 다형성을 구현하는 중요한 개념입니다.
Overload(중복 정의)는 같은 클래스 내에서 메서드의 이름은 동일하지만 매개변수의 개수, 타입, 순서가 다른 메서드를 정의하는 것을 말합니다. 즉, 동일한 이름의 메서드를 다양한 매개변수 조합으로 정의하여 사용할 수 있습니다. 메서드 오버로딩을 사용하면 같은 기능을 수행하지만 다양한 매개변수를 처리할 수 있는 유연한 코드를 작성할 수 있습니다. 메서드 호출 시, 전달된 인자에 맞는 오버로딩된 메서드가 선택되어 실행됩니다.
요약하자면, Override는 상속 관계에서 자식 클래스가 부모 클래스의 메서드를 재정의하는 것이고, Overload는 같은 클래스에서 메서드의 이름은 같지만 매개변수가 다른 다양한 버전의 메서드를 정의하는 것입니다. 두 개념은 다형성을 구현하는 데 중요한 역할을 합니다.
'개발일지' 카테고리의 다른 글
| 2024.03.22 TIL (0) | 2024.03.22 |
|---|---|
| 2024.03.21TIL (0) | 2024.03.21 |
| 2024.03.19 TIL (0) | 2024.03.19 |
| 2024.03.18 TIL (1) | 2024.03.18 |
| 2024.03.15TIL (0) | 2024.03.15 |