기술 면접 예상 질문 - 2
기술 면접 2020. 11. 10. 18:529. Session과 Cookie
Session과 Cookie 사용 이유
- HTTP 프로토콜은 비연결 지향적으로 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지간의
관계가 지속되지 않는다. 이에 따라 HTTP 프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에
그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.
Session
- 일정 시간동안 같은 사용자 (브라우저)로 부터 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술
- 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한 번의 방문을 의미함
- Session에 관련된 데이터는 Server에 저장된다.
- 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.
- Cookie에 비해 보안성이 좋다.
- 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 간다.
- Session에서는 String 타입말고 다른 타입도 저장할 수 있다.
Cookie
- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.
- Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호 등의 방문한 사이트의 정보를 담은
임시 파일로써, Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버에 방문할 경우 웹서버에서는 그가 누구인지,
어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.
- Cookie는 Client PC에 저장되는 정보이기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다. (정보 유출 가능, Session보다 보안성이 낮다.)
- 또한 Cookie에서는 String 타입밖에 저장되지 않는다.
10. MVC 패턴 (Model 2방식)
- MVC 패턴은 코드의 재사용성이 유용하며, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고
많은 개발자들이 평가하고 있는 방식이다.
- Model 1방식 (jsp 페이지에 모든 요소를 작성) 은 페이지수는 줄어들긴 하지만 유지보수가 힘들고, 재사용성이 떨어진다.
MVC 구성요소
- Model : 소프트웨어 응용과 그와 관련된 고급 클래스 내의 논리적 데이터 기반 구조를 표현.
- View : 사용자 인터페이스 내의 구성요소들을 표현 (사용자에게 보여지는 화면)
- Controller : Model과 View를 연결하고 흐름을 제어하는 클래스, Model과 View 사이의 정보를 교환하는데 사용
11. Interface, Abstract
Interface
- 오직 추상method와 상수만을 멤버로 갖는다. (JDK 1.8 부터는 static method와 default method도 가능함)
- static method : 인터페이스를 구현한 클래스에서 객체 생성없이 인터페이스 이름으로 호출 가능한 method, 오버라이드도 가능함
- default method : 기존 인터페이스에 새로운 method를 추가하게 되면 인터페이스를 구현한 모든 클래스들의 코드가 변경되어야 함.
이 때 default 키워드를 붙이면 선택적으로 method를 구현하게 할 수 있다.
- implements 키워드 사용
- 상속 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있도록 한다.
- extends는 하나의 클래스만 상속 가능하나 interface는 다중 구현이 가능하다.
abstract class (추상 클래스)
- 추상 method를 하나 이상 가진 클래스
- 자신의 생성자로 객체 생성 불가능
- 하위 클래스를 참조하여 상위 클래스의 객체를 생성
- 상위 클래스의 자료형으로 하위 클래스를 제어하기 위해 사용
interface vs abstract
공통점
- new 연산자로 인스턴스 생성 불가능
- 프로토타입 (미완성 버전, 시스템의 초기 모델) 만 있는 method를 갖는다.
- 사용하기 위해서는 하위 클래스에서 확장 / 구현 해야 한다.
차이점
- 사용하는 키워드가 다르다.
- Abstract는 완성된 method를 사용할 수 있지만, Interface는 추상 method와 static, default method 선언만 가능하다.
12. Call by Reference, Call by Value (얕은 복사, 깊은 복사)
Call by Reference - 매개 변수의 원래 주소에 값을 저장하는 방식, 클래스 객체를 인수로 전달한 경우에 사용
Call by Value - 기본 데이터형을 사용, 주어진 값을 복사하여 처리하는 방식, method 내의 처리 결과는 method 밖에 변수에 영향을 미치지 못한다.
13. Static의 의미
- 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미한다.
- 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재 (객체와 무관한 키워드)
14. Framework
- 특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스 프레임과 인터페이스 프레임의 집합
- 특정한 틀을 만들어 놓고 거기에 살을 붙여 놓음으로써 작업시간을 줄여준다.
- 프레임워크는 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다.
- 프레임워크는 이렇게 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.
- 프레임워크 컴포넌트들은 재사용이 가능하다.
- 프레임워크는 좀 더 높은 수준에서 패턴을 조작한다. (대신 세부적인 제어가 어려움)
- 프레임워크가 중요한 이유는 객체지향 개발을 하게 되면서 개발자의 취향에 따라 다영한 프로그램이 나오게 되는데,
프로그램 개발에 투입되는 개발자도 점점 늘어남에 따라 전체 시스템의 통합성, 일관성이 부족하게 되었기 때문
프레임 워크가 가져야할 특징
a. 개발자들이 따라야 할 가이드라인을 가진다.
b. 개발할 수 있는 범위가 정해져 있다.
c. 개발자를 위한 다양한 도구들이 지원된다.
프레임 워크의 장 / 단점
장점 - 개발 시간을 줄일 수 있고 오류로부터 자유로울 수 있다.
단점 - 프레임워크에 너무 의존하면 개발 능력이 떨어져서 프레임워크 없이 개발하는 것이 불가능해질 수 있다.
※ Garbage Collection (가비지 컬렉션) ※
시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로
시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다.
정적 할당 - 컴파일 할 때 메모리를 확보, 변수 이름으로 접근, 코드 블록이 종료되면 자동으로 회수됨 (ex - int a)
동적 할당 - 실행하면서 메모리 확보, 참조 변수로 접근, 코드 블록이 종료되어도 자동으로 회수되지 않음, 가비지 컬렉션을 사용 (ex - new int[5])
15. Primitive type (기본자료형) 과 Reference type (참조자료형)
Primitive type - 변수에 값 자체를 저장 (실제 값을 저장) 정수형 : byte, short, int, long 실수형 : float, double 문자형 : char 논리형 : boolean - Primitive type는 Wrapper Class를 통해 객체로 변형할 수 있다. 예) int -> Integer, char -> Character (int와 char를 제외한 Primitive type의 다른 자료형들은 맨 앞 알파벳을 대문자로 바꿔주면 된다. float -> Float) |
Reference type - 메모리상에 객체가 있는 위치를 저장 (객체의 번지 값을 저장) 종류 - class, interface, array 등 |
출처
https://www.youtube.com/watch?v=CbYdP2sOvig&list=PLY9pe3iUjRrS38DxC5Fq5st9_hQhvyy3H&index=7
'기술 면접' 카테고리의 다른 글
경력직 기술 면접 예상 질문 - 1 (0) | 2024.10.29 |
---|---|
기술 면접 예상 질문 - 3 (0) | 2020.11.10 |
기술 면접 예상 질문 - 1 (0) | 2020.11.10 |