JAVA

[기술면접] JAVA 프로그래밍 면접 예상 질문과 답변

Jonny 2022. 1. 6. 12:26

기술면접 준비

     Programming

프로그램이란?

  • 컴퓨터가 사람 일을 할 수 있도록 해 주는 것
  • 컴퓨터에 처리되는 작업의 순서를 논리적으로 명령어로 작성하는 것

JAVA언어의 장점은?

  • 객체지향형 프로그래밍 언어
  • 독립적인 플랫폼
  • 높은 이식성과 바이트 코드
  • 라이브러리 지향성과 보안성
  • 멀티 스레드와 가상머신

객체지향 언어(Object Oriented Language)의 장점과 등장한 배경

  • 코드의 재사용성이 높다
  • 코드의 관리가 용이하다
  • 제어자와 메서드를 이용해 데이터를 보호하고, 올바른 값을 유지하며, 코드의 중복을 제거해 오작동을 방지

Primitive Type과 Reference Type이란?

  • Primitive Type은 변수에 값 자체를 저장하며, Reference Type은 메모리상에 객체가 있는 위치를 저장한다.
  • Primitive Type의 종류는 boolean, byte, char, short, int, float, long, double 총 8가지이며, Reference Type의 종류는 클래스타입, 인터페이스타입, 배열타입, 열거타입이다.

배열과 컬렉션의 차이점은?

  • 배열은 단 하나의 자료형만 저장이 가능하고, 컬렉션은 복수의 자료형을 저장할 수 있다.
  • 배열은 고정된 크기이고, 컬렉션은 가변적 크기이다.

다형성이란?

  • 여러 가지 데이터를 다룰 수 있는 특성을 뜻함.
  • 조상 클래스의 인스턴스를 이용하여 자손타입의 클래스를 다룬다거나, 메서드 오버롣ㅇ을 통하여 동일 이름의 메서드를 이용하여 다양한 형태의 파라미터를 다루는 것을 뜻한다.

멀티 쓰레드의 장단점은?

  • 두 가지 이상의 작업을 동시에 실행 할 수 있어 자원을 효율적으로 이용할 수 있으나, dead lock 및 동기화에 대한 철저한 검증이 필요하다.

자바에서 멀티쓰레드를 구현하는 방법은?

  • Thread 클래스를 상속한다. 단일 상속만 된다는 단점이 있다.
  • Runnable 인터페이스를 상속한다. 다중 상속이 된다는 장점이 있다.

Java 콜렉션의 대표 인터페이스는?

  • List
    • 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.
    • 구현클래스 → ArrayList, LinkedList, Stack, Vector
  • Set
    • 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
    • 구현클래스 → HashSet, TreeSet
  • Map
    • 키와 값의 쌍으로 이루어진 데이터의 집합으로 순서는 유지되지 않으며, 키는 중복으로 허용하지 않고, 같은 값은 중복을 허용한다.
    • 구현클래스 → HashMap, TreeMap, HashTable, Properties

컬렉션에서 제네릭이 추가된 이유는?

  • 컬렉션은 복수개의 데이터 타입 요소값이 저장되다 보니 원하는 자료형 타입 요소값을 추출하기 어렵다.
  • 그러므로 지정한 자료형 타입 한가지만 저장하기 위해서 나온 것이 제네릭이다.

접근제어자의 종류와 특성

  • private → 같은 클래스 내에서만 접근 가능
  • default → 같은 패키지 내에서만 접근 가능
  • protected → 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근 가능
  • public → 접근제한x
  • public > protected > default > private

Wrapper 클래스란?

  • Primitive 타입으로 표현할 수 있는 간단한 데이터를 객체로 만드는 기능을 지원하는 클래스를 뜻한다.
  • byte → Byte
  • short → Short
  • int → Integer
  • long → Long
  • char → Character
  • float → Float
  • double → Double
  • boolean → Boolean

추상클래스란?

  • 미완성 설계도이며, 미완성 메서드(추상메서드)를 포함하고 있는 클래스이다.
  • 인스턴스를 생성할 수 없으며, 상속을 통해 자손클래스에 의해서만 완성된다.

인터페이스란?

  • 일종의 추상클래스
  • 추상메서드를 갖지만, 추상클래스와 달리 일반 메서드 또는 멤버변수를 가질 수 없고, 오직 추상메서드와 상수만을 멤버로 가지며 그 외의 요소는 허용하지 않는다.
  • 인터페이스로부터만 상속을 받을 수 있으며, 클래스와는 달리 다중상속이 가능하다.

인터페이스를 사용하는 이유는?

  • 다형성을 구현하기 위해서 사용
    • 같은 인터페이스를 구현하는 클래스들은 실행하는 객체가 인터페이스를 통하여 다른 객체를 사용할 수 있도록 하여 클래스간의 결합도를 낮추고 응집도를 높힐 수 있음.
    • 예로 스프링에서 DI(의존성 주입) 등에서 다형성을 구현하고 결합도를 낮추기 위해 사용
  • 양식역할 : 규칙에 맞게 구현하도록 표준을 제시하고 클래스들이 메서드를 빠짐 없이 재정의 하도록 한다.

자바의 GUI에서의 스윙과 AWT의 차이점?

  • AWT는 운영체제가 갖고 있는 각 컴포넌트를 이용한다. 즉, 운영체제에 종속적인 GUI로서 운영체제 종류에 따라 화면에 출력되는 모양이 약간씩 다르다.
  • 스윙은 운영체제가 갖고 있는 GUI를 사용하지 않고 자바 가상머신의 Swing 패키지를 직접 사용해 구현한다. 따라서, 운영체제가 서로 달라도 동일한 화면을 출력하게 한다.
  • 스윙은 AWT보다 세련되고 다양한 GUI를 제공해주기 때문에 자바 어플 GUI개발에서는 AWT보다는 스윙을 더 많이 사용한다.

가비지 콜렉터(Garbage Collector)란?

  • 동적 할당된 메모리 가운데 더 이상 사용할 수 없게 된 영역을 자동으로 해제한다.
  • 프로그래머가 동적으로 할당한 메모리 영역을 완벽하게 관리할 필요 x
  • 이러한 작업은 백그라운드 섭스를 통해 자동으로 이뤄짐

컬렉션 List 인터페이스를 구현한 ArrayList 컬렉션 클래스란?

  • 가변적 크기이다.
  • 순차적으로 요소 값을 저장한다.
  • 중복 요소 값을 허용한다.

자바의 메모리 구조는?

코드영역
데이터영역(전역변수, static 변수)
Stack 영역(지역변수 매개변수)
Heap 영역(사용자의 동적할당)
  • out of memory 는 어느 메모리 부족?
    • heap 메모리 부족

메서드 오버로딩과 오버라이딩 설명

  • 오버로딩 → 메소드 이름은 같지만 매개변수의 개수나 데이터 형식을 다르게 정의하는 것
  • 오버라이딩 → 기존에 있는 메소드를 재정의하는 것으로 매개변수의 개수나 데이터 형식이 같아야 한다.

Exception?

  • 프로그램의 비정상적인 종료나 중단을 막을 수 있다.
  • RuntimeException과 그 외의 Exception으로 나눌 수 있다.

동기화란

  • 하나의 자원을 여러 태스크가 사용하려 할 때에, 한 시점에서 하나의 태스크만이 사용할 수 있도록 하는 것

프로세스와 쓰레드의 차이점

  • 프로세스 → 실행중인 프로그램, 자원과 쓰레드로 구성
  • 쓰레드 → 프로세스 내에서 실제 작업을 수행하는 단위, 모든 프로세스는 하나 이상의 쓰레드를 가지고 있다.
  • 다중 쓰레드 → 하나의 프로세스(프로그램)에 하나 이상의 쓰레드를 생성 실행

OSI 7계층 

'JAVA' 카테고리의 다른 글

[자바의 정석] 6장 연습문제 풀이  (0) 2022.01.04