본문 바로가기
매일 해내는 개발/Develog

기술 면접 대비 질문과 답 #1

by 해야지 2023. 3. 10.
반응형

1. 웹의 동작 방식에 대해 설명해주세요.

  • 웹의 동작 방식은 클라이언트-서버 모델로 이루어져 있습니다. 클라이언트는 브라우저에서 실행되며, 서버는 웹 애플리케이션을 호스팅하는 서버입니다. 클라이언트는 서버에 HTTP 요청을 보내고, 서버는 이 요청을 처리한 후 클라이언트에 HTTP 응답을 반환합니다. 클라이언트는 이 응답을 받아서 브라우저에 결과를 렌더링합니다.

2. HTTP와 HTTPS의 차이점에 대해 설명해주세요.

  • HTTP는 인터넷 상에서 데이터를 주고받을 때 사용되는 프로토콜이며, 암호화되지 않은 평문으로 데이터를 전송합니다. 반면, HTTPS는 SSL 또는 TLS 프로토콜을 이용하여 데이터를 암호화하고 인증하는 보안 프로토콜입니다. HTTPS는 기밀성, 무결성, 인증성을 보장하여 중간자 공격이나 데이터 변조, 도용 등을 방지합니다.

3. 웹 애플리케이션에서 성능 최적화를 위해 어떤 기술이나 방법을 사용할 수 있는지 설명해주세요.

  • 웹 애플리케이션에서 성능 최적화를 위해 사용할 수 있는 기술이나 방법으로는 코드 번들링, 이미지 최적화, 렌더링 최적화, 코드 스플리팅, 캐싱 등이 있습니다. 코드 번들링은 자바스크립트 파일을 하나로 묶어서 다운로드 시간을 줄이고, 이미지 최적화는 이미지의 용량을 줄여서 다운로드 시간을 줄입니다. 렌더링 최적화는 페이지 로딩 속도를 높이기 위해 필요한 HTML, CSS, 자바스크립트를 최소한으로 줄이고, 코드 스플리팅은 필요한 코드만 다운로드하도록 코드를 분할하는 기술입니다. 캐싱은 브라우저나 서버에서 이전에 다운로드한 리소스를 재사용하여 다운로드 시간을 줄입니다.

4. 웹에서 사용되는 HTTP 메소드에 대해 설명해주세요.

  • HTTP 메소드에는 GET, POST, PUT, PATCH, DELETE 등이 있습니다. GET 메소드는 리소스를 요청하고, POST 메소드는 리소스를 생성합니다. PUT 메소드는 리소스를 업데이트하거나 생성합니다. PATCH 메소드는 리소스를 일부 수정합니다. DELETE 메소드는 리소스를 삭제합니다.

5. 웹에서 CORS(Cross-Origin Resource Sharing)가 무엇인지 설명해주세요.

  • CORS는 브라우저에서 발생하는 보안 정책으로, 다른 도메인의 리소스를 요청하거나 다른 도메인으로부터 리소스를 요청하는 경우, 브라우저에서 보안상의 이유로 해당 요청을 차단하는 기능입니다. 이를 해결하기 위해서는 서버에서 응답 헤더에 Access-Control-Allow-Origin을 추가하여, 요청한 도메인에 대한 접근을 허용해야 합니다.

6. React에서 Virtual DOM이 무엇인지 설명해주세요.

  • Virtual DOM은 React에서 사용되는 가상의 DOM 객체입니다. React는 Virtual DOM을 이용하여 브라우저의 실제 DOM에 접근하지 않고, 가상의 DOM 트리를 조작합니다. 이를 통해 리렌더링이 필요한 부분만 업데이트하고, 불필요한 리렌더링을 방지하여 성능을 향상시킵니다.

7. React에서 컴포넌트의 생명주기에 대해 설명해주세요.

  • React에서 컴포넌트의 생명주기는 마운팅, 업데이트, 언마운팅의 세 가지 단계로 이루어져 있습니다. 마운팅은 컴포넌트가 처음으로 생성될 때 발생하며, constructor, getDerivedStateFromProps, render, componentDidMount 메소드가 순서대로 호출됩니다. 업데이트는 컴포넌트의 상태나 프롭스가 변경될 때 발생하며, getDerivedStateFromProps, shouldComponentUpdate, render, getSnapshotBeforeUpdate, componentDidUpdate 메소드가 순서대로 호출됩니다. 언마운팅은 컴포넌트가 제거될 때 발생하며, componentWillUnmount 메소드가 호출됩니다.

8. 웹 개발의 기본 개념을 설명해주세요.

  • 웹 개발이란, 인터넷을 통해 사용자가 웹 브라우저를 통해 웹 페이지를 요청하면, 서버에서 데이터를 가져와서 사용자에게 보여주는 과정입니다.
  • 웹 개발에서 가장 기본적인 구성 요소는 HTML, CSS, JavaScript입니다.
  • HTML은 웹 페이지의 구조와 콘텐츠를 정의합니다.
  • CSS는 HTML로 정의한 콘텐츠의 스타일을 정의합니다.
  • JavaScript는 웹 페이지의 동적인 기능을 구현할 수 있는 프로그래밍 언어입니다.

9. 웹 페이지에서 사용되는 HTTP 프로토콜에 대해 설명해주세요.

  • HTTP는 HyperText Transfer Protocol의 약자로, 인터넷 상에서 데이터를 주고받는 프로토콜입니다.
  • HTTP는 요청(request)과 응답(response)의 구조로 이루어져 있습니다.
  • 웹 브라우저는 사용자의 요청에 따라 HTTP 요청을 생성하고, 서버는 해당 요청에 대한 HTTP 응답을 생성하여 웹 브라우저에게 전송합니다.
  • HTTP 요청과 응답은 여러 개의 헤더(header)와 바디(body)로 구성되어 있습니다.
  • HTTP는 보안성이 낮은 문제로 HTTPS 프로토콜이 개발되었습니다.

10 .웹 개발에서 가장 중요한 보안에 대해 설명해주세요.

  • 웹 개발에서 가장 중요한 보안은 사용자 인증(Authentication)과 데이터 암호화(Encryption)입니다.
  • 사용자 인증은 사용자가 자신이 주장하는 신원을 증명하는 과정입니다. 대표적으로는 아이디와 비밀번호를 입력하는 로그인 과정입니다.
  • 데이터 암호화는 데이터를 암호화하여 보호하는 과정입니다. 대표적으로는 HTTPS 프로토콜을 사용하여 데이터를 암호화합니다.
  • 웹 개발자는 보안에 대한 이해와 적절한 대응 방안을 갖추어야 합니다.

11. JavaScript에서 변수 선언에는 var, let, const가 있습니다. 이들의 차이점은 무엇인가요?

  • var는 함수 스코프(function-scoped)를 가지고 있습니다. 즉, 변수를 선언한 함수 내에서만 사용할 수 있습니다.
  • let과 const는 블록 스코프(block-scoped)를 가지고 있습니다. 즉, 변수를 선언한 블록(scope) 내에서만 사용할 수 있습니다.
  • let은 값의 재할당이 가능합니다. 반면에 const는 한 번 할당된 값을 변경할 수 없습니다.
  • 따라서 let은 값이 변할 수 있는 경우에, const는 값이 변하지 않는 경우에 사용합니다.

12. JavaScript에서 콜백 함수(callback function)에 대해 설명해주세요.

  • 콜백 함수란, 다른 함수의 인자로 전달되어 특정 시점에 실행되는 함수를 말합니다.
  • 콜백 함수를 사용하면 비동기적인 처리가 가능해집니다. 대표적으로는 setTimeout, setInterval, XMLHttpRequest, Promise 등이 있습니다.
  • 콜백 함수는 보통 익명 함수(anonymous function)로 사용됩니다. 하지만 이름을 가지는 함수를 전달할 수도 있습니다.
  • 콜백 함수를 사용할 때는 적절한 에러 처리가 필요합니다. 콜백 함수가 실행 중 에러가 발생하면, 전체 프로그램이 중지될 수 있기 때문입니다.

13. RESTful API란 무엇인가요?

  • RESTful API는 Representational State Transfer의 약자로, 웹 상의 자원(리소스)을 이름(URI)으로 표현하고, HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 해당 자원에 대한 행위를 정의하는 아키텍처 스타일입니다.
  • RESTful API는 웹 서비스를 개발할 때 일반적으로 사용되는 방식으로, 자원의 상태를 변경하는 요청은 HTTP 메서드와 URI만으로 충분히 처리할 수 있습니다.
  • RESTful API는 단순하고 일관성 있는 API 디자인을 제공하며, 다양한 클라이언트에서 사용할 수 있습니다.

14. MVC(Model-View-Controller) 패턴에 대해 설명해주세요.

  • MVC 패턴은 소프트웨어 디자인 패턴 중 하나로, 소프트웨어의 구성 요소를 Model, View, Controller 세 가지 역할로 분리하여 설계합니다.
  • Model은 애플리케이션의 데이터를 처리하고, 이를 관리하는 역할을 합니다.
  • View는 사용자 인터페이스(UI)를 표시하는 역할을 합니다.
  • Controller는 모델과 뷰 간의 상호작용을 조정하고, 처리하는 역할을 합니다.
반응형

댓글