기술면접 준비하기[Java]

가온·2022년 10월 21일
0

1. 오버로딩 vs 오버라이딩

오버로딩 (Overloading)

  • 같은 이름의 메소드를 여러 개 정의하는 것
  • 매개변수의 타입이 다르거나 개수가 달라야 함
  • reuturn type, 접근 제어자는 영향을 주지 않음

오버라이딩 (Overriding)

  • 상속에서 나온 개념
  • 상위 클래스의 메소드를 하위 클래스에서 재정의
  • 메서드 위에 @Override를 관례적으로 적는다

2. Interface(인터페이스) vs Abstract Class(추상 클래스)

Interface

  • 쉽게 말하면 껍데기 혹은 설계도라고 표현 가능
  • 모든 메소드가 추상 메소드이고, 일반 변수를 가질 수 없음
  • 다중 상속이 가능 (2개 이상의 Interface를 implement 할 수 있음)

Abstract Class

  • 0개 이상의 추상 메소드(아직 구현되지 않은 메소드)를 가지고, 일반 메소드, 일반 변수 또한 가질 수 있음

의미가 비슷한데 왜 따로 사용하나?
목적이 다름!!
Interface : 함수 구현을 강제
Abstract Class : 추상 클래스를 상속받아 가능 이용 및 확장

BUT Java8 이후 버전의 default Method 사용여부 >> Interface에 메소드 구현 가능 >> 다중 상속시 오류 해결 방법??

3. Mutable, Immutable 변수

Mutable

  • 프로그램이 실행됨녀서 값이나 상태가 변경

Immutable

  • 생성시점부터 내부 상태가 일정하게 유지 -> 변경되지 않음
  • 대표적으로 String이 있음, final 변수도 이에 해당
final String str = "hi";
str = "hello";	//error!

🤷‍♀️ 면접질문 예시!
Q1. Java의 대표적 Immutable 변수 예시 / 답변 : String
Q2. String값을 변경도 하고 연산도 하는데요?🤔
예시 :
String str1 = "Hello";
String str2 = "world!";
String str1 = str1 + str2;
Q3. Final ArrayList < String > list = new ArrayList< String > () 이 list에 데이터가 추가가 가능할까요?🤔
답변 : 가능

🤔String은 왜 Immutable인가

문자열 연산이 있을 때는 새로운 메모리에 데이터가 생성됨
concat, substr 등의 연산도 같은 동작원리

String Builder & String Buffer

  • String 수정을 mutable하게 할 때 사용
  • String Buffer는 멀티스레드 환경에서 synchronized 키워드가 가능하므로 동기화가 가능(thread-safe)
    - synchronized : 하나의 자원(데이터)에 대해서 여러 스레드가 사용하려고 할 때 한 시점에서 하나의 스레드만 사용할 수 있도록 하는 것
  • 문자열 연산이 많을 때 멀티스레드 환경에서는 StringBuffer 사용
  • 싱글 스레드 또는 스레드를 신경쓰지 않아도 되는 환경에서는 StringBuilder 사용

4. 기본자료형, 참조자료형

기본자료형 (Primitive type)

int, chat, long, double

참조자료형 (Reference type)

Class, Interface, Array

🤷‍♀️ 면접질문 예시!

  • Primitive type을 Reference type으로 사용하는 방법
  • Integer, Long, Double 등 java library에 선언된 데이터 타입 사용
  • 동등 비교를 하기 위한 equals, hashCode함수 재정의

5. 에러 (Error) vs 예외 (Exception)

에러 (Error)

OOM, Stack Overflow 등 개발자가 미리 예측해서 방지 할 수 없음

예외 (Exception)

NullPointerException, IOException 등 개발자가 구현한 로직에서 발생

Checked Exception

반드시 에러 처리를 해야함 (try / catch or throw)

Unchecked Exception

에러 처리를 강제하지 않음

예외처리

try / catch or throw

🤷‍♀️ 면접질문 예시!
finally를 사용하는 이유?
그냥 try / catch 다음 line에 코딩하면 되는거 아닐까요?
답변 : 필수적으로 실행해야하는 부분을 적어준다.

profile
코딩기딩기딩기딩

0개의 댓글