💡 GET과 POST의 차이점은?
: GET은 주로 웹 브라우저가 웹서버에 데이터를 요청할 때 사용되고,
POST는 웹브라우저가 웹 서버에 데이터를 전달하기 위해서 사용된다.
GET
- 웹브라우저에서 웹서버로 전달되는 데이터가 인코딩되어 URL에 붙는다.
- 주소 뒤에 "이름"과 "값"이 결합된 스트링형태로 전달.
- 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안을 요하는 전송에는 부적합하다.
- 길이에 제한이 있다.(전송 스트링이 너무 길면, 255글자 이상은 전송이 안된다.)
- post방식보다 상대적으로 속도가 빠르다.
- HTML FORM에서 method="get/post"를 지정하지 않으면 기본으로 GET방식으로 넘어간
다.
POST
- 일정 크기 이상의 데이터를 보내야 할때 사용한다.(255글자 이상의 긴 정보를 보낼 때 사
용한다.) - 서버로 보내기 전에 인코딩(일종의 암호화)하고, 전송 후 서버에서는 다시 디코딩(원상복
귀) 작업을 한다. - 속도가 GET 방식보다 느리고, 주소창에 보이지 않으니 좀 더 안전하다.
- 쿼리스트링(문자열) 말고, "라디오 버튼", "텍스트 박스", "텍스트 에어리어"같은 객체들의
값도 보낼 수 있다.
💡 Session과 Cookie의 차이점과 사용용도?
Session
- 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.
- Cookie와는 다르게 개인 아이디와 비밀번호와 같은 웹사이트의 데이터는 Client가 아닌 Server에 저장되거나 웹브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.
Cookie
- 사용자 정보를 유지할 수 없다는 HTTP고유의 한계를 극복할 수 있는 방법으로 인터넷 웹사이트의 방문 기록을 남겨 사용자와 웹사이트 사이를 매개해 주는 정보이다.
- Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써, Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.
사용이유
- 현재 우리가 인터넷에서 사용하고 있는 HTTP프로토콜은 연결 지향적인 성격을 버렸기 때문에 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다.
- 이에 따라 HTTP프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.
💡 String과 StringBuffer의 차이점은?
String text = "Java";
text = text + " String";
System.out.println(text); // Java String
JDK 5 이전에는 String 문자열을 더하면 새로운 String 객체가 생성되고, 기존 객체는 쓰레기가 되어 나중에 GC(Garbage Collection)의 대상이 되었다. 이것이 반복되면 쓰레기가 계속 생성될 것이고 성능적인 문제점을 야기한다.
String
- String은 불변(Immutable)의 속성을 갖는다는 점이다.
- String 객체는 한 번 값이 할당되면 그 공간은 변하지 않는다.
StringBuffer
- 문자열을 사용할 때, 문자열을 실행시간에 변경할 수 있다.
- 가변적인 길이를 가지므로 객체를 생성하는 시점에서 미리 그 크기나 값을 지정할 수 있다.
- 실행시간에 버퍼의 크기를 바꾸는 기능도 제공한다.
📌 할당된 공간이 변하지 않는 특성을 불변(Immutable), 할당된 공간이 변하는 특성을 가변(mutable)라고 한다.
📌 String 클래스의 단점을 보완하기 위해 나온 클래스가 바로 StringBuffer와 StringBuilder다.
두 클래스에서 제공하는 메소드는 동일하다. StringBuffer와 StringBuilder는 문자열을 더해도 새로운 객체를 생성하지 않는다. 두 클래스는 append() 메소드를 가장 많이 사용하며, 매개 변수로 모든 기본 자료형과 참조 자료형을 포함한다.
💡 서블릿의 라이프 사이클에 대해 설명하세요.
- 서버를 실행시키는 순간 서블릿의 생성자가 호출된다.
- 생성자를 호출해서 객체가 생성되면 초기화 작업을 한다.
(init() 메소드가 최초 한번만 자동적으로 호출된다.) - 초기화 작업 후에는 Service메소드가 호출이 된다.
(req, res를 통해 data get, logic 구현등의 작업이 일어난다.
→ Service메소드는 클라이언트가 요청할 때마다 호출이 된다.) - 마지막으로 서버가 종료되는 시점에 destroy()메소드가 호출된다.
(혹은 서버 재시작 시에 자원 반납을 위해서 호출된다.)
💡 XML 이란?
XML(extensible markup language)이란 구조화된 문서를 웹상에서 구현할 수 있는 인터넷 프로그래밍 언어를 말한다.
문서의 구조적인 정보를 갖고 있는 XML 문서는 웹상에서 검색의 용이함과 체계적이고 일관적인 접근, 재가공의 용이함 때문에 HTML과 인터넷 표준 문서 포맷이 되었다.
- HTML과 매우 비슷한 문자 기반의 마크업 언어이다.
- 사람과 기계가 동시에 읽기 편한 구조로되어있다.
- HTML처럼 데이터를 보여주는 목적이 아닌 데이터를 저장하고 전달하는 목적으로 만들어졌다.
- XML 태그는 HTML 태그 처럼 미리 정의 되어 있지 않고, 사용자가 직접 정의할 수 있다.
💡 JSON이란?
- 자바 스크립트의 객체를 만드는 표현식으로 key,value로 이루어져 있다.
- 경량의 data를 교환하는 방식
- XML 대체해서 데이터 전송 등에 많이 쓰인다.
💡 XML과 JSON의 공통점과 차이점
공통점
- 데이터를 저장하고 전달하기 위해 고안되었다
- 기계 뿐아니라 사람도 쉽게 읽을 수 있다.
- 계층적인 데이터 구조를 가진다.
- 다양한 프로그래밍 언어에 의해 파싱될 수 있다.
- XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있다.
차이점
'📌ETC > Tech Interview' 카테고리의 다른 글
신입 개발자 기술면접 질문 정리 #6 (0) | 2022.09.20 |
---|---|
신입 개발자 기술면접 질문 정리 #5 (1) | 2022.09.16 |
신입 개발자 기술면접 질문 정리 #4 (0) | 2022.09.16 |
신입 개발자 기술면접 질문 정리 #2 (0) | 2022.09.16 |
신입 개발자 기술면접 질문 정리 #1 (1) | 2022.09.15 |