java
– 자바란 무엇인가요
자바란 객체지향 프로그래밍 언어로써 가장 중요한 특징은 운영체제에 독립적이란 것입니다. 자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능합니다. 그 이유는 자바를 실행하기 위한 가상 머신인 JVM이 있기 때문입니다. 다른 애플리케이션은 프로그램 실행 시 바로 OS로 가는 반면 자바 애플리케이션은 각 운영체제에 맞는 JVM을 거쳐 OS로 진행되기 때문에 프로그램 수정 없이 실행 가능합니다.
– 스프링이 뭔가요
자바언어를 기반으로 다양한 애플리케이션을 개발하기 위한 경량급 프레임워크입니다. 경량급이란 말은 스프링자체가 아주 가볍거나 작은 규모의 코드로 이뤄졌다는 것이 아니라 불필요하게 무겁지 않다라는 의미입니다. 그리고 개발 중에 테스트가 쉽다는 특징이 있습니다.
– 프레임워크란 무엇인가요
소프트웨어 제작을 편리하게 할 수 있도록 미리 뼈대를 이루는 클래스와 인터페이스를 제작하여 이것을 모아둔 것입니다. 프레임워크를 사용하게 되면 개발 생산성이 증가하며 품질이 향상되고 유지보수가 편리하다는 장점이 있습니다. 반면 익숙해지는데 시간이 오래 걸리며 유연성이 부족하게 됩니다.
– JDK란 무엇인가요
자바 프로그램 개발도구로써 개발을 위한 클래스, 컴파일러, 실행 및 배포도구를 포함하여 개발을 위한 전반적인 환경을 제공하는 것입니다.
– OOP란? 객체 지향 언어란?
객체 지향 프로그래밍를 의미합니다. 가장 중요한 특징은 캡슐화, 상속, 다형성입니다. 객체 지향 프로그래밍을 하게 되면 클래스라는 개념을 도입함으로써 코드의 재사용을 할 수 있습니다.
– MVC패턴이란 무엇인가요
애플리케이션은 크게 model, view, controller 세 영역으로 구분하여 영역 간의 결합도를 최소화한 논리적인 패턴입니다. 가장 큰 특징이며 장점은 비즈니스로직과 프리젠테이션로직이 분리 된다는 것입니다. 그로 인해 디자이너와 개발자의 영역이 분리 됨 으로써 작업의 분업화를 할 수 있습니다. 또한 유지보수에도 용이합니다.
– DAO란 무엇입니까
데이터 접근을 목적으로 하는 객체입니다.
– 오버라이딩이란 무엇인가요
부모 클래스에게 상속 받은 것들을 다시 자신의 클래스에서 새로이 재정의 하는 것을 말합니다. 재정의 한 것은 자신의 클래스 내부에서만 영향을 끼치며 부모클래스에서는 영향을 끼치지 않습니다. 할머니클래스, 부모클래스, 자식클래스의 구조라면 자식클래스는 할머니,부모 클래스의 것들을 모두 상속 받을 수 있으며, 할머니와 부모클래스의 같은 변수가 있다면 부모클래스를 물려 받게 됩니다.
– 오버로딩이란 무엇인가요
상속이 아닌 하나의 클래스 내에서 이름이 같은 여러개의 메서드를 정의하는 것입니다. 이름이 같기 때문에 호출 시에 구분 방법은 매개변수입니다. 매개변수의 수, 배치(순서), 타입 이 달라야 합니다.
– 상속이란 무엇인가요
기존 클래스의 기능을 유지하면서 추가적인 기능을 추가하여 클래스를 만들고 싶을 때 사용하는 방법은 상속입니다. 새로운 클래스를 생성할 때 상위 클래스를 지정함으로써, 상위 클래스의 모든 기능, 속성을 제공받고 자신의 클래스에는 부가적인 기능, 속성을 추가 할 수 있습니다. 상속은 코드를 간결화하며, 재사용성을 높일 수 있습니다.
– 자바의 데이터 타입에 대해 설명하시오 (Primitive type , Reference type)
기본형은 실제 값을 저장하는 공간을 말하며 종류는 8가지가 있습니다. 이외의 모든 타입을 참조형 이라고 하며 실제 값이 저장된 곳의 주소를 저장하는 공간을 의미합니다.
– 다형성이란 무엇인가요
하나의 클래스나 함수가 다양한 방식으로 동작이 가능한 것을 말합니다. 하나의 메시지가 전달되었을 때 수신자가 누구냐에 따라 각각 다른 기능을 수행합니다. 자바에서 오버로딩, 오버라이딩 등이 있습니다. 쉽게 예를 들면 저는 하나이지만 학교에 있으면 학생이고 집에서는 아들이라는 구성원입니다. 이렇게 생각하면 쉽다고 생각합니다.
– 쓰레드란 무엇인가요
자바 프로그램을 구성하는 명령문은 순서대로 하나씩 처리되는 것이 기본입니다. 이러한 실행흐름을 쓰레드라고 합니다. 둘 이상의 흐름을 갖도록 만들고 싶다면 멀티 쓰레드 프로그램을 사용하면 됩니다.
– 멀티쓰레드란? 장점은 무엇인가요
하나의 프로그램에서 둘 이상의 작업이 필요로 할 때 사용합니다. 자원을 효율적으로 사용가능하며 작업이 분리되어 코드가 간결해 집니다.
– 쓰레드 생성방법이 무엇인가요
첫 번째로는 쓰레드 클래스를 상속받거나 인터페이스를 구현 받는 방법이 있습니다. 두 번째로는 구현한 클래스 내부에서 인스턴스 생성 즉시 쓰레드를 생성시키는 방법이 있습니다.
– 추상클래스란 무엇인가요
하나이상의 추상메서드를 포함한 클래스입니다. 추상클래스는 객체를 생성 할 수 없으며 멤버변수, 일반 메서드, 상수 등도 가질 수 있습니다.
– 인터페이스란 무엇인가요
클래스가 상속을 통해 구현하기에 한계가 있는 경우, 자바에서 불가능한 다중상속을 흉내내기 위한 도구로써 사용됩니다. 추상클래스보다 추상정도가 높으며 추상메서드와 상수만을 가질 수 있습니다. Implements를 통해 구현합니다.
– AOP란 무엇인가요
Aspect Oriented Programing의 약자로 다양한 곳에서 자주 사용되는 공통관심 요소를 단일 기능으로 뽑아내서 코드의 중복을 줄이고 관리의 효율성을 높이기 위해 사용합니다.
– Spring DI란 무엇인가요
Dependency Injection의 약자로 의존성을 주입하는 것을 말합니다. 설정 파일을 통해 객체간의 의존관계를 설정함으로서 객체는 의존하고 있는 객체를 생성하거나 검색 할 필요 없습니다. 그로 인해 코드관리가 편리해집니다.
– 디자인패턴이란 무엇인가요
설계시 반복적으로 나타나지는 설계 방법 또는 구조들을 말합니다. 디자인패턴을 이용하게 되면 코딩이 명확하고 단순하며 모듈을 세분화 시킬 수 있고, 재사용성이 높으며 유지보수가 쉬워집니다. 디자인패턴은 대표적으로 GoF 23가지 패턴이 있습니다. 패턴들의 대부분의 공통점은 추상클래스나 인터페이스로부터 상속받은 클래스를 사용하며, 이는 객체지향의 다형성을 이용한 방법입니다.
– 메모리 상수풀 영역 이란
힙영역(프로그래머가 관리하는 메모리 영역)에 생성되어 자바 프로세스 종료까지 계속 유지되는 메모리영역입니다. 기본적으로 JVM에서 관리하며 프로그래머가 작성한 상수에 대해 최우선적으로 찾아보고 없으면 상수풀에 추가한 이후 그 주소값을 리턴합니다. 그로 인해 메모리 절약 효가가 있습니다.
– main메서드는 왜 static인가요?
static은 메모리 선언을 사용하지 않아도 사용할 수 있습니다. main메서드는 자바가상머신(JVM)에 의해 호출되는 것이므로 반드시 static으로 선언되어 미리 올라가 있어야 합니다. 만일 메모리에 있지 않다면 시작점인 main메서드를 호출하려고 할 때 메모리에 없기 때문에 실행되지 않습니다.
– 캡슐화란 무엇인가요
관련된 데이터와 메서드를 하나의 단위로 묶는 원리입니다. 그로 인해 캡슐내부와 외부를 구별하게 됩니다. 캡슐화를 하게 되면 클래스의 필드 값에 권한을 설정할 수 있습니다. 또한 사용자는 데이터가 클래스에 어떻게 저장되는지 알 수 없습니다. 그리고 클래스의 결합도가 낮아져 재사용이 용이하게 됩니다.
– 직렬화란 무엇인가요
메모리에 있는 객체를 보조기억장치에 저장할 수 있도록 바이트 형태로 변환하는 것을 말합니다. 객체가 생성되어 데이터가 적재되는 메모리는 순간적이기 때문에 영구적으로 보관하기 위해 직렬화를 사용합니다.
– 제너릭이란 무엇인가요
클래스를 선언할 때 타입을 결정하지 않고 객체를 생성할 때 유동적인 타입으로 재사용하기 위한 것을 말합니다.
– 리플렉션이란 무엇인가요
리플렉션은 컴파일러를 무시하고 런타임 상황에서 메모리에 올라간 클래스나 메서드등의 정의를 동적으로 찾아서 조작할 수 있는 일련의 행위를 말합니다. 즉 동적인 언어의 특징이라 말 할 수 있습니다. 프레임워크에서 유연성이 있는 동작을 위해 자주 사용하기도 합니다.
DB
– ORM이란 무엇인가요
ORM이란 객체와 관계형 데이터베이스을 중간에서 매핑하는 것입니다. SQL만 잘 작성하더라도 충분히 개발 할 수 있지만 SQL를 직접 작성하는 번거로운 작업을 줄여주고, 직접 계산하고 연산하는 부분을 지양해야 하기 때문에 이용됩니다.
– 정규화란 무엇인가요
정규화란 테이블의 데이터들간의 종속성, 중복성 등으로 인해 예기치 못한 오류를 제거 하는 과정이라 할 수 있습니다. 정규화를 진행했을 때 장점은 DB의 일관성을 향상시킬수 있습니다. 또한 DB의 논리적 구조를 견고하게 만들 수 있습니다. 하지만 테이블의 숫자가 늘어나고 결국 join 연산의 비용이 증가 하는 단점을 가질 수 있습니다.
– 무결성 제약조건이란 무엇인가요
데이터의 정확성과 일관성을 보장하기 위해 테이블 생성 시에 각 칼럼에 대해 정의하는 규칙을 의미합니다. 그로 인해 프로그래밍 과정을 줄일 수 있고, 데이터 오류 발생 가능성을 줄여줍니다.
– ERD란 무엇인가요
ERD란 계략적으로 데이터 및 데이터들의 관계를 표현한 도식화된 그림입니다. 조직의 데이터를 이해하고, 이를 응용시스템에 이용하고자 ERD를 작성합니다.
– 컬럼에 인덱스를 생성하는게 좋은지, 생성하지 않는게 좋은지 기술하시오
상황에 따라 다르다고 할 수 있습니다. 인덱스를 생성하려는 컬럼이 분포도가 좋아 활용도가 향상되거나 수정이 빈번하지 않다면 인덱스를 생성하는 것이 좋습니다. 하지만 인덱스 컬럼이 비교되기 전에 변형이 일어난 경우나 부정형으로 조건을 기술한 경우 인덱스를 생성 하지 않는 것이 좋습니다. 지나친 인덱스 선언은 많은 오버헤드(어떤 처리를 하기 위해 들어가는 간접적인 처리시간, 메모리 등을 말한다)를 발생 시킬 수 있습니다.
– 저장 프로시저(stored procedure)란 무엇인가
저장 프로시저란 한 개 이상의 복잡한 SQL Query문들을 데이터베이스에 저장하고 필요한 경우 호출해서 사용하는 객체입니다. 저장 프로시저를 사용 하면 트래픽을 감소 시킬 수 있고, 보안이 강화되며, 코드의 재사용이 가능하며, 유지 관리에 용이합니다.
– DBMS란 무엇인가요
데이터를 적절하고 효율적인 관리의 필요성으로 인해 등장한 체계적으로 데이터를 관리하는 시스템입니다. DBMS를 사용함으로써 사용자 중심의 데이터 처리가 가능하며, 중복성 통제, 데이터의 일관성 유지 등의 장점을 가지고 있습니다. 종류로는 관계형, 객체 지향형, 객체관계형 데이터베이스가 있습니다.
– JOIN은 언제 사용합니까
저희는 데이터 무결성과 중복성, 종속성을 해결하기 위해 테이블을 정규화 시켰습니다. 그렇기 때문에 여러 테이블에서 정보를 필요로 합니다. 그 때 사용하는 것이 JOIN입니다. 당연히 JOIN을 사용하기 위해서는 테이블간의 관계가 설정 되어 있어야 하며 이를 통해 테이블간의 행을 비교 하면서 필요로 하는 정보를 가져 올 수 있습니다.
– Primary key와 Foreign key를 비교하여 설명하시오
Primary key란 테이블에서 각 Row를 유일하게 구분하는 컬럼키입니다. Foreign key는 하나의 테이블에 있는 컬럼으로는 그 의미를 표현 할 수 없는 경우, 다른 테이블의 Primary key를 참조한 값입니다.
– JDBC란 무엇인가요
JDBC란 자바에서 데이터베이스와 관련된 작업을 처리할 수 있도록 도와주는 API입니다. JDBC의 특징을 말씀드리면 DBMS에 의존하지 않습니다. 그 이유는 자바애플리케이션으로부터 사용하는 JDBC드라이버매니저와 DBMS에 의존하는 JDBC드라이버를 분리했기 때문입니다. 또한 표준적인 SQL을 실행하는 메서드를 가지고 있기 때문입니다.
'Web Programming > java-jsp' 카테고리의 다른 글
java 경력 기술 면접 질문 리스트 (0) | 2018.08.29 |
---|---|
java 기술 면접 질문 리스트 (1) | 2018.08.29 |
Codility 자바 코딩실력 검증 (0) | 2018.08.29 |
java 소수 구하기 + 실행시간 단축 (0) | 2018.08.29 |
java 선형 큐(Linear Queue) (0) | 2018.08.29 |