본문 바로가기
면접 관련 질문

신입 웹개발자 예상 면접 질문

by blog-yj 2019. 3. 23.

자바의 특징

운영체제에 독립적, 멀티쓰레드 지원, 다양한 라이브러리 지원, 가비지 콜렉터에 의한 메모리 자동관리


자바의 메모리 영역

메서드영역 

static 변수, 전역 변수, 코드에서 사용되는 class 정보 등이 올라간다.

스택영역 

지역변수, 메서드 등이 할당되는 LIFO 방식의 메모리

힙영역  

new 연산자를 통해 동적 할당된 객체들이 저장되며, 가비지 콜렉터에 의해 메모리가 관리되어 진다.


자바 컴파일 과정

컴파일러가 소스코드를 바이트코트로 변환, JVM이 그 바이트코드를 기계어로 변환하여 인터프리터 방식으로 어플리케이션을 실행 


변수란?

하나의 값을 저장할 수 있는 메모리 공간이다.


객체란?

객체란 데이터와 데이터와 관련된 동작, 즉 절차,방법,기능 등을 모두 포함한 개념이다.


클래스란?

클래스란 객체의 속성과 연산을 정의하고 있는 틀이며, 메모리가 할당되지 않은 상태이다.


인스턴스란?

클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.


객체와 인스턴스의 차이

클래스의 타입으로 선언되었을 때 객체라고 부르고, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다. 


객체지향프로그래밍이란?

객체를 데이터로 취급하여 프로그래밍에 반영한 것 이며, 순차적으로 프로그램이 동작하는 기존의 것들과는 다르게 객체와 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다.


객체지향 특성

캡슐화

속성과 데이터를 처리하는 함수를 하나로 묶는 것이다. 

추상화

객체들의 공통적인 데이터와 기능을 도출하는 것이다. 

다형성 

하나의 메소드나 클래스가 다양한 방법으로 동작하는 것이다.(오버라이딩 오버로딩)

상속성  

새로운 클래스가 기존의 클래스의 자료와 연산을 이용하게 해주는 것이다.


오버라이딩과 오버로딩의 차이

오버로딩 

메소드의 명은 같지만 매개변수의 유형과 개수를 달리 하여 정의 하는 방법

오버라이딩  

상위클래스의 메소드를 자식 클래스가 상속 받아 재정의 하여 사용 하는 것 


가비지 컬렉션이란

시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것이다.


Primitive type과 Reference type

primitive type 

변수에 값 자체를 저장한다.

정수형 byte,short,int,long

실수형 float,double

문자형 char

논리형 boolean

reference type 

메모리상에  객체가 있는 위치를 저장한다.

종류 class,interface,array 등


Wrapper Class

primitive type으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한 기능을 지원하는 클래스


접근제한자

public 

같은 프로젝트 어디서든지 사용할 수 있다.

protected 

같은 패키지 내 또는 다른 패키지에서 상속받아 자손클래스에서 접근이 가능하다.

default  

같은 패키지내에서만 사용가능하다.

private 

같은 클래스 내에서만 사용가능하다.


제네릭이란

클래스에서 사용할 타입을 클래스 외부에서 설정하는 것. <>안에 들어갈 수 있는 것은 참조자료형(클래스,인터페이스,배열) 뿐. 기본자료형을 사용하기 위해선 wrapper 클래스를 이용해야 함. 


추상클래스와 인터페이스

추상클래스

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

인터페이스

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


공통점

new 연산자로 인스턴스 생성 불가능

프로토타입만 있는 메서드를 갖는다.

사용하기 위해서는 하위클래스에서 확장/구현해야 한다.

차이점

사용하는 키워드가 다르다.

Abstract는 일반 메소드를 사용할 수 있지만, Interface는 메서드 선언만 가능하다.


Call by Reference , Call by value

call by reference

클래스를 인수로 전달하며, 매개변수의 원래 주소에 값을 저장하는 방식이다.

call by value

주어진 값을 복사하여 처리하는 방식, 메서드 내의 처리 결과는 메서드 밖의 변수에 영향을 미치지 않는다. 인수로 기본 데이터형을 사용한다.


static의 의미

클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미 


ArrayList<>란

배열의 확장판, 배열의 크기를 임의적으로 변화시킬 수 있음, list에 들어갈 데이터 타입 설정 가능


hash란

내부적으로 배열을 사용하여 데이터를 저장, 검색속도가 빠름, 데이터 삽입/삭제시 기존 데이터를 밀어내거나 채우지 않고, 데이터와 연관된 고유한 숫자를 생성해 이를 인덱스로 사용


equals와 HashCode차이점

equals

동일한 내용을 가진 객체인지를 비교

hashcode 

동일한 객체인지 구별하기 위해 고유한 정수값으로 출력


stack과 queue의 차이

stack 

LIFO 함수를 호출 할 때 현재 함수 함수에서 사용되는 값을 스택에 넣고, 작업이 끝나면 함수를 리턴하고 스택에 넣었던 값을 꺼내는 방식으로 동작

queue 

FIFO 프로세스 처리, CPU처리 프린터 큐 등에 사용


Vector와 ArrayList의 차이

vector 

동기식. 한 스레드가 벡터 작업중이면 다른 스레드가 벡터 보유할 수 없다. 

ArrayList 

비동기식. 여러스레드가 arraylist에 동시에 작업 가능


String,StringBuilder,StringBuffer의 차이

String 

객체는 한번 생성이 되면 변경이 불가능

StringBuilder와  StringBuffer의 차이점은 멀티쓰레드 상태에서 동기화의 지원 여부가 다릅니다

StringBuffer은 멀티쓰레드 환경에서 동기화를 보장하지만 StringBuilder는 동기화를 보장하지 않는다.


Thread 

쓰레드란 프로세스 내에서 동시에 실행되는 독립적인 실행 단위를 말한다.

장점 - 빠른 프로세스 생성, 적은 메모리 사용, 쉬운 정보 공유

단점 - 교착상태에 빠질 수 있다.


Process

운영체제에 실행중인 하나의 프로그램(하나 이상의 쓰레드를 포함)


교착상태 

다중프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행할 수 없는 어떤 특정시간을 기다리고 있는 상태 


컬렉션프레임워크

List 인터페이스

배열과 유사하되, 추가할때마다 자동으로 Boundary를 늘려주는 구조로, 중복된 데이터를 허용하며, 순서가 존재한다.

arraylist 

배열로 구현됬으며, 인접해 있기 때문에 데이터 조회에 매우 빠르지만, 빈번한 삽입, 삭제시 새로 배열을 만들고 데이터를 옮겨야 하기 때문에 linkedlist에 비하여 속도가 느리다.

linkedlist

링크 구조로 되어 있기 때문에 조회는 arraylist에 비해 느리지만, 삽입 삭제시 링크를 끊고 새로 추가되는 데이터에 링크만 연결하면 되기 때문에 삽입, 삭제에 유리하다.

vector 

구현 방식은 arraylist와 유사하지만 vecotr를 개선한 것이 arraylist이다. 또한 vector의 경우에는 arraylist와 달리 동기화가 걸려있어 여러 쓰레드에서 동시에 접근할 수 없다.


set 인터페이스

집합처럼 중복된 데이터를 허용하지 않으며, 순서가 없다.

hashset 

요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않으며, 해시 알고리즘을 사용하여 검색속도가 매우 빠릅니다.

treeset 

순서가 있는 hashset으로 이진 트리 구조로 만들어 졌다. 순서에 맞게 정렬되어 저장되기 위해서 comparable을 구현해야 한다.

map 인터페이스

key와 value 쌍으로 데이터를 저장하며, key는 중복 될 수 없고, value는 중복 저장이 가능하다.

hashmap

treemap

properties 

key value 쌍으로 저장되지만 value의 타입이 string만 가능하다.

hashtable

hashmap과 구조는 같으며, 단지 동기화가 되어져 있다는 점이 다른점이다.


싱글톤 패턴

전체 코드에서 하나의 객체만 존재할 수 있도록 이미 생성된 객체가 있으면 그 객체를 사용하도록 하는 방식이다.

팩토리 패턴

객체간 의존성을 줄이기 위해 객체의 생성과 주입만 담당하는 Factory class를 정의하고 개발 코드 부문에서는 생성된 객체를 가져다 사용함으로써 의존성을 줄이는 방식

옵저버 패턴

하나의 객체가 다른 객체에 객체가 변했다는 사항을 알려주어야 할 경우에 주로 사용된다.


TCP의 UDP의 차이점

TCP

연결형 서비스 제공, 높은 신뢰성 보장, 연결의 설정, 연결의 해제, 데이터 흐름 제어, 혼잡 제어, (전이중, 점대점 서비스[양방향 송수신 서비스]), 양방향 통신

UDP

비연결형 서비스 제공, 신뢰성이 낮음, 데이터의 전송 순서가 바뀔 수 있음, 데이터 수신 여부 확인 안함,TCP보다 전송 속도가 빠름, 단방향 통신


TCP

연결형 서비스를 지원하는 전송계층 프로토콜, 인터넷 환경에서 기본으로 사용한다.

호스트간 신뢰성 있는 데이터 전달과 흐름제어 및 혼잡제어 등을 제공하는 전송계층


UDP

비연결형 서비스를 지원하는 전송계층 프로토콜, 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고, 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜, 보내는 쪽에서는 받는 쪽이 데이터를 받았는지 받지 않았는지 확인할 수 없고, 또 확인할 필요도 없도록 만들어진 프로토콜


JDBC(Java Database Connection)

자바를 통해 데이터베이스에 접근할 수 있는 프로그래밍을 의미한다.


Database에서 Index란?

인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. 

인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.

고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다.

인덱스를 저장하는데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다.

사용자는 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위하여 인덱스를 생성하고 사용한다.

DB에서 자료를 검색하는 두 가지 방법

FTS(FULL TABLE SCAN) 테이블을 처음부터 끝까지 검색하는 방법

INDEX SCAN 인덱스를 검색하여 해당 자료의 테이블을 액세스 하는 방법


DB의 View(가상 테이블이란)?

허용된 데이터를 제한적으로 보여주기 위해 하나 이상의 테이블에서부터 유도된 가상 테이블 

=> 사용자가 view에 접근했을 때 해당하는 데이터를 원본에서 가져옴 

뷰에 나타나지 않는 데이터 보호 가능 + 편의성


DB의 정규화란?

관계형 데이터베이스에서 중복을 최소화하기 위해서 데이터를 구조화하는 방법이다.


이상현상

테이블 내의 데이터 중복성에 의해서 발생되는 데이터 불일치 현상이다

삽입,삭제,갱신 이상현상


DB 트리거란?

자동으로 실행되도록 정의된 저장 프로시저. INSERT/UPDATE/DELETE 문에 대한 응답으로 자동 호출

업무 규칙을 보장, 업무 처리 자동화, 데이터 무결성 강화를 위해 사용한다


DB 설계시 가장 중요한 것은?

무결성을 보장하는것

무결성 보장방법은?

대표적으로 사용되는 방법은 중앙 통제에 의한 데이터 갱신으로서, 이 방법은 검증은 프로그램을 이용하여 모든 갱신 처리 과정에서 반드시 검증 단계를 거치도록 통제를 가한다.


DB 무결성이란?

무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다.


DB무결성의 종류

널 무결성 

릴레이션의 특성속성 값이 Null이 될 수 없도록 하는 규정

고유 무결성 

릴레이션의 특정 속성에 대해서 각 튜플이 갖는 값들이 서로 달라야 한다는 규정

참조 무결성 

외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정 즉 릴레이션은 참조할 수 없는 외래키 값을 가질수 없다는 규정

도메인 무결성

특정 속성의 값이, 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정

키 무결성

하나의 테이블에는 적어도 하나의 키가 존재해야 한다는 규정


JDBC와 ODBC 차이

JDBC

자바에서 db에 접근하여 데이터를 조회/삽입/수정/삭제 가능

연결해주는 응용프로그램 인터페이스인 자바 API DBMS 종류에 따라 그에 맞는 JDBC를 설치해야함

ODBC

응용프로그램에서 DB 접근을 위한 표준 개방형 응용 프로그램 인터페이스. MS사에서 만들어진 것

DB2/EXCEL/TEXT 등 여러 종류의 데이터에 접근할 수 있다.


Servlet,JSP

servlet란 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램이며 container가 이해할 수 있게 구성된 java소스에 html코드가 삽입된다.

jsp는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다

servlet class는 컴파일 과정과 등록과정이 필요하지만 jsp는 필요없다.

servlet 보다는 jsp 디자인과 로직에 대한 구분이 명확해서 유지보수가 용이하다.


GET과 POST 방식

GET 방식

클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 "이름"과 "값"이 스트링 형태로 전달

주소창에 쿼리 문자열이 그대로 보여지기 때문에 보안성이 떨어진다.

길이에 제한이 있다.

POST방식보다 상대적으로 전송 속도가 빠르다.


POST 방식

일정 크기 이상의 데이터를 보내야 할 때 사용한다.

서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 한다.

주소창에 전송하는 데이터의 정보가 노출되지 않아 GET방식에 비해 보안성이 높다 

속도가 GET방식 보다 느리다.


DELETE 방식 PUT/PATCH 방식

DELETE

RESTFUL에서 삭제 기능을 할 때 주로 사용하는 방식

PUT/PATCH

RESTFUL에서 수정 작업을 할 때 주로 사용하는 방식 


RESTFUL이란?

하나의 URI는 하나의 RESOURCE를 대표하도록 설계하는 방식


session과 cookie

사용이유

현재 우리가 인터넷에서 사용하고 있는 http 프로토콜은 연결 지향형 성격을 버렸기 때문에 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지간의 관계가 지속되지 않는다. 이에 따라 http 프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.


session

특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.

session에 관련된 데이터는 server에 저장된다.

웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.

cookie에 비해 보안성이 좋다.


cookie

cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써, server가 아닌 client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.


cookie는 client pc에 저장되는 정보기 때문에, 다른 사용자에 의해서 변경이 가능하다(정보 유출 가능,session 보다 보안성이 낮다)


쿠키 대신 세션을 사용하지 않는 이유?

모든 정보를 session에 저장하면 server의 메모리를 과도하게 사용하게 되어 server에 무리가 감


FILTER와 INTERCEPTOR 방식의 차이

filter

dispatcher servlet 앞단에서 정보를 처리하고, interceptor는 dispatcher servlet에서 handler(controller)로 가기전에 정보를 처리한다. 

필터

j2ee 표준 스펙에 정의 되어 있는 기능이며, 인터셉터의 경우 springframework에서 자체적으로 제공하는 기능이다.


자바와 자바스크립트의 차이

자바 

객체지향 프로그래밍 언어로 시스템 개발, 안드로이드용 어플리케이션 개발에 사용

자바스크립트

사용자와 웹사이트가 상호작용하는데 도움을 주는 스크립트 언어, 사용자가 어떠한 액션을 취했을 때 다른 페이지 열지 않고 변화된 결과를 즉각적으로 보여줌. 페이지의 동적 제어


MVC 패턴

비즈니스 로직과 사용자 인터페이스를 분리하여 개발하는 디자인 패턴.

model은 데이터 view는 사용자 인터페이스 요소 controller는 모델과 뷰의 상호작용을 관리한다.

장점- 코드의 가독성,확장성,유지보수성을 늘릴 수 있고, 코드의 중복 최소화

단점- 설계 시간이 오래걸리고 숙련된 개발자가 필요하며, model과 view의 완벽한 분리가 어렵다(의존적)


MVC1 VS MVC2

view와 controller 기능이 구분되어 있는지 차이가 있다.

mvc1

jsp가 view와 controller 기능을 모두 처리하지만

mvc2

분리하여 처리한다.


FRONT CONTROLLER 패턴

mvc 패턴과 함께 사용하는 패턴으로 모든 리소스요청을 처리해주는 하나의 컨트롤러를 두는 패턴이다.

장점 - 모든 요청을 하나의 컨트롤러를 통해 작업을 한 곳에서 수행할 수 있다.

추적이나 보안을 적용할 때 하나의 컨트롤러에 하기 때문에 편하다.

파일 구조가 바뀌어도 url을 유지할 수 있다.


MVP 패턴

model과 view의 의존성 분리

presenter(view에서 요청한 정보를 model로부터 가공하여 view로 전달)

단점 - view와 presenter가 강한 의존성을 가짐


MVVM (Model -View- ViewModel) 패턴

mvvm 패턴은 mvc 패턴의 변형으로 뷰의 추상화를 만드는 것이 핵심이다. 뷰의 추상화는 재사용할 수 있고 테스트하기 쉽다. 뷰의 추상화를 통해 응용프로그램 구조는 단순해지고, 이상적으로, 시작 디자인과 표현 논리를 독립적으로 구현할 수 있다.


프레임워크란

뼈대가 이미 만들어져 있어서 거기에 살만 붙이면 완성이 되도록 공통된 함수 또는 클래스를 미리 만들어 놓는 것이다.


Spring FrameWork

자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크

스프링 특징

경량 컨테이너로서 자바 객체를 직접 관리

각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.

스프링은 POJO방식의 프레임워크

일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현학허나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.

스프링은 제어의 역행을 지원

컨트롤러의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.

스프링은 의존성 주입을 지원

각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.

스프링은 관점 지해야 프로그래밍을 지원

따라서 트랜잭션이나 로깅,보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.

스프링은 확장성이 높음

스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.


Spring AOP란?

aop는 aspected oriented programming 관점 지향 프로그래밍의 약자로, 기존의 oop에서 기능별로 class를 분리했음에도 불구하고, 여전히 로그, 트랜잭션, 자원해제, 성능테스트 메서드 처럼 공통적으로 반복되는 중복코드가 여전히 발생하는 단점을 해결하고자 하는 방식으로

이러한 공통 코드를 횡단 관심사라 표련하며 개발코드에서는 비즈니스 로직에 집중하고 실행시에 비즈니스 로직 앞,뒤 등 원하는 지점에 해당 공통 관심사를 수행할 수 있게 함으로써 중복 코드를 줄일 수 있는 방식이다.


Spring DI란?

DI는 Dependency Injection(의존성 주입)의 약자로, 객체들 간의 의존성을 줄이기 위해 사용되는 spring의 IOC 컨테이너의 구체적인 구현 방식입니다.

DI는 기존처럼 개발코드 부분에서 객체를 생성하는 것이 아니라, 팩토리 패턴처럼 객체의 생성과, 데이터를 주입만 담당하는 Factory에 해당하는 별도의 공간에서 객체를 생성하고 데이터간의 의존성을 주입해 개발코드에서는 이를 가져다 씀으로써 의존성을 줄이는 방식이다.


의존성

의존성이란 서로 다른 모듈 간의 관계로써 둘 중 하나가 다른 하나를 어떤 용도를 위해 사용하는 것을 의미한다.


리눅스와 유닉스의 차이

리눅스

유닉스의 장점을 포함한 유닉스와 거의 닮은 운영체제

유닉스

서버용 운영체제, 암호화 능력이 좋고 안정성과 메모리 관리 능력이 좋음


ERP란?

기업 자원관리(Enterprise Resource Planning) 기업 전체의 인적, 물적 자원을 효과적이며 통합적으로 관리하며 경영의 효율화와 기업 경쟁력을 강화하는 솔루션입니다. 생산, 판매, 인사, 회계 등 기업의 전반적인 업무 프로세스를 하나의 체계로 구축하며 정보를 공유하고 신속한 업무처리를 도와주는 시스템


JAVA EE와 SE의 차이점

JAVA SE

java platform standard edition의 약자로 데스크톱, 서버, 임베디드를 위한 표준 자바 플랫폼을 말한다.

안드로이드를 개발할 때 보통 java se로 개발을 한다.

JAVA EE

java platform enterprise edition의 약자로 자바를 이용한 서버측 개발을 위한 플랫폼이다.

se에 서버측을 위한 기능을 추가하여 se의 모든 기능을 이용할 수 있다.


오라클과 mysql의 차이 

오라클

대규모 트랜잭션로드를 처리하고 성능을 최적화하기 위해 여러 서버에 대용량 DB 분산

절차적 언어를 통해 DB 내 내장된 프로그램의 작성을 지원함

MYSQL

단일 DB로 제한되어있어, 매일 수백만번 액세스하는 대용량 DB에는 부적합