이노베이션 캠프

개발 면접준비 [ 프론트/백 엔드 공통질문]

지금해냥 2022. 11. 14. 22:40

1. 브라우저에 ‘naver.com’을 입력하면 내부적으로 어떤 일이 일어나는지 설명해주세요

- url로 되어있는 http요청을 DNS를 통해 host에 해당하는 실제 IP주소로 변환하여 서버에 요청
  1. DNS 서버에서 도메인 → IP주소 변환
  2. IP주소로 HTTP 데이터 전송
  3. HTTP 요청정보를 TCP 프로토콜로 전송
  4. 서버는 HTTP로 받아 URL데이터 탐색
  5. 서버 → 브라우저 응답 , HTTP메세지전송
  6. 응답메세지 렌더링, TCP프로토콜 전송
  7. 브라우저가 파싱 및 렌더링 과정 → 화면

2. 웹 브라우저 공격을 아는대로 설명해주세요

- *SQL Injection
  서버에 실행되는 SQL을 악의적으로 이용하는 공격 악의적인 SQL 구무능 삽입하여 데이터를 탈취, 삭제 할 수 있다.
  방어는 문제가 될 수 있는 문자열을 필터링

- *XSS (Cross-Site Scription)
  악성 자바스크립트를 삽입하는 공격,
  입력창에 자바스크립트 코드 입력 SPA로 배포되는 서비스의 토큰을 Cookie 또는 스토리지에 저장하는 것을
   xss를 통해 토큰을 손쉽게 탈취
- *CSRF Attack 서비스 사용자를 이용하여 요청을 보내는 공격,
  ex)피싱사이트 계정탈취
- *Command Injection
  쉘을 실행시키는 로직을 이용한 공격
  각 언어마다 쉘 명령을 실행시키는 함수가 존재하는데,
  Java의 System.runtime()이나 Runtime.exec() Python의 exec(), os.system(),
  각 언어의 eval() 함수 등을 이용하여 악성 명령을 삽입
- *DDos (Distributed Denial of Service)
  분산 서비스 거부 공격,
  서버에 비정삭적으로 많은 트래픽을 보내 마비시키는 공격
  심어놓은 좀비 PC, 본인 PC등 많은 트래픽으로 서버를 느려지거나 죽일 수 있음 방어 방법
  -해결방법 : 확장 가능한 분산 시스템, 공격 IP필터링, 지역 외 IP차단, 전문업체

3. RESTful하다는 것은 어떤 의미인지 설명해주세요

- REST API의 규칙을 잘 지키는 프로젝트
  REST는 두 컴퓨터가 인터넷을 통해 정보를 주고 받는 인터페이스를 의미하는데
  URL, Method, 데이터자원을 규칙에 맞게 전달하는 것을 의미함

4. 쿠키와 세션의 차이를 설명해주세요

- 쿠키는 만료기간까지 사라지지않는 저장상태를 지니며,
  쿠키는 클라이언트에서 상태를 관리하며, 전송시 헤더를 같이 보내는 특징이 있음
  세션을 창을 닫으면 사라지는 저장소, 세션은 인증정보를 서버에서 관리함

5. HTTP와 HTTPS의 차이를 설명해주세요

- 둘다 http기반 통신인 것은 동일하나 포트번호가 http는 80, https는 443을 사용
  https는 기존 http통신에서 주고받는 값에 암호화 과정을 통해 전달되어 중간에 가로채이더라도 보안성을 가짐.
  ssl인증서와 암호키를 이용한 해독과정

6. 서버사이드 렌더링이 무엇인가요?

- 서버에서 페이지를 그려 클라이언트로 보낸 후 화면에 표시하는 기법
- 서버 사이드 렌더링 : 클라이언트 사이드 or 유니버셜 앱 html로 렌더링
- 클라이언트 사이드 렌더링 : 주로 DOM을 사용하여 브라우저 렌더링

7. SQL과 noSQL의 차이를 설명해주세요

- SQL(관계형 DB)
 데이터는 정해진 스키마에 따라 테이블에 저장,
 관계를 통해 여러 테이블에 분산 정해진 구조에 맞는 레코드만 추가가 가능한 것이 특징
 또한 데이터 중복을 피하기 위해 관계를 이용
 *장점
  명확하게 정의된 스키마,
  무결성 데이터 보장,
  데이터 중복없이 한번만 저장
*단점
 덜 유연함, 스키마 사전 계획 필요.
 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
 대체로 수직적 확장만 가능함

- noSQL(비관계형 DB)
 스키마도 관계도 없다. 레코드를 문서라고 부른다.
 noSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가가 가능
 관련데이터를 동일한 컬렉션에 넣는다.
 이미 필요한 모든 것을 갖춘 문서를 작성하는 것이 noSQL 조인을 잘 사용하지 않고,
 자주 변경되지 않는 데이터일 때 noSQL을 쓰면 효율적
 *장점
 스키마가 없어서 유연함,
 언제든 저장된 데이터 조정,
 새로운 필드 추가 가능
 어플리케이션이 필요로하는 형식으로 저장
읽어오는 속도가 빨라짐
수직적, 수평적 확장이 가능,
모든 읽기/쓰기 요청 처리 가능
*단점
유연성으로 인해 데이터 구조결정이 미뤄질 수 있음
데이터 중복을 계속 업데이트해야함
데이터가 여러 컬렉션에 중복되어 있기 떄문에 수정 시 전체수정 필요

8. 각 언어별 Iterator에 대해 설명해주세요

- Iterator(반복자)는 객체지향적 프로그래밍에서 배열이나 그와 유사한 자료 구조의 내부의 요소를 순회하는 객체이다.
* 자바
  Iterator는 컬렉션 프레임워크에 대한 인터페이스
* 자바스크립트
  Iterable객체에서 반복을 실행하는 반복기
  Iterable객체가 반복하면서 어떠한 값을 반환할 것 인지 결정
  Iterable - 반복가능한 객체, for of문, 스프레드 문법, 구조분해 할당 등
* Python
  Iterator는 값을 순회하며 꺼낼 수 있는 객체 object str, list, set 등이 있음

LIST