백엔드 개발 기술면접 정리 (개발기본)

희소·2021년 10월 11일
5

기술면접 정리

목록 보기
3/5
post-thumbnail

기술면접 질문 List - 개발기본

1. GET방식과 POST 방식의 차이점을 설명하시오.

Get
: 클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 "이름"과 "값"이 결합된 스트링 형태로 전달
: 주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어짐
: 길이제한이 있음
: Post방식보다 상대적으로 전송 속도가 빠름

Post

: 일정 크기 이상의 데이터를 보내야 할 때 사용
: 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 함
: 주소창에 전송하는 데이터의 정보가 노출되지 않아 Get방식에 비해 보안성이 높음
: 속도가 Get방식보다 느림
: 쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스 같은 객체들의 값도 전송가능

차이점
: Get은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용
: Get은 사용하면 웹 브라우저에서 웹 서버로 전달되는 데이터가 인코딩 되어 URL에 붙음
: Get방식은 전달되는 데이터가 255개 문자를 초과하면 문제가 발생할 수 있음
: Post는 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용
: Post는 전달되는 데이터가 보이지 않음
: 웹 서버에 많은 데이터를 전달하기 위해서는 Post 사용하는게 바람직함
다는 것은 아니지만 URL에 데이터가 노출되지 않아 GET보다는 안전합니다.

2. http란? 메소드도

:클라이언트와 서버가 웹페이지를 주고받는 통신규약.

주요 메소드 5가지
GET은 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달한다. 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않는다. (리소스 조회)
POST는 데이터 요청을 처리하고, 메시지 바디를 통해 서버로 데이터를 전달한다. 주로 신규 리소스를 등록하거나 프로세스 처리에 사용된다. (요청 데이터 처리)
PUT은 리소스가 있으면 대체하고 리소스가 없으면 생성한다. 쉽게 말해 데이터를 덮어쓴다.(리소스를 대체)
PATCH는 PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 리소스를 일부분만 변경할 수 있다.(리소스를 일부만 변경)
DELETE는 리소스를 제거할때 사용한다. (리소스 삭제)

Session과 Cookie 사용 이유

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

Session

  • 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.
  • Session에 관련된 데이터는 Server에 저장된다.
  • 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.
  • Cookie에 비해 보안성이 좋다.

Cookie

  • 사용자 정보를 유지할 수 없다는 HTTP의 한계를 극복할 수 있는 방법
  • 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.
  • Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써, Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.
  • Cookie는 Client PC에 저장되는 정보기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다.(정보 유출 가능, Session보다 보안성이 낮은 이유)

🥰 보안성이 낮은 Cookie 대신 Session을 사용하면 되는데 안하는 이유?
🤗 모든 정보를 Session에 저장하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 감

4. 라이브러리 vs 프레임워크

 Library 의 개요
단순하게 활용 가능한 도구들의 집합. 개발자가 필요에 의해 만든 클래스를 호출하여 사용하는 방식

Framework 의 개요
뼈대 또는 핵심 구조를 뜻하는 기술. 소프트웨어의 특정 문제를 해결하기 위해 상호간 의존하는 클래스와 인터페이스의 집합. 완성된 어플리케이션이 아니므로 개발자가 완성시켜야 한다.
특정 개념의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다(재사용이 가능한 컴포넌트).

결론 : Library 와 Framework 의 차이점 개발 주도성이 어디에 있는가?

프레임워크는 프로세스를 가지고 있으며 개발자(사용자)는 프레임워크 안에서 필요한 코드를 작성
라이브러리는 개발자가 프로세스를 작성하면서 필요한 코드를 가져다 사용
즉, 라이브러리는 개발자에게 주도성이 있으며 프레임워크는 개발자가 아닌 핵심 구조 안에 프로세스에 대한 주도성이 담겨 있다.

5. restAPI

REST API는 자원(Resouce), 행위(Verb) - HTTP Method, 표현 (Representations)로 이루어져 있다. HTTP 통신 프로토콜을 이용해서 요청과 응답메시지를 주고받는것. HTTP 통신을 기반으로 하기 때문에 HTTP 요청을 보낼 수 있는 모든 언어, 환경에서 사용 가능 하다. Rest API 설계시 가장 중요한점은 첫 번째, URI는 정보의 자원을 표현해야 한다. 두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.
restful은 restAPI를 제공하는 웹서비스.

6.Garbage Collection(자동메모리 관리 =자바특징임)

: 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라고 부름.

7. Interface, Abstract

Interface

  • 일종의 추상 클래스
  • 오직 추상메서드와 상수만을 멤버로 갖는다.
  • Implements 키워드를 사용
  • 상속의 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있도록한다.
  • Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.

Abstract

  • 추상메서드를 하나 이상 가진 클래스
  • 자신의 생성자로 객체 생성 불가능
  • 하위 클래스를 참조하여 상위 클래스의 객체를 생성
  • 하위 클래스를 제어하기 위해 사용

공통점

  • new 연산자로 인스턴스 생성 불가능.
  • 프로토타입만 있는 메서드를 갖는다.
  • 사용하기 위해서는 하위클래스에서 확장/구현 해야 한다.

차이점

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

8. 프로세스와 쓰레드

  • 쓰레드 : 프로세스내에서 동시에 실행되는 독립적인 실행 단위를 말함, 장점으로는 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높다

  • 프로세스 : 운영체제에서 실행중인 하나의 프로그램(하나 이상의 쓰레드를 포함한다.)

9. 클래스와 객체

: 클래스란? 객체를 정의해 놓은것. 객체를 생성하는데 사용 (제품 설계도)
객체란 실제로 존재하는 것, 사물 또는 개념 (제품)

10. 알고리즘이란?

: 문제를 해결하는 절차

profile
안녕하세융 🧸

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

좋은 내용 감사합니다 멋지네요! 저도 개발 공부하는 중인데, https://quantpro.co.kr/ 해당 사이트 퀀트 내용 어떤지 의견주시면 감사하겠습니다!

답글 달기