본문 바로가기

IT 개발자 취업 면접 자료

IT 회사 면접 시 예상 질문과 답변 정리 [1 - 프로그래밍 편]

by Meteora_ 2021. 6. 29.
728x90

[Programming의 기본]

 

1. 프로그램이 무엇인지 말해보세요

- 컴퓨터가 사람 일을 할 수 있도록 해주는 것

- 컴퓨터에 처리되는 작업의 순서를 논리적으로 명령어로 작성하는것

 

2. JAVA언어의 좋은 점에 대하여 말해보세요

- 객체지향형 프로그래밍 언어, 플랫폼 독립적, 이식성이 좋다, 라이브러리 지향성, 보안성, 멀티 스레드, 가상머신 바이트 코드

3. 객체지향 언어의 장점과 객체지향 프로그램이 등장한 이유에 대해 설명하시오.

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

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

- 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 부링ㄹ치로 인한 오 동작을 방지할 수 있다.

 

4. 자바의 데이터 타입인 Primitive Type(원시)와 Reference Type(참고)에 대해 설명하시오

- Primitive Type은 변수에 값 자체를 저장하며 Reference Type은 메모리상에 객체가 있는 위치를 저장한다.

-Primitive Type의 종류는 boolean, byte, char, short, int, float, long, double 총 8가지이며 Reference Type의 종류는 클래스타입, 인터페이스타입, 배열타입, 열거타입이 있다.

 

5. 배열과 컬렉션의 차이점에 대해서 설명하세요.

-배열은 단 하나의 자료형만 저장이 가능하고, 컬렉션은 복수의 자료형을 저장할 수 있다.

-배열은 고정된 크기이고, 컬렉션은 가변적 크기이다.

 

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

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

- 조상클래스의 인스턴스를 이용하여 자손타입의 클래스를 다룬다거나, 메서드 오버로딩을 통하여 동일 이름의 메서드를 이용하여 다양한 형태의 파라미터를 다루는 것을 뜻한다.

 

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

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

 

(정보 - 교착 상태(膠着狀態, 영어: deadlock)란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.)

 

8. 자바에서 멀티쓰레드를 구현하는 방법에 대해서 설명하세요.

 1. Thread클래스를 상속하는법 - 단일 상속만 된다는 단점이 있다

2. Runnable 인터페이스를 상속하는 법 -다중 상속이 된다는 장점이 있다.

 

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

1. List

순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.

구현클래스 - ArrayList, LinkedList, Stack, Vector 

 

2. Set

순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.

구현클래스 - HashSet, TreeSet

 

3.Map

키와 값이 쌍으로 이루어진 데이터의 집합으로 순서는 유지되지않으며, 키는 중복을 허용하지않고, 값은 중복을 허용함.

구현클래스 - HashMap, TreeMap, HashTable, Properties

 

10. 컬렉션에서 제네릭이 추가된 이유에 대해서 설명하세요!

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

 

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

private - 같은 클래스 내에서만 접근이 가능하다.

default - 같은 패키지 내에서만 접근이 가능하다.

protected - 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.

public - 접근 제한이 없다.

접근 허용 범위는 다음과 같다 : public > protected > default > private

 

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

primitive 타입으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한 기능을 지원하는 클래스를 뜻하며 각 primitive 타입에 대응하는 Wrapper 클래스는 아래와 같다.

 

byte -> Byte

short -> Short

int -> Integer

long -> Long

char -> Character

float -> Float

double -> Double

boolean -> Boolean

 

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

클래스를 설계도에 비유한다면 추상클래스는 미완성 설계도에 비유할 수 있다. 미완성 설계도란, 단어의 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로는 인스턴스를 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.

(abstract)

 

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

인터페이스는 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와는 달리 몸통을 갖춘 일반메서드 또는 멘버변수를 구성원으로 가질 수 없다. 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 어떤한 요소도 허용하지 않는다. 추상클래스를 부분적으로만 완성된 '미완성 설계도' 라고 한다면, 인터페이는 구현된 것은 아무것도 없고 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있다. 인터페이스는 인터페이스로부터만 상속받을 수 있으며, 클래스와는 달리 다중상속, 즉 여러 개의 인터페이스로부터 상속을 받을 수 있다. (implement)

 

15. 자바의 GUI에서 스윙과 AWT의 차이점에 대해서 설명하세요.

AWT는 운영체제가 갖고 있는 각 컴포넌트를 이용한다. 즉 운영체제에 종속 적인 GUI로서 운영체제 종류에 따라 화면에 풀력되는 모양이 약간씩 다르다.

스윙은 운영체제가 갖고 있는 GUI를 사용하지 않고 자바 가상머신의 Swing 패키지를 직접 사용해 구현한다. 따라서 운영체제가 서로 달라도 동일한 화면을 출력하게 한다. 스윙은 AWT보다 세련되고 다양한 GUI를 제공해 주기 때문에 자바 어플 GUI 개발에서는 AWT보다는 스윙을 더 많이 사용한다.

 

16. 가비지 콜렉터(Garbage Collection)에 대하여 말해 보세요

쓰레기 수집(Garbage Collection)은 동적 할당된 메모리 영역 가운데 더 이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제하는 기법이다. 쓰레기 수집이 지원되는 환경에서는 프로그래머가 동적으로 할당한 메모리 영역의 전체를 완벽하게 관리할 필요가 없어진다. 이러한 작업은 CLR의 '가비지 컬렉터'라는 일종의 백그라운드 서비스를 통해 자동으로 이루어진다.

 

17. 컬렉션 List 인터페이스를 구현한 ArrayList 컬렉션 클래스에 대해서 말해보세요.

- 가변적 크기이다.

- 순차적으로 요소 값을 저장한다.

- 중복 요소 값을 허용한다.

 

17-1. 자바(JAVA)의 메모리 구조가 어떤 식으로 이루어져 있는지?

STACK(지역변수) / HEAP (동적할당 malloc()) / BBS (초기화 안된 전역 변수) / DATA (초기화된 전역변수) / CODE(함수, 제어문, 상수)

 

17-2 out of memory 에러 메시지는 어느 메모리 부족을 나타나는 것인지?

- HEAP 메모리 부족

 

18. 메서드에서 오버로딩과 오버라이딩에 대해서 말해보시오.

오버로딩 : 메소드 이름은 같지만 매개변수의 개수나 데이터 형식을 다르게 정의하는 것 

오버라이딩 : 기존에 있는 메소드를 재정의하는것으로 매개변수의 개수나 데이터 형식이 같아야한다.

 

19. Exception에 대하여 말해보세요.

- 프로그램의 비정상적인 종료나 중단을 막을 수 있다.

- RuntimeException과 그 외의 Exception으로 나눌 수 있다.

 

20. 동기화(synchronized)에 대하여 설명해 보세요.

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

(하나의 작업을 쪼개서 하는 것이 쓰레드, 다중작업을 동시에 하는것을 태스크 둘이 비슷하다) 

 

21. 프로세스와 쓰레드의 차이점에 대하여 말해 보세요/

- 프로세스 : 실행 중인 프로그램, 자원과 쓰레드로 구성

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

- 다중 쓰레드 : 하나의 프로세스(프로그램)에 하나 이상의 쓰레드를 생성하여 실행

댓글