코딩 469

프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유는 무엇인가요?

프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유는 무엇인가요?백엔드와 관련된 질문이에요.컨텍스트 스위칭(Context Switching)이란?컨텍스트 스위칭은 CPU나 코어에서 실행 중이던 프로세스나 스레드가 다른 프로세스나 스레드로 교체되는 과정을 말합니다. 이는 멀티태스킹 시스템에서 여러 작업을 효율적으로 관리하기 위해 필수적인 메커니즘입니다.컨텍스트(Context)란?컨텍스트는 프로세스나 스레드의 현재 상태를 의미합니다. 여기에는 CPU의 레지스터 상태(프로그램 카운터, 스택 포인터 등)와 메모리 상태가 포함됩니다. 컨텍스트는 프로세스나 스레드가 실행을 중단하고 나중에 다시 시작할 때 필요한 모든 정보를 담고 있습니다.컨텍스트 스위칭이 필요한 이유멀티태스킹 시스템에서는 여러 프로세스나 스레드가..

localStorage와 sessionStorage의 차이점에 대해서 설명해주세요

localStorage와 sessionStorage의 차이점에 대해서 설명해주세요.프론트엔드와 관련된 질문이에요.localStorage와 sessionStorage는 브라우저에서 제공하는 클라이언트 측 저장소 API로, 둘 다 데이터를 키-값 쌍 형태로 저장합니다.차이점은 데이터의 지속성과 범위에 있습니다.localStorage는 데이터를 영구적으로 저장합니다. 브라우저를 닫거나 장치를 재부팅해도 데이터가 유지되며, 동일한 도메인 내의 모든 탭에서 데이터를 공유할 수 있습니다.사용 예로는 다크모드 같은 테마 설정이나 장바구니 데이터와 같이 장기적으로 유지해야 하는 데이터 저장에 적합합니다.sessionStorage는 데이터가 현재 브라우저 세션 동안만 유지되며, 브라우저 탭이나 창을 닫으면 데이터가 삭제..

스케일 아웃과 스케일 업의 차이점을 설명해주세요.

서버 확장의 두 가지 방법: 스케일 업 vs 스케일 아웃 🚀스케일 업(Scale-Up): 수직적 확장 ⬆️스케일 업은 기존 서버의 성능을 향상시키는 방식입니다. 쉽게 말해, 더 강력한 컴퓨터로 업그레이드하는 것이죠!장점 👍구현이 간단함 (기존 서버만 업그레이드)소프트웨어 아키텍처 변경이 필요 없음관리 포인트가 늘어나지 않음단점 👎하드웨어에 한계가 있음 (무한정 업그레이드 불가)비용 효율성이 낮을 수 있음 (미리 고사양 장비 확보)장애 발생 시 서비스 전체에 영향 (단일 실패 지점)예시 💡AWS EC2에서 t2.micro → t2.small → t2.medium → t2.large로 인스턴스 타입을 변경하는 것은 전형적인 스케일 업 방식입니다. 스케일 아웃(Scale-Out): 수평적 확장 ↔️스케..

useEffect를 이용하여 로딩 상태 관리하는 방법과 Suspense를 활용하는 방법에 대한 차이점을 설명해주세요.

React에서 로딩 상태 관리하기: useEffect vs Suspense 비교 🚀useEffect로 로딩 상태 관리하기 ⚙️전통적인 방식으로, 컴포넌트가 마운트된 후 데이터를 가져오고 로딩 상태를 수동으로 관리합니다.function DataCenter({ id }) { const [data, setData] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { async function fetchData() { setIsLoading(true); try { const response =..

리액트 동시성 모드(Concurrent Mode)에 관해서 설명해주세요.

리액트 동시성 모드란? 🤔리액트 동시성 모드는 마치 여러 손님이 동시에 주문하는 카페에서 바리스타가 긴급한 주문(중요 UI 작업)을 먼저 처리하는 것과 같습니다! 🏃‍♂️💨이전 리액트는 단일 스택 구조로 작업했어요. 즉, 한 번 렌더링을 시작하면 모든 작업을 끝까지 완료해야만 했습니다. 마치 하나의 커피를 완성할 때까지 다른 모든 주문을 기다리게 하는 것과 같죠. ☕️⏳하지만 동시성 모드에서는작업을 중간에 멈출 수 있음 ⏸️더 중요한 작업이 들어오면 우선순위 변경 가능 🔄사용자 경험을 방해하지 않고 백그라운드에서 작업 처리 🔍 동시성 모드의 핵심 기능들 🛠️1. startTransition 🚦특정 상태 업데이트를 '덜 중요한 작업'으로 표시할 수 있습니다.import { startTransi..

ACID에 대해서 설명해주세요.

ACID에 대해서 설명해주세요.백엔드와 관련된 질문이에요.ACID는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 약자이며, 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 의미합니다.각 속성은 어떤 의미를 가지나요? 🤔원자성(Atomicity) 은 트랜잭션 내부 연산들이 부분적으로 실행되고 중단되지 않는 것을 보장합니다. 쉽게 말하자면, 트랜잭션은 전체 성공과 전체 실패 중 한 가지만 수행한다는 것입니다. 예를 들면 계좌 이체 트랜잭션은 다음과 같은 연산으로 이루어져 있습니다. 이때 2번 과정에서 에러가 발생하면 1번 과정을 취소해야 합니다.1. A 계좌에 3000원 출금2. B 계좌에 3000원 입금 일관..

리액트에서 컴포넌트가 불필요하게 리렌더링되는 상황을 방지하기 위한 방법을 설명해 주세요.

리액트에서 컴포넌트가 불필요하게 리렌더링되는 상황을 방지하기 위한 방법을 설명해 주세요.프론트엔드와 관련된 질문이에요.React에서 불필요한 리렌더링을 방지하는 방법에 대해 설명드리겠습니다.첫째, React.memo를 활용하여 컴포넌트를 메모이제이션할 수 있습니다. 이는 컴포넌트의 props가 변경되지 않으면 컴포넌트를 리렌더링하지 않도록 합니다. 특히 부모 컴포넌트가 자주 업데이트되는 상황에서 유용합니다.const MemoizedComponent = React.memo(MyComponent);둘째, useMemo와 useCallback 훅을 사용하여 각각 값과 함수를 메모이제이션할 수 있습니다. useMemo는 계산 비용이 많이 드는 연산 결과를, useCallback은 자식 컴포넌트에 전달되는 콜백 ..

REST란 무엇인가요?

REST란 무엇인가요?백엔드와 관련된 질문이에요.REST(Representational State Transfer) 는 자원의 표현을 이용하여 상태를 주고받는 것을 의미합니다. 여기서 자원이란 소프트웨어가 관리하는 모든 것을 의미하며 자원의 표현은 자원을 나타내기 위한 이름을 의미합니다. 가령, 서버가 관리하는 주문 데이터는 order 라고 표현할 수 있습니다. 최근에는 일반적으로 자원의 상태를 나타내기 위해 JSON 포맷을 사용합니다. REST는 네트워크 상에서 클라이언트와 서버의 통신 방식 중 하나이며, HTTP 프로토콜을 사용합니다. 구체적으로는 HTTP URI를 활용하여 자원을 명시하고 HTTP METHOD를 통해 CRUD 연산을 적용하는 것을 의미합니다.API(Application Program..

CORS(Cross-Origin Resource Sharing)는 무엇이며 왜 필요한가요?

CORS(Cross-Origin Resource Sharing)는 무엇이며 왜 필요한가요?프론트엔드와 관련된 질문이에요.CORS는 서로 다른 출처(origin)에서 제공되는 리소스에 접근할 수 있도록 허용하는 정책입니다.기본적으로 브라우저에는 보안 상의 이유로 동일 출처 정책(Same-Origin Policy) 이 적용되어 있습니다. 해당 리소스가 같은 출처에서 제공되는 것이 아니라면 브라우저가 이를 차단하도록 되어 있습니다. 다시 말해, 다른 출처의 서버에 요청을 보낼 경우, 해당 요청에 대한 응답에 접근할 수 없도록 막습니다. 이러한 정책은 보안을 강화하지만, 이로 인해 합법적인 요청까지 차단될 수 있습니다. 그러한 상황을 해결하기 위해 CORS가 개발되었습니다.CORS를 적용하는 법을 설명드리겠습니..

캐싱 전략에 대해서 설명해주세요.

캐싱이 중요한 이유 🤔캐싱은 자주 접근하는 데이터를 빠르게 접근할 수 있는 임시 저장소에 보관하는 기술입니다. 데이터베이스 쿼리, API 호출, 파일 입출력 등 비용이 많이 드는 작업의 결과를 저장해두면⚡ 응답 시간 대폭 단축📉 데이터베이스 부하 감소💰 서버 비용 절약🌐 사용자 경험 향상자, 이제 다양한 캐싱 전략에 대해 알아볼까요?1. Cache Aside (Lazy Loading) 전략 😴가장 흔히 사용되는 캐싱 패턴입니다. "필요할 때만 캐시에 데이터를 로드한다"는 개념이죠.작동 방식:데이터가 필요할 때 먼저 캐시를 확인 🔍캐시에 있으면(캐시 히트) 바로 반환 ✅캐시에 없으면(캐시 미스) 데이터베이스에서 조회 🔄데이터베이스에서 가져온 데이터를 캐시에 저장하고 반환 💾🍦 비유: 냉장고..