2025/04/21 6

웹 애플리케이션의 성능을 최적화할 수 있는 방법들에 대해서 아는대로 설명해주세요.

웹 애플리케이션의 성능을 최적화할 수 있는 방법들1️⃣ 코드 스플리팅(Code Splitting) ✂️필요한 코드만 먼저 불러오자!SPA(싱글 페이지 앱)에서 모든 JS 파일을 한 번에 불러오면 너무 무겁죠!✅ 페이지별로 필요한 파일만 나눠서 로드하면 초기 로딩 속도가 빨라져요.💻 예시 (React + React.lazy)const MyPage = React.lazy(() => import('./MyPage'));}> 2️⃣ 레이지 로딩(Lazy Loading) 🐢보이는 것만 불러오자!이미지나 동영상은 스크롤해서 보일 때만 로딩되도록 하면네트워크를 아낄 수 있어요!💻 예시 (HTML)✅ 크롬, 사파리 등 최신 브라우저 지원!3️⃣ 이미지 최적화 🖼이미지는 꼭 압축하거나 포맷 변경!JPG → We..

단위 테스트와 통합 테스트의 차이점은 무엇인가요?

단위 테스트와 통합 테스트의 차이점은 무엇인가요?단위 테스트는 소프트웨어의 가장 작은 단위, 즉 개별 메서드나 함수의 기능을 검증하는 테스트입니다. 특정 기능이 올바르게 동작하는지 확인하기 위함이며 독립적이고 빠르게 실행됩니다.통합 테스트는 개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트입니다. 모듈 간의 상호작용이 올바르게 동작하는지 확인하기 위함이며 실제 데이터베이스, 네트워크 등의 외부 시스템과의 통합을 테스트합니다. 슬라이스 테스트는 무엇인가요? 🤔슬라이스 테스트는 특정 레이어(ex. controller, service, repository)에 대한 테스트입니다.애플리케이션의 특정 슬라이스가 올바르게 동작하는지 확인하기 위해 작성됩니다. 스프링의 특정 컴포넌트만 로드하여..

공유 락과 배타 락에 대해서 설명해주세요.

🔐 DB 락(Lock)이 뭐예요? 공유 락 vs 배타 락, 그리고 데드 락까지!안녕하세요 백엔드 개발자 여러분! 👩‍💻오늘은 DB에서 데이터 무결성과 안전한 병행 처리를 위해 꼭 알아야 할락(Lock)에 대해 쉽게 알아볼게요!🧩 락이 필요한 이유는?여러 트랜잭션이 동시에 데이터에 접근할 때,충돌이 생기지 않게 보호하는 장치가 바로 "락(lock)"입니다! 🔒✅ 공유 락(Shared Lock) 🧍‍♀️🧍‍♂️"읽기는 여러 명이 동시에 해도 돼~ 하지만 누가 수정하면 안 돼!"데이터를 읽는(SELECT) 트랜잭션들이 같이 공유할 수 있어요.하지만 누군가 수정(UPDATE/DELETE) 하려고 하면 ❌ 못 해요!📘 예시-- 공유 락: 여러 트랜잭션이 동시에 읽을 수 있음SELECT * FROM ..

이벤트 전파(event propagation)에 대해서 설명해주세요.

📦 이벤트는 어떻게 움직일까?우리가 버튼을 클릭하거나 화면을 터치하면,브라우저는 이 이벤트를 어떤 방식으로 처리할까요?이벤트는 단순히 "딱!" 하고 거기서 끝나는 게 아니라,DOM(Document Object Model)을 따라 "전파"되는 특징이 있어요!🧭 이벤트 전파의 3단계1️⃣ 캡처링(Capturing) 단계 👀📍 DOM 최상단(document)부터 시작해서👇 이벤트 타겟 요소로 내려오는 과정2️⃣ 타겟(Target) 단계 🎯👉 이벤트가 실제로 발생한 타겟 요소에 도착!여기서 등록된 이벤트 리스너가 실행됩니다.3️⃣ 버블링(Bubbling) 단계 🫧⬆️ 타겟에서 시작해서 다시 DOM 상위 요소들로 올라가는 과정📘 예시 코드로 확인해볼까요? 클릭해봐요!document.getElem..

동기와 비동기의 차이점은 무엇인가요?

🔄 동기(Synchronous)란?"기다릴게, 네가 끝날 때까지!"함수 A가 함수 B를 호출하고, B가 끝날 때까지 A는 멈춰 있음.즉, 순차적으로 작업이 실행됩니다.✅ 예시String data = getData(); // getData가 끝나야 다음 줄 실행System.out.println("데이터: " + data);📌 getData() 함수가 완료될 때까지 기다렸다가 다음 코드 실행됨!🚀 비동기(Asynchronous)란?"먼저 갈게! 네가 끝나면 알려줘~"함수 A가 함수 B를 호출하고 B의 결과를 기다리지 않고 자기 일을 먼저 처리합니다.결과는 콜백, Future, 이벤트 등을 통해 나중에 받습니다.✅ 예시 (Spring)@Asyncpublic void sendEmail() { // 이..

CommonJS와 ES Module의 차이점에 대해서 설명해주세요.

CommonJS vs ES Module: 모듈 시스템 비교 💡데이터센터 DCIM/FMS 개발자를 위한 간단 명료한 모듈 시스템 가이드입니다.CommonJS와 ES Module 비교 🔄CommonJS 📦Node.js 환경에서 전통적으로 사용되던 모듈 시스템입니다.// math.js - 모듈 내보내기function add(a, b) { return a + b; }module.exports = { add };// app.js - 모듈 가져오기const math = require('./math');console.log(math.add(5, 3)); // 8특징:✅ 동기적 로딩: 모듈이 로드될 때까지 코드 실행 중지✅ Node.js에 최적화: 서버 환경에서 주로 사용✅ 런타임에 모듈 해석: 동적 로딩 가능 ..