춤추는 개발자

신입 개발자 직무면접 정리 - Java편 본문

Small talk/면접 준비

신입 개발자 직무면접 정리 - Java편

Heon_9u 2020. 10. 2. 17:20
728x90
반응형

1. 프레임워크란?

SW개발의 뼈대, 기준이 되는 부분을 미리 구현한 것

하나의 프레임워크에는 여러 라이브러리와 여러 프레임워크가 포함되어 있다. 개발 플랫폼의 역할을 수행.

 

장점

  1. 개발 속도가 빠름, 생산성 증가.
  2. 품질 보장

단점

  1. 프레임워크에 대한 이해 필요
  2. 프레임워크 내부를 커스터마이징하기 힘들다.
  3. 느리고 무겁다. 비용이 많이 든다.

2. 라이브러리

 독립성을 가진 최소단위의 기능이다. (함수 단위)

재사용가능한 최소 단위 기능 또는 기능들의 집함, 기능을 사용하기위해 다른 기능이 필요하지 않아야 한다.

표준 라이브러리(언어가 제공해주는 기본 함수), 사용자 라이브러리(직접 만든 라이브러리)가 있다.

 

 

3. 자바란 무엇인가?

 객체지향 프로그래밍 언어로 가장 큰 특징은 운영체제없이 독립적이라는 점. 즉, OS에 관계없이 같은 코드 사용이 가능합니다. OS위에 JVM이라는 가상머신 위에서 자바가 실행되기 때문!

JVM의 컴파일 과정

 먼저 .java파일을 빌드 시, .class라는 자바 바이트코드로 변환됩니다. 그리고 JVM내로 로드되면 실행엔진에 의해 기계어로 해석됩니다.

 실행 엔진에는 인터프리터와 JIT 컴파일러가 있습니다. 인터프리터는 바이트코드를 한 줄씩 읽고, JIT 컴파일러는 전체 코드를 컴파일해서 캐시에 보관해 실행 시간을 단축시킵니다.

 

4. GC란 무엇인가?

 GC란 메모리 기법 중의 하나로, 프로그램이 할당했던 메모리 영역 중에 필요없게 된 영역을 해제하는 기능입니다.

Java의 경우 JVM으로 프로그램이 실행되다가 메모리가 부족해지는 순간 GC가 실행.

 

5. OOP란?

 객체지향 프로그래밍으로, 객체를 기준으로 코드를 나누어 구현하는 방법입니다. 프로그래밍에서 필요한 데이터를 추상화 시켜서 상태와 행위를 가진 객체로 만들고, 그 객체를 통해 로직을 구성하는 방법입니다.

 

 Class는 공통되는 메소드나 속성을 묶어서 정의한 것으로 객체의 일반적인 타입을 의미.

 Object는 Class라는 타입으로 만든 대상, 개별적으로 구분할 수 있는 실체를 의미.

 

  • 추상화: 객체들의 공통 특징을 모아서 하나의 class로 표현하는 것.
  • 캡슐화: 변수와 함수를 하나로 묶는 것. 정보 은닉도 가능.
  • 상속성: 이미 정의된 Class로부터 속성과 메서드를 물려받는 것을 말함. (extends)
  • 다형성: 동일한 함수명이 상황에따라 다르게 해석됨.(Overriding, Overloading)

 

6. MVC 패턴이란?

 어플리케이션을 Model, View, Controller영역으로 구분하여 개발합니다. 영역 간의 결합도를 최소화한 패턴입니다. 분업화가 쉽고 유지보수가 용이합니다.

 Model는 데이터에 상태 변화가 일어난 경우, 뷰와 컨트롤러에게 전달

 View는 사용자에게 보여지는 영역.

 Controller는 Model과 View를 연결하는 역할, Model에게 요청사항을 "어떻게"처리할 것인지 알려주는 영역.

 

7. 상속이란?

 기존 Class의 변수와 메소드를 그대로 가지면서 추가적인 기능도 가지는 Class를 새로 만드는 것입니다. 복잡한 구조의 Class가 있는 경우, 공통 부분부터 구현하기 위해 사용합니다. 코드 중복을 줄이는 장점이 있습니다.

 

8. Java의 데이터 타입

 기본형(Primitive type)

Stack메모리 영역에 실제 값을 저장하는 데이터 타입으로 int, char, boolean 등이 있습니다.

 

 참조형(Non-primitive type)

기본형 외에 모든 타입으로 String, Class, 인터페이스 등 모든 변수는 참조형 변수입니다. 새로 만들 때는 heap메모리에 저장공간을 확보하며 항상 new로 정의합니다. 실제 값은 heap영역에 저장, 메모리 주소는 stack영역에 저장됩니다.

 

9. 다형성이란?

 하나의 지시에 대해 여러 객체가 각자 다른 행위를 수행. 자바의 Overriding, Overloading이 이에 해당됩니다.

 

10. Overriding이란?

 클래스에 있는 기존 메소드를 하위 클래스에서 재정의하는 것.

 

11. Overloading이란?

 하나의 클래스 내에 동명의 메서드를 정의하는 것. 매개변수, 리턴 타입 등이 다릅니다.

 

12. 인터페이스란?

 Class의 템플릿입니다. 멤버 변수나 함수는 가질 수 없고, 추상 메소드만 가질 수 있습니다.

사용 목적은 이름 뜻 그대로 Class를 사용함에 있어서 인터페이스를 제공하기 위함. 여러 클래스의 사용 방법이 같음을 보장합니다.

 

13. 추상 클래스란? 그리고 인터페이스와의 차이점은?

 추상 클래스란 abstract로 정의되거나, 클래스 내에 추상 메서드가 하나 이상 포함된 Class를 말합니다.

 차이점은 사용 목적에 있습니다. 추상 클래스는 기본적으로 상속을 통한 기능 확장 목적이 있고 인터페이스는 해당 인터페이스를 구현한 객체들에 동일한 동작을 약속하게 하기위해서 사용합니다.

 

 

14. JVM의 GC 동작과정

출처: https://mirinae312.github.io/develop/2018/06/04/jvm_gc.html

 먼저, 객체가 오래됐는지 또는 사용 중인지 확인하기 위한 메모리 영역을 나눠서 처리합니다.

  1. 처음 생성된 객체는 Eden영역에 위치하고 Minor GC가 발생하면 사용하지 않는 객체가 메모리에서 제거됩니다.
  2. 남아있는 객체는 Survivor영역으로 이동하게 됩니다. 이 영역은 1, 2로 구성되는데 Minor GC가 발생할 때마다 Survivor영역에서 1->2 or 2->1로 이동하며 이 때 사용하지 않는 객체가 메모리에서 제거됩니다.
  3. 마지막으로 남아있는 객체는 Old영역으로 옮겨집니다. 이 영역에 있는 객체들 중에도 사용하지 않는 경우 Full GC를 통해 메모리에서 제거됩니다.

 

15. JSP란?

 JavaServer Pages의 약자로 HTML코드에 Java코드를 넣어 동적 웹 페이지를 생성하는 도구. JSP가 실행되면 자바 서블릿으로 변환되어 WAS에서 동작되며 필요한 기능을 수행하고 생성된 데이터를 Web Page와 함께 Client로 응답한다.

 

16. Servlet이란?

 웹 페이지를 동적으로 생성하기 위한 서버측 프로그램. WAS위에서 컴파일되고 동작한다.

 

 

17. 자바의 메모리 영역

 메서드 영역: static 변수, 전역 변수, Class 정보 등이 올라간다.

 스택 영역: 정적인 영역으로 지역 변수, 함수 등이 할당되는 영역

 힙 영역: new 연산자를 통해 동적 할당된 객체들이 저장, GC에 의해 메모리 관리

 

 

18. JDBC, Mybatis

 Java Database Connection으로 관계형DB에 접근해서 SQL문을 실행하기 위한 자바 라이브러리. (Core API)

 Mybatis는 JDBC를 이용해 쿼리문을 처리하는데, XML에 SQL문을 따로 관리하는 장점. (Wrapper Library)

 

728x90
반응형