개인공부
자바 면접 예상 질문 본문
– 자바란 무엇인가요
자바란 객체지향 프로그래밍 언어로써 가장 중요한 특징은 운영체제에 독립적이란 것입니다. 자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능합니다. 그 이유는 자바를 실행하기 위한 가상 머신인 JVM이 있기 때문입니다. 다른 애플리케이션은 프로그램 실행 시 바로 OS로 가는 반면 자바 애플리케이션은 각 운영체제에 맞는 JVM을 거쳐 OS로 진행되기 때문에 프로그램 수정 없이 실행 가능합니다.
- 자바의 데이터 타입인 기본형은 무엇인가요
정수형 - byte, short, int, long
실수형 - double, float
bool형 - boolean
– 접근 제어자의 종류와 특성에 대해 말하세요
Default (같은 패키지 내 혹은 상속 받은 클래스 내에서 접근 가능)
Protected (같은 패키지 내에서만 접근 가능)
Private (같은 클래스 내에서만 접근 가능)
– 스프링이 뭔가요
자바언어를 기반으로 다양한 애플리케이션을 개발하기 위한 경량급 프레임워크입니다. 경량급이란 말은 스프링자체가 아주 가볍거나 작은 규모의 코드로 이뤄졌다는 것이 아니라 불필요하게 무겁지 않다라는 의미입니다. 그리고 개발 중에 테스트가 쉽다는 특징이 있습니다.
– AOP란 무엇인가요
Aspect Oriented Programing의 약자로 관점 지향 프로그래밍을 의미합니다. 다양한 곳에서 자주 사용되는 공통관심 요소를 단일 기능으로 뽑아내서 코드의 중복을 줄이고 관리의 효율성을 높이기 위해 사용합니다.
– DI란 무엇인가요
Dependency Injection의 약자로 의존성을 주입을 의미합니다. 객체 간의 의존관계를 객체 자신이 아닌 외부의 조립기가 수행해 준다는 개념입니다.
– IoC란 무엇인가요
Inversion of Control의 약자로 제어의 역전을 의미합니다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
– 프레임워크란 무엇인가요
소프트웨어 제작을 편리하게 할 수 있도록 미리 뼈대를 이루는 클래스와 인터페이스를 제작하여 이것을 모아둔 것입니다. 프레임워크를 사용하게 되면 개발 생산성이 증가하며 품질이 향상되고 유지보수가 편리하다는 장점이 있습니다. 반면 익숙해지는데 시간이 오래 걸리며 유연성이 부족하게 됩니다.
– JDK란 무엇인가요
자바 프로그램 개발도구로써 개발을 위한 클래스, 컴파일러, 실행 및 배포도구를 포함하여 개발을 위한 전반적인 환경을 제공하는 것입니다.
– OOP란? 객체 지향 언어란?
객체 지향 프로그래밍를 의미합니다. 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임중 하나로, 프로그래밍에서 필요한 데이터를 추상화 시켜서 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.
– 캡슐화란 무엇인가요
캡슐화(encapsulation)는 연관 있는 변수와 함수를 클래스로 묶는 작업을 말합니다.
외부 객체는 객체 내부의 구조를 얻지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있습니다.
필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는데 있습니다.
– 상속이란 무엇인가요
상속이란 부모 클래스가 가지고있는 생성자를 제외한 모든 것을 자식클래스가 물려받아 같이 공유하며 나아가 확장(extends)하는 개념이다. 부모 클래스를 상위 클래스(superclass)로 부르며 상속받는 자식 클래스를 하위클래스(subclass)라고 부른다.
– 다형성이란 무엇인가요
다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다.
– 디자인 패턴이란 ?
디자인 패턴은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인 상의 문제를 정리해서, 상황에 따라 간편하게 적용해서 쓸 수 있는 패턴 형태로 만든 것입니다.
– MVC패턴이란 무엇인가요
Model, View, Controller 의 약자. 패턴 흐름도에 따라서 시각적 요소와 비즈니스적 요소를 서로의 영향 없이 제어(수정) 할 수 있는 구조를 뜻한다.
- Model : data 처리와 접근을 담당
- View : Client에 보여지는 화면을 담당
- Controller : Model과 View를 제어
– 오버라이딩이란 무엇인가요
부모 클래스에게 상속 받은 것들을 다시 자신의 클래스에서 새로이 재정의 하는 것을 말합니다. 재정의 한 것은 자신의 클래스 내부에서만 영향을 끼치며 부모클래스에서는 영향을 끼치지 않습니다. 할머니클래스, 부모클래스, 자식클래스의 구조라면 자식클래스는 할머니,부모 클래스의 것들을 모두 상속 받을 수 있으며, 할머니와 부모클래스의 같은 변수가 있다면 부모클래스를 물려 받게 됩니다.
– 오버로딩이란 무엇인가요
상속이 아닌 하나의 클래스 내에서 이름이 같은 여러개의 메서드를 정의하는 것입니다. 이름이 같기 때문에 호출 시에 구분 방법은 매개변수입니다. 매개변수의 수, 배치(순서), 타입 이 달라야 합니다.
– 자바의 데이터 타입에 대해 설명하시오 (Primitive type , Reference type)
기본형은 실제 값을 저장하는 공간을 말하며 종류는 8가지가 있습니다. 이외의 모든 타입을 참조형 이라고 하며 실제 값이 저장된 곳의 주소를 저장하는 공간을 의미합니다.
– 프로세스란?
프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있습니다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성됩니다.
– 쓰레드란 무엇인가요
스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.
– 멀티쓰레드란? 장점은 무엇인가요
하나의 프로그램에서 둘 이상의 작업이 필요로 할 때 사용합니다. 자원을 효율적으로 사용가능하며 작업이 분리되어 코드가 간결해 집니다.
– 추상클래스란 무엇인가요
하나이상의 추상메서드를 포함한 클래스입니다. 추상클래스는 객체를 생성 할 수 없으며 멤버변수, 일반 메서드, 상수 등도 가질 수 있습니다.
– 인터페이스란 무엇인가요
클래스가 상속을 통해 구현하기에 한계가 있는 경우, 자바에서 불가능한 다중상속을 흉내내기 위한 도구로써 사용됩니다. 추상클래스보다 추상정도가 높으며 추상메서드와 상수만을 가질 수 있습니다. Implements를 통해 구현합니다.
– 메모리 상수풀 영역 이란
힙영역(프로그래머가 관리하는 메모리 영역)에 생성되어 자바 프로세스 종료까지 계속 유지되는 메모리영역입니다. 기본적으로 JVM에서 관리하며 프로그래머가 작성한 상수에 대해 최우선적으로 찾아보고 없으면 상수풀에 추가한 이후 그 주소값을 리턴합니다. 그로 인해 메모리 절약 효가가 있습니다.
– 직렬화란 무엇인가요
– 추상클래스와 인터페이스에 대해 설명해 보세요.
'JAVA 기초복습' 카테고리의 다른 글
Get 과 Post 방식의 차이 (0) | 2018.05.30 |
---|---|
main에 static이 있는 이유 (0) | 2018.05.28 |
이클립스 단축키 모음 (0) | 2018.05.27 |
면접 예상 질문 2 (0) | 2018.05.24 |
기초 복습 - 문자열 정렬 (0) | 2018.04.27 |