본문 바로가기
개발/면접예상질문

자바 웹 개발자 면접 예상 질문

by ㅣ푸른하늘ㅣ 2017. 10. 23.
반응형

1. 자바의 데이터 타입인 Primitive Type과 Reference Type에 대해 설명하세요

Primitive Type은 변수에 값 자체를 저장하며 Reference Type은 메모리상에 객체가

있는 위치를 저장한다.

Primitive Type의 종류는 boolean, byte, char, short, int, float, long, double 총 8가지 이며

Reference Type 종류는 클래스타입, 인터페이스타입, 배열타입, 열거타입이 있다. 

  +++ 김윤명저 뇌를 자극하는 Java 프로그래밍 참고 +++  

 

2. 다형성이란 무엇인가?

여러가지 데이터를 다룰 수 있는 특성을 뜻한다.

조상클래스의 인스턴스를 이용하여 자손타입의 클래스를 다룬다거나, 메서드 오버로딩을 통하여

동일 이름의 메서드를 이용하여 다양한 형태의 파라미터를 다루는 것을 뜻한다.

 

3. 멀티 쓰레드의 장단점은 무엇인가?

두 가지 이상의 작업을 동시해 실행 할 수 있어 자원을 효율적으로 이용할 수 있으나

dead lock 및 동기화에 대한 철저한 검증이 필요하다.

 

4. Java 콜렉션의 대표 인터페이스는 무엇인가?

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

않고, 값은 중복을 허용한다.
구현클래스 - HashMap, TreeMap, HashTable, Properties

  +++ 남궁성저 Java의 정석 참고 +++  

 

5. 접근제어자의 종류와 특성에 대하여 설명하라.

private - 같은 클래스 내에서만 접근이 가능하다.
default - 같은 패키지 내에서만 접근이 가능하다.
protected - 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.
public - 접근 제한이 전혀없다.

접근 허용 범위는 아래와 같다

public > protected > default > private  

 

6. 객체의 직렬화란 무엇인가? 

객체를 데이터 스트림으로 만드는 것을 뜻한다.
객체에 저장된 데이터를 스트림에 쓰기위해 연속(serial)적인 데이터로 변환하는 것을 말한다.
반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화라고 한다.
직렬화가 가능하게 하기위해서는 java.io.Serializable인터페이스를 구현하면 된다.
직렬화하고자 하는 객체의 클래스에 직렬화가 안 되는 객체에 대한 참조를 포함하고 있다면,

제어자 transient를 붙여서 직렬화 대상에서 제외하도록 할 수 있다.

  +++ 남궁성저 Java의 정석 참고 +++  

 

7. Wrapper 클래스란 무엇인가?

primitive 타입으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한

기능을 지원하는 클래스를 뜻하며 각 primitive 타입에 대응하는 Wrapper 클래스는 아래와

같다.

byte       => Byte

short      => Short

int         => Integer

long      => Long

char      => Character

float      => Float

double  => Double

boolean => Boolean   

  +++ 김윤명저 뇌를 자극하는 Java 프로그래밍 참고 +++

 

8. 객체지향 언어(Object Oriented Language)의 장점은 무엇인가?

  - 코드의 재사용성이 높아 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.

  - 코드의 관리가 용이하여 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.

  - 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을

     제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.

    +++ 남궁성저 Java의 정석 참고 +++  


9. Thread를 구현하기 위한 두 가지 방법은 무엇인가?

java.lang.Thread 클래스를 상속받거나 java.lang.Runnable 인터페이스를 구현한다. 


10. 추상클래스란 무엇인가?

클래스를 설계도에 비유한다면 추상클래스는 미완성 설계도에 비유할 수 있다. 미완성 설계도란, 단어

의 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. 클래스가 미완성이라는 것은 멤버의 개수에

관계된 것이 아니라, 단지 미완성 메서드(추상메서드)들 포함하고 있다는 의미이다. 미완성 설계도로

완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성활 수 없다. 추상클래스는 상속을 통해서

자손클래스에 의해서만 완성될 수 있다.

   +++ 남궁성저 Java의 정석 참고 +++ 

 

11. 인터페이스란 무엇인가?

인터페이스는 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스

보다 추상화 정도가 높아서 추상클래스와는 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으

로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 어떠한 요소도 허용하지

않는다. 추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아

무것도 없고 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있다. 인터페이스는 인터페이스로부터만

상속받을 수 있으며, 클래스와는 달리 다중상속, 즉 여러개의 인터페이스로부터 상속을 받는 것이 가능

하다.

  +++ 남궁성저 Java의 정석 참고 +++

 

12. NIO란 무엇인가?

기존 자바IO의 단점을 보완한 New IO(NIO) 패키지로써 nonblocking IO를 지원한다.

Buffer클래스를 도입하여 기존에 단순배열로만 처리해야 했던 많은 부분들을 좀 더  

효율적이고 편리하게 다룰 수 있도록 지원한다.

기존의 스트림은 단방향이었으나 Channel을 도입하여 읽기, 쓰기, 읽고쓰기 등의 세가지

형태의 작업방식을 지원하며, 운영체제에서 제공하는 다양한 네이티브 IO서비스를 이용

가능하게 지원한다.

버퍼, 채널과 함께 셀렉터를 이용하게 함으로써 단 한개의 쓰레드만으로 수천에서 수만명의  

동시 사용자를 처리 할 수 있는 서버를 만들 수 있게 지원한다.

  +++ 김성박,송지훈저 자바I/O & NIO 프로그래밍 참고 +++

반응형

'개발 > 면접예상질문' 카테고리의 다른 글

POJO  (0) 2017.10.23
Process 와 Thread 이해  (0) 2017.10.23