본문 바로가기

개발자 취준생 면접 공부 후기

웹 기술 면접

# Servlet, JSP

Servlet이란 서버 어플리케이션의 조각(Server Application Let)으로 생각하면 쉽다.

Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것이다. (HTML in JAVA)

JSP(Java Server Page) HTML 소스 코드 속에 자바 소스코드가 들어가는 구조를 갖는 웹 어플리케이션 프로그래밍 기술(JAVA in HTML)

 

# GET POST 방식

1) GET 방식

- GET 방식이란 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 주소명이 결합된 스트링 형태로 전달되는 방식이다.

- 주소창 URL에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.

- 길이에 제한이 있어 데이터를 보내는데 제한적이다.

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

# POST 방식

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

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

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

- 쿼리스트링 데이터 뿐만 아니라, 라디오 버튼, textarea, hidden 같은 객체들의 값도 전송이 가능하다.

- 헤더에 데이터를 넣어 보내기 때문에 보안에 GET방식 보다 유리하며, 데이터 길이에 제한이 없다.

- GET방식에 비해 속도가 느리다.

 

# GET방식과 POST방식의 차이점

- GET방식은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용한다.

- POST방식은 웹 브라우저가 웹 서버에 데이터를 전달할 때 사용한다.

- GET방식은 전달되는 데이터가 255개의 문자가 초과하면 문제가 발생할 수 있다.

- 웹 서버에 많은 데이터를 전달하기 위해서는 POST방식을 사용하는 것이 바람직하다.

 

# Seesion(세션) Cookie(쿠키)

1) Session(앞글자 S, 서버에 저장)

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

- Session에 관련된 데이터는 Server에 저장된다.

- Cookie에 비해 보안성이 좋다. (사용자에게 저장되지 않기 때문이다.)

2) Cookie(앞글자 C, 클라이언트에 저장)

- 사용자 정보를 유지할 수 없다는 Http의 한계를 극복할 수 있는 방법

- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.

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

- Cookie Client PC에 저장되는 정보이기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하여 정보 유출이 가능하다.

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

- 세션을 사용하여 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 있기 때문에 보안이 낮더라도 쿠키를 사용한다.

 

# MVC 패턴이란,

애플리케이션을 Model, View, Controller 영역으로 구분하여 개발한다. 영역간의 결합도를 최소화한 디자인 패턴이다.

디자이너, 개발자 영역이 분리되어 분업화가 쉬워지며 유지보수에 용이하다.

 

# MVC 구성요소

- Model: 애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는 영역이다.

- View: 사용자 인터페이스 내의 구성 요소들을 표현(사용자에게 보여지는 화면, java를 통해 구현)

- Controller: Model View를 연결하고 있는 클래스를 대표하며 Model View내의 클래스들 간 정보 교환에 사용된다.

 

# Framework

- Framework란 소프트웨어 제작을 편리하게 할 수 있도록 미리 뼈대를 이루는 클래스와 인터페이스를 제작하여 이것을 모아둔 것이다.

- 장점: 프레임워크를 사용하게 되면 개발 생산성이 증가하며 품질이 향상되고 유지보수가 편리하다는 장점이 있다.

- 단점: 반면에 익숙해지는데 시간이 오래 걸리면서 유연성이 부족하며 언어가 아닌 프레임워크를 배우게 되어 실력향상이 더디는 부작용이 있다.

 

# Framework 가 등장한 이유

- 객체지향 개발을 하면서 개발자의 취향에 따라 다양한 프로그램이 나타난다.

프로그램 개발에 투입되는 개발자도 점점 늘어남에 따라 전체 시스템의 통합성, 일관성이 부족하기 때문에 Framework가 만들어지게 되었다. 대표적으로 Spring Framework가 있다.

 

# 스프링 프레임워크와 전자정부 프레임워크의 차이점

- 스프링 프레임워크는 전자정부 프레임워크 기반의 기술을 사용하고 있어 스프링을 필요한 기술을 주입해야 하는 반면 전자정부 프레임워크는 필요 없는 기술들을 덜어내는 차이가 있다.

# 전자정부 프레임워크란, 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하는 프레임 워크이다.

 

# 라이브러리와 프레임워크의 차이

프레임워크는 큰 틀을 제공하고 내 코드는 프레임워크 틀 안에 맞춰서 작성해야 한다.

큰 뼈대는 이미 잡혀있고 그 안에 내용물을 채운다고 생각하면 된다. 작동할 때 코드 실행 흐름을 보면 프레임워크가 내 코드를 호출한다.

반면에 라이브러리는 사용할 수 있는 함수들의 모음으로, 내가 라이브러리를 호출해서 능동적으로 사용한다.

정리: 프레임워크() - 나의 코드() / 나의 코드() – 라이브러리()

 

# Spring Framework의 간단한 특징

- 크기와 부하의 측면에서 경량이다.

- 제어의 역전(IoC)라는 기술을 통해 애플리케이션의 느슨한 결합을 도모한다.

- 관점지향 프로그래밍(AOP)을 위한 풍부한 지원(AOP: 객체지향프로그래밍을 더 객체 지향답게 만들어준다.)

 

# 제어의 역전(IoC)이란,

스프링 컨테이너가 필요에 따라 개발자 대신 Bean들을 관리(제어)해주는 행위

일반적인 상황에서 개발자가 직접 객체를 제어해야 했다. new 연산자를 통해 객체를 생성하고, 객체의 의존성을 맺어주고, 초기화를 해주고 등등

하지만 Spring에서는 xml파일 또는 어노테이션 방식으로 스프링 컨테이너에 Bean(객체)를 등록하기만 하면,

스프링 컨테이너에서 Bean의 생명주기(생성 -> 의존성 설정 -> 초기화 -> 소멸)를 전부 관리해준다.

, 객체에 대한 제어권이 컨테이너로 역전되기 때문에 제어의 역전이라고 하는 것 이다.

 

장점)

- 개발자는 객체 관리에 덜 신경 쓸 수 있게 되어 다른 부분에 더 집중할 수 있게 된다.

- 느슨한 결합을 이용하여 객체 간 의존 관계를 쉽게 변경할 수 다.

따라서, 코드의 재사용성과 유지보수성을 높일 수 있다.

 

# AOP(Aspect-Oriented Programming)

사용자의 관점에서 주 업무 로직과 개발자의 관점 또는 운영자의 관점의

보조 업무 로직을 어떻게 분리하고 결합하여 프로그램을 만들 것인가? 에 대한 방법론.

 

[과거]

과거에는 Cross-cutting 하는 것이 쉽지 않았다.

주 업무 소스코드에 직접 보조 업무 소스코드가 박혀 있기때문에 소스코드를 직접 손댔어야 했기때문이다.

=> 위와 같은 이유로 수정 후 배포 작업이 매번 번거로웠다.

 

[AOP 방법론 적용]

이러한 단점을 극복하고자 AOP 방법론이 등장하였다.

 

보조 업무의 Aspect(관점) 코드를 직접 주 업무 소스코드에 꽂아 넣지 않고,

마치 꽂아 넣은 것 처럼 실행 될 수 있도록 하는 방법론이다.

(물리적으로는 따로 분리되어있지만, 논리적으로는 하나로 이루어져있는 것처럼 실행된다.)

 

 

 

 

 

[출처]

kim-hoya.tistory.com/37

velog.io/@damiano1027/Spring-의존성-주입-제어의-역전

'개발자 취준생 면접 공부 후기' 카테고리의 다른 글

면접 질문 모음  (0) 2021.01.18
알고리즘 기술 면접  (0) 2021.01.08
자바 기술 면접  (0) 2021.01.06