티끌모아 태산

기술 면접 준비 본문

백엔드/기술 면접

기술 면접 준비

goldpig 2024. 3. 3. 21:02
728x90

 

Q1. 객체 지향에 대해 설명해 보세요.

더보기

객체지향은 현재 가장 널리 사용되고 있는 프로그래밍 방법론으로 추상화 다형성이 핵심입니다. 그리고 추상화와 다형성은 인터페이스로 연결되는데, 인터페이스 없이 애플리케이션을 개발하면 클라이언트 코드가 구체적인 클래스에 의존하게 됩니다. 그렇게 되면, 하나의 클래스가 변경되면 다른 클래스도 계속해서 변경해 줘야 하는 문제가 생깁니다. 이런 문제를 해결하기 위해 클라이언트 코드가 구체적인 클래스가 아니라 인터페이스에 의존해야 합니다. 결국 객체지향은 클라이언트 코드와 구체적인 클래스 모두 인터페이스에 의존하게 되는 것입니다. 

 

이렇게 할 경우 생기는 몇가지 이점이 있습니다. 첫째, 클라언트 코드는 해당 인터페이스를 구현하고 있는 구체적인 클래스의 세부 구현을 몰라도 됩니다. 즉, 인터페이스에 의존하고 있기 때문에 구체적인 클래스가 바뀌더라도 인터페이스가 바뀌지 않는 한 클라이언트 코드로 변경 내용이 전파되지 않습니다. 둘째, 클라이언트 코드는 해당 인터페이스를 구현하고 있는 구체적인 클래스가 구현되지 않았더라고 자신의 코드를 개발할 수 있습니다. 테스트 코드를 만들어 해당 인터페이스가 해야 하는 역할에 대해 정의해 주기만 하면 됩니다.  

Q2. 오버라이딩과 오버로딩의 차이점을 말해보세요.

더보기

오버라이딩은 부모 클래스에 정의된 메서드를 자식 클래스에서 새롭게 정의하는 것을 의미합니다. 반면 오버로딩은 동일한 메서드의 이름으로 서로 다른 파라미터와 리턴 타입의 메서드를 여러개 정의 하는 것을 의미합니다. 

 

즉, 오버라이딩은 상속받은 메서드의 내용을 변경하는 것(change)이고 오버로딩은 기존에 없는 새로운 메서드를 정의하는 것(new)이다.

Q2-1. 오버라이딩과 오버로딩의 조건을 각각 설명해 보세요.

더보기

오버라이딩의 조건

자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와

1. 이름이 같아야한다.

2. 매개변수가 같아야한다.

3. 반환 타입이 같아야한다. 

 

오버로딩의 조건

1. 메서드 이름이 같아야한다.

2. 매개변수의 개수 또는 타입이 달라야한다. 

Q3. 참조형 타입과 기본형 타입의 차이점을 말해주세요.

더보기

데이터의 종류와 형태를 나타내는 데이터 타입은 크게 기본형과 참조형으로 나눌 수 있습니다. 이에 대해 변수 대입과 메서드 호출을 기준으로 나눠 말씀드리겠습니다. 먼저, 변수 대입을 기준으로 기본형은 실제 사용하는 값을 복사해서 전달하는 반면, 참조형은 객체의 위치를 나타내는 참조(주소)값을 복사해서 전달합니다. 이때, 객체의 주소값이 전달되는 것이지 객체 자체가 전달되는 것이 아닙니다. 그리고 메서드 호출시 기본형은 메서드 내부에서 매개변수의 값을 변경해도 호출자의 변수 값에는 영향을 미치지 않습니다. 반면에, 참조형은 메서드 내부에서 매개변수로 전달된 객체의 멤버 변수를 변경하면 호출자의 객체도 변경된다. 

Q4. 객체 지향 프로그래밍과 절차 지향 프로그래밍의 차이점을 설명해 주세요.

더보기

객체 지향은 객체의 설계와 관계를 중시하는 반면 절차 지향은 데이터와 기능이 분리되어 있고, 프로그램이 어떻게 작동하는지 그 순서에 초점을 맞춘다. 즉, 절차 지향은 데이터와 해당 데이터에 대한 처리 기능이 분리되어 있는 반면에 객체 지향은 데이터와 그 데이터를 처리하는 기능이 하나의 객체 안에 포함되어 있다. 

Q5. 생성자가 무엇인지 설명하고 조건을 말세주세요

더보기

생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 로 인스턴스 변수의 초기화 작업에 주로 사용됩니다. 또한 생성자를 사용할 경우 중복 호출을 제거할 수 있고 필수값 입력을 보장할 수 있습니다. 

 

생성자 조건

1. 생성자의 이름은 클래스 이름과 같아야 한다.

2. 생성자는 리턴값이 없다

Q5-1. 기본 생성자에 대해 설명해 주세요.

더보기

우선, 모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있어야 합니다. 만약에 클래스에 생성자가 하나도 없는 경우 자바에서는 컴파일러가 자동적으로 매개변수도 없고 아무런 내용도 없는 기본생성자를 만들어 줍니다. 하지만 클래스에 생성자가 하나라도 존재한다면  기본생성자는 자동으로 생성되지 않습니다. 

Q5-2. this()와 this의 차이점을 말해주세요.

더보기

괄호가 없는 this는 참조변수를 의미하고 괄호가 있는this()는 생성자를 의미합니다.

생성자 간에도 서로 호출이 가능한데요, 단 다음의 두 조건을 만족해야합니다.

1. 생성자의 이름으로 클래스 이름 대신 this를 사용한다. 

2. 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

728x90