기술 면접 질문
Call by reference란 무엇이고 보통 어떻게 쓰이나요?
💡call by reference는
함수가 인수를 전달할 때 사용되는 방식 중 하나로,
메모리 주소를 전달해 값이 아닌 변수의 참조를 전달하는 방식입니다.
대표적으로 사용되는 경우로
1) 함수 내부에서 여러 개의 값을 반환해야 할 때,
2) 함수 호출 시 매우 큰 데이터 구조를 전달해야 할 때,
3) 전역 변수를 변경하거나 수정해야 할 때가 있습니다.
Call by value (값에 의한 호출)는 메소드에 변수를 전달할 때, 해당 변수의 값이 복사되어 메소드 내에서 사용됩니다. 따라서 메소드 내에서 변수의 값을 변경하더라도 호출자의 변수는 변경되지 않습니다. 스프링에서는 메소드 호출 시 일반적으로 Call by value 방식을 따릅니다. Call by reference (참조에 의한 호출)은 메소드에 변수를 전달할 때 변수의 참조(메모리 주소)가 전달되며, 메소드 내에서 변수를 수정하면 호출자의 변수도 변경됩니다. 이것은 자바에서 직접 지원하지 않습니다. 스프링에서는 이러한 방식을 직접 사용하지 않고, 대신 객체를 전달하여 객체 내부의 상태를 변경할 수 있습니다.스프링(Spring)은 Java에서 메소드 호출 시 "Call by value" 방식을 따릅니다. 이는 메소드에 변수를 전달할 때 해당 변수의 값이 복사되어 전달되며, 따라서 메소드 내에서 변수의 값을 변경해도 호출자의 변수는 변경되지 않습니다. 스프링은 객체 지향 프로그래밍을 적극 활용하며, 객체를 전달하여 객체의 상태를 변경하거나 결과를 반환하는 방식을 선호합니다. 객체를 전달하면 객체의 상태 변경과 관리가 더 효율적이며 예측 가능해집니다.
Override 와 Overload 를 설명해주실 수 있을까요?
💡Override는 상위 클래스의 메소드를 하위 클래스가 재정의 하는 것을 의미합니다메소드 이름이 일치하고 매개변수 개수, 순서, 데이터 타입, return 타입이 일치합니다
메소드 이름의 절약하고 어떤 메소드일지 예상을 가능하게 하는 효과도 있습니다
Overload는 이름은 같지만 매개변수 갯수나 타입, return 타입이 다른 함수를 정의하는 것을 의미합니다 같은 이름의 메서드를 여러 개 가지며 매개변수의 유형과 개수가 달라도 되는 기술입니다
JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있을까요?
💡JPA는 JAVA ORM 기술 표준입니다
JPA가 필요할 때는
첫번째로 데이터 베이스 관계가 복잡할때 복잡한 조인 쿼리를 작성할 필요가 없어집니다
두번째로 CRUD 작업이 자주 발생하는 경우에 JPA가 객체와
데이터베이스 간의 변환을 자동으로 처리해줍니다
세번째로 유지 보수가 용이한 어플리케이션을 구축하고 싶을 때에도 JPA가 유리할 수 있습니다
JPA가 필요하지 않은 경우는
간단한거나 규모가 작은 프로젝트에서는 JDBC,SQL을 직접 다루는 것이 더 편리할 때도 있습니다
비슷한 맥락으로 쿼리가 복잡하지 않은 경우에는 직접 SQL을 작성하는 것이 더 효과적일 수 있습니다
마지막으로는 고도의 높은 성능을 요구하는 애플리케이션 같은 경우에는
JPA가 객체와 데이터베이스 간의 변환을 처리하는데 일정한 오버헤드가 발생할 수 있기 때문에 매우 높은 성능을 요구하는 애플리케이션은 직접 SQL을 작성하는 것이 더 효율적일 수 있습니다.