본문 바로가기

기술면접

(33)
23_상태(status)의 불변성이 중요한 이유 상태의 불변성이 중요한 이유 1. 예측 가능성(Predictability): 상태가 불변하면 언제나 동일한 값을 가지므로 코드의 동작을 예측하기가 쉬워집니다. 특정 시점에서의 상태를 알고 있다면 코드의 흐름을 이해하기가 쉽습니다. 2. 디버깅(Debugging): 불변한 상태는 디버깅을 용이하게 만듭니다. 상태가 변경되지 않기 때문에 특정 시점에서의 문제를 추적하고 분석하기가 더 쉬워집니다. 3. 병행성(Concurrency): 다중 스레드 환경에서 상태의 변경은 복잡성을 증가시킬 수 있습니다. 하지만 상태가 불변하면 스레드 간의 경쟁 조건이나 동기화 문제를 방지할 수 있습니다. 4. 성능 최적화: 불변한 상태를 사용하면 새로운 상태를 만들어야 할 때에만 메모리 할당과 복사가 필요합니다. 이로 인해 메모..
22_VanillaJS와 비교하여 리액트를 사용하는 이유 VanillaJS는 JavaScript의 순수한 형태를 말합니다. 즉, 어떠한 라이브러리나 프레임워크 없이 순수 JavaScript만을 사용하여 웹 애플리케이션을 개발하는 것을 의미합니다. 이것은 HTML과 CSS와 함께 기본적인 웹 개발을 수행하는 것을 말합니다. 반면에 리액트(React)는 Facebook에서 개발한 JavaScript 라이브러리로, 사용자 인터페이스를 만들기 위한 목적으로 만들어졌습니다. 1️⃣ 컴포넌트 기반 구조: 리액트는 컴포넌트 기반 아키텍처를 사용하여 UI를 개발합니다. 이는 UI를 독립적이고 재사용 가능한 작은 조각으로 나누어 개발할 수 있게 합니다. 각 컴포넌트는 자체적으로 상태(state)와 생명주기(lifecycle)를 가지며, 필요한 경우 재사용할 수 있습니다. 반면..
21_http & https의 차이점 HTTP (Hypertext Transfer Protocol) 및 HTTPS (Hypertext Transfer Protocol Secure)는 웹에서 데이터를 전송하는 데 사용되는 프로토콜입니다. 둘 다 서버와 클라이언트 간의 통신을 가능하게 하지만, 중요한 차이점이 있습니다. 1️⃣ 보안: ✅ HTTP: HTTP는 보안이 없는 프로토콜입니다. 데이터가 평문으로 전송되기 때문에 제3자가 데이터를 가로채거나 조작할 수 있습니다. ✅ HTTPS: HTTPS는 SSL (Secure Sockets Layer) 또는 TLS (Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화합니다. 이로써 데이터가 전송되는 동안 보안이 유지되며, 제3자가 데이터를 엿볼 수 없습니다. 2️⃣ 암호화..
20_TCP/UDP에 대해서 설명해주세요. ✅ TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 둘 다 네트워크 통신을 위한 프로토콜로, 인터넷 프로토콜 스위트의 일부입니다. 이 두 프로토콜은 데이터를 전송하는 방식과 연결 유지에 대한 처리 방식에서 차이가 있습니다. 1️⃣ TCP(Transmission Control Protocol, 전송 제어 프로토콜): 연결 지향적 프로토콜입니다. 통신하기 전에 연결을 설정하고, 데이터를 전송한 후에는 연결을 해제합니다. 데이터 전송의 신뢰성을 보장합니다. 패킷이 손실되거나 순서가 바뀌더라도 재전송 및 순서 보장 기능을 통해 데이터를 정확하게 전달합니다. 흐름 제어와 혼잡 제어 메커니즘을 통해 네트워크 상황을 감지하고 조절하여 네트워크의 안정..
19_클라이언트 사이드 렌더링(CSR)과 서버 사이드 렌더링(SSR)의 개념과 장/단점을 설명해주세요. 클라이언트 사이드 렌더링(CSR)과 서버 사이드 렌더링(SSR)은 웹 애플리케이션을 구축하는 두 가지 주요 접근 방식입니다. ✅ 클라이언트 사이드 렌더링 (Client-Side Rendering - CSR): 개념: 클라이언트 사이드 렌더링은 서버로부터 받은 초기 HTML과 빈 페이지를 로드한 후, 클라이언트(브라우저)에서 JavaScript를 사용하여 동적으로 컨텐츠를 렌더링하는 방식입니다. 페이지가 로드된 후에 JavaScript가 실행되어 서버로부터 데이터를 받아와 렌더링합니다. 🔵 장점: 빠른 초기 로드: 초기 페이지 로드 시 필요한 리소스 양이 적어 빠른 페이지 로딩이 가능합니다. 빠른 후속 네비게이션: 페이지 로드 이후 데이터를 비동기적으로 로드하므로 사용자 경험이 빠릅니다. 뛰어난 인터랙티브..
18_쿠키, 세션, 웹스토리지의 차이 ✅쿠키, 세션, 웹 스토리지는 모두 웹 애플리케이션에서 클라이언트와 서버 간의 데이터를 저장하는 데 사용되는 다양한 메커니즘 ✅ 쿠키 (Cookies): 쿠키는 클라이언트 측에 텍스트 형식으로 저장되는 작은 데이터 조각입니다. 주로 사용자 인증, 세션 관리, 사용자 설정 등을 저장하는 데 사용됩니다. 서버에서 생성되어 클라이언트에 저장되며, 설정된 만료일까지 유지됩니다. 쿠키는 도메인 및 경로별로 설정될 수 있으며, 보안 및 개인 정보 보호를 위해 일부 옵션을 설정할 수 있습니다. ✅ 세션 (Sessions): 세션은 클라이언트와 서버 간의 상호 작용을 추적하고 유지하는 데 사용됩니다. 일반적으로 세션은 서버 측에서 관리되며, 클라이언트에는 세션 식별자만 저장됩니다. 사용자가 웹 애플리케이션에 접속하면 ..
17_GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요. GET과 POST는 HTTP 프로토콜에서 사용되는 두 가지 주요한 요청 방식입니다. 이 두 방식은 웹 서버로부터 정보를 요청하는데 사용됩니다. ✅ GET 방식: GET 방식은 정보를 요청하기 위해 사용됩니다. 일반적으로 URL을 통해 데이터를 전달합니다. 예를 들어, 웹 브라우저에서 웹 페이지를 요청하거나 쿼리 문자열을 통해 데이터를 전달하는 경우 GET 방식을 사용합니다. GET 요청은 주로 캐시될 수 있습니다. 이는 동일한 요청이 여러 번 발생할 때 같은 응답을 재사용할 수 있음을 의미합니다. URL에 데이터가 노출되므로 보안적으로 민감한 정보는 GET 요청에 포함되지 않아야 합니다. ✅ POST 방식: POST 방식은 서버로 데이터를 제출하기 위해 사용됩니다. 주로 HTML의 요소에서 사용되며, 사..
16_GET, POST 방식의 차이점에 대해서 설명해주세요. GET과 POST는 HTTP 프로토콜에서 사용되는 두 가지 주요한 메서드(Methods) 중에 하나입니다. 이 두 메서드는 웹 애플리케이션에서 클라이언트와 서버 간의 데이터 전송에 사용됩니다. ✅ GET 방식: 1. 데이터 전송 방식: GET 방식은 데이터를 URL의 쿼리 문자열(Query String)에 포함하여 전송합니다. 이는 URL 뒤에 "?" 기호를 사용하고, 그 뒤에 key=value 쌍을 '&'로 구분하여 나열합니다. 2. 보안: GET 요청은 URL에 데이터를 노출시키므로 보안에 취약합니다. 사용자 이름, 비밀번호와 같은 민감한 정보를 GET으로 전송하는 것은 권장되지 않습니다. 3. 캐싱: GET 요청은 캐시될 수 있습니다. 동일한 GET 요청이 여러 번 발생할 경우, 이전 요청에서 받은..
15_브라우저 작동방식 브라우저는 인터넷을 통해 웹페이지를 검색하고 표시하는 소프트웨어입니다. 인터넷 브라우저에 URL을 입력하거나 링크를 클릭하면, 다음과 같은 과정을 거쳐 웹페이지가 표시됩니다. 1. URL 해석: 사용자가 입력한 URL(Uniform Resource Locator)은 해당 웹페이지의 주소를 나타냅니다. 브라우저는 이 URL을 해석하여 해당 서버의 IP 주소를 찾습니다. 2. 서버 연결: 브라우저는 해당 서버에 HTTP 요청을 보냅니다. 요청에는 브라우저가 원하는 정보(웹페이지, 이미지 등)와 함께 사용자의 브라우저 정보(user-agent) 등이 포함됩니다. 3. 웹 서버 응답: 서버는 요청받은 정보에 대한 응답을 생성합니다. 이 응답은 일반적으로 HTML, CSS, JavaScript 및 기타 미디어 파..
14_동기 & 비동기의 차이 : 비동기프로그래밍 ✅ 동기 (Synchronous)와 비동기 (Asynchronous) 프로그래밍 ✅ 동기 (Synchronous) 프로그래밍: 동기 프로그래밍은 작업이 순차적으로 실행되고, 한 작업이 완료될 때까지 다음 작업이 시작되지 않습니다. 요청한 작업이 완료되기 전까지는 대기해야 하므로, 시스템 자원의 효율성과 응답성이 저하될 수 있습니다. 순차적인 프로그래밍 스타일로 코드의 흐름이 예측 가능하고 간단할 수 있습니다. ✅ 비동기 (Asynchronous) 프로그래밍: 비동기 프로그래밍은 작업이 병렬로 실행되고, 작업이 완료될 때까지 기다리지 않고 다음 작업을 계속할 수 있습니다. 비동기적으로 작업을 처리하면, 작업이 완료되기를 기다리는 동안 다른 작업을 수행할 수 있어 시스템 자원을 효율적으로 활용할 수 있습니다..