반응형

 

 

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


: 캡상추다(캡슐화 / 상속 / 추상화 / 다형성)으로 코드의 재사용성을 높이고 코드의 관리가 용이하고 제어자와 메서드를 이용하여 데이터를 보호하는데 좋으며 코드의 중복을 제거하여 코드의 불일치로 인한 오류를 방지할 수 있다. (클래스 = 설계도 / 객체 = 제품) ex_ TV설계도&TV, 붕어빵 기계 & 붕어빵

* 캡슐화 : 데이터 보호 / 불필요한 부분을 감출 수 있다. (접근 제어자 / 인터페이스 등)

* 상속 : 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것 (class 자손클래스 extends 조상클래스 {...})

* 추상화 : 추상클래스 / 추상메서드 / 인터페이스를 예로 설명

* 다형성 : 하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것 ( 조상타입의 참조변수로 자손타입의 개체를 다룰 수 있는 것 )

 

# 오버로딩 & 오버라이딩 차이는?


: 오버로딩은 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 말하며

: 오버라이딩은 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것을 말한다.

 

* 오버로딩 조건

ⓐ 메서드의 이름이 같아야 한다.

ⓑ 매개변수의 개수 or 타입이 달라야 한다. (리턴타입은 오버로딩 구현과 관계 없다)

* 오버라이딩(조상에게 받은 메서드의 구현부를 바꿈) 조건

ⓐ 선언부가 같아야 한다(이름 / 매개변수 / 리턴타입)

ⓑ 접근제어자를 좁은 범위로 변경할 수 없다.

ⓒ 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

# 접근 제어자 : 멤버 or 클래스에 사용되어, 외부로부터의 접근을 제한

(클래스 / 멤버변수 / 메서드 / 생성자)


private : 같은 클래스 내에서만 접근 가능

default : 같은 패키지 내에서만

protected : 같은 패키지 & 다른 패키지의 자손클래스에서 접근 가능

public : 접근 제한이 전혀 없음

# 클래스 / 추상클래스 / 인터페이스 차이


: 클래스가 설계도라면 추상클래스는 미완성 설계도이며 인터페이스는 밑그림 정도로 생각하면 된다.

클래스의 경우 속성과 기능들로 완성된 설계도이기 때문에 인스턴스를 만들 수 있지만 추상클래스와 인터페이스의 경우 미완성이기 때문에 인스턴스를 생성할 수 없다.

추상클래스는 미완성 메서드를 포함하지만 인터페이스는 선언부만 있는 메서드와 상수만을 가질 수 있으며 클래스를 작성하는데 도움을 줄 목적으로 사용된다.

인터페이스 추가 설명으로는 관계없는 클래스 간 관계를 맺어주고 표준화를 시키며 개인작업이 가능하게 해줘 프로그래밍의 시간을 단축시킬 수 있다.

( class 클래스명 / abstract class 클래스명 / interface 인터페이스명 )

* 인터페이스의 경우 상속이 가능하며 다중상속까지 가능하다.

# 컬렉션(데이터 그룹을 의미) 프레임워크 핵심 인터페이스


List : 순서 O / 중복 O (ArrayList / LinkedList / Stack / Vector 등)

Set : 순서 X / 중복 X (HashSet / TreeSet 등)

Map : (key, value)로 이루어짐. key 중복 X / value 중복 O (HashMap / TreeMap 등)

* 컬렉션과 배열의 차이 : 배열은 하나의 타입만 저장이 가능하고, 컬렉션은 다양한 타입의 저장이 가능하다. 또한 배열은 고정된 크기이며, 컬렉션은 가변적 크기이다.

# 프로세스 / 쓰레드 (프로세스 : 쓰레드 = 공장 : 일꾼)


프로세스 : 실행 중인 프로그램. 자원(resources)과 쓰레드로 구성

쓰레드 : 프로세스 내에서 실제 작업을 수행하는 단위. 모든 프로세스는 하나의 쓰레드를 가지고 있다.

멀티쓰레드 : 하나의 프로세스에 하나 이상의 쓰레드를 생성하여 실행

# 싱글톤 패턴이란?


: 애플리케이션이 시작될 때 어떤 클래스가 최초 한 번만 메모리를 할당하고(static) 그 메모리의 인스턴스를 만들어 사용하는 패턴.

(인스턴스가 필요한 경우 똑같은 인스턴스를 여러 개 만드는 것이 아니라, 동일(기존) 인스턴스를 사용하게 한다)

* 장점

ⓐ 고정된 메모리 사용으로 new 인스턴스를 사용하기 때문에 메모리 낭비를 막음

static(전역) 인스턴스이기 때문에 다른 클래스에서 데이터를 공유하기 쉬움

* 단점 : 너무 많은 사용은 다른 클래스들 간의 결합도가 높아져 수정, 테스트가 어려워질 수 있다.

 

 

기본

  • Java 접근 제어자에 대해서 각각 설명해 주세요.
  • JVM의 구조에 대해서 설명해 주세요.
  • Garbage Collector 에 대해서 설명해 주세요. 어떻게 동작하나요?
  • GC의 종류에 대해서 말해보세요.
  • Java 버전 별 특성에 대해서 아는대로 말해주세요.
  • Java는 Call By Value일까요, Call By Reference 일까요?
  • 리플렉션(Reflection)이란 무엇인가요?
  • Stream API란 무엇인가요?
  • Lambda란 무엇인가요?
  • 함수형 인터페이스란 무엇인가요?
  • JVM 기동시 주로 사용되는 옵션들을 아는대로 말해보세요.
  • foreach를 사용할 수 있는 자료구조는 어떤 인터페이스를 상속받고 있나요?
  • iterator와 iterable 차이는 무엇인가요?
  • synchronized 키워드에 대해 설명해 주세요.
  • volatile 키워드에 대해 설명해 주세요.
  • final 키워드에 대해서 설명해주세요. 각각의 쓰임에 따라 어떻게 동작하나요?

클래스와 객체

  • Wrapper Class란 무엇인가요?
  • 클래스, 객체, 인스턴스 차이에 대해서 설명해 주세요.
  • 직렬화(Serialization)과 역직렬화(Deserialization)에 대해서 설명해 주세요.
  • Java Generic에 대해서 설명해 주세요.
  • equals와 ==의 차이는 무엇인가요?
  • hashCode란 무엇인가요?
  • 문자열을 리터럴(string = "abcd")로 할당하는 것과 객체(string = new String("abcd"))로 할당하는 방식의 차이가 무엇인가요?
  • 순수 추상 클래스와 인터페이스의 차이는 무엇인가요?
  • 본인 관점에서, 인터페이스는 주로 어떨 때 사용하나요?

자료형, 자료구조

  • Java의 Collection에 대해서 설명해 주세요.
  • Array와 ArrayList의 차이점은 무엇인가요?
  • char type과 string type으로 나뉘어져 있는 이유는 무엇인가요?

 

# 출처


[출처] 기술 면접 질문 모음|작성자 hygoogi

반응형

'Programming > JAVA' 카테고리의 다른 글

Call by value, Call by reference  (0) 2021.11.23
쓰레드, GC, 쿠키와 세션, Anomaly  (0) 2021.11.23
더 알아볼 개념들  (0) 2021.11.15
인터페이스(interface)  (0) 2021.11.15
클래스, 객체, 메소드  (0) 2021.11.15

+ Recent posts