Skills 핸드북
개발 스킬과 관련된 질문과 답변 모음
총 123개의 질문
NestJS의 요청 처리 흐름(Request Lifecycle)을 설명해주세요.
DI(Dependency Injection)와 IoC(Inversion of Control)란?
Express와 NestJS의 핵심 차이점은?
Express.js와 Nest.js의 장단점은?
MSA(Microservices Architecture)란 무엇인가요?
Protobuf(Protocol Buffers)란? 숫자(1,2,3)의 의미는?
SQL(RDBMS)과 NoSQL의 차이점과 장단점은?
해시테이블이란? 시간복잡도가 항상 O(1)인가요?
해시테이블의 중복 저장을 해결하기 위한 방법은?
Docker Image와 Container의 차이점은?
Docker Network에서 Host와 Bridge의 차이점은?
AWS 배포를 어떻게 진행하는지 설명해주세요.
객체지향 프로그래밍(OOP)의 4가지 특징은?
쿠키(Cookie)와 세션(Session)의 차이는?
Package.json에서 dependencies와 devDependencies의 차이는?
Node.js 이벤트 루프 동작 원리를 설명해주세요.
Node.js는 싱글 스레드인데 어떻게 병렬 작업을 처리하나요?
동기(Synchronous)와 비동기(Asynchronous)의 차이는?
블로킹(Blocking)과 논블로킹(Non-blocking)의 차이는?
동시성(Concurrency)과 병렬성(Parallelism)의 차이는?
커스텀 데코레이터를 만든다면 어떻게 만드나요?
var, let, const의 차이와 호이스팅(Hoisting)이란?
JavaScript 가비지 컬렉터(GC) 동작 방식은?
JavaScript가 프로토타입 언어인데 장점은?
TypeScript의 Omit과 Partial의 차이점은?
서브넷(Subnet)과 서브넷마스크, CIDR란?
프로세스(Process)와 스레드(Thread)의 차이점은?
DDD(Domain-Driven Design)란?
Python의 List와 Tuple 차이점은?
Python의 List Comprehension과 GIL이란?
암호화 방식으로 AES-256-GCM을 선택한 이유는?
phone_encrypted와 phone_hash를 분리 저장한 이유는?
setPhone(phone, cryptoService) 형태로 서비스 주입을 명시한 이유는?
복합 인덱스 순서를 (phone_hash, created_at)로 둔 이유는?
배치 작업 전체를 트랜잭션으로 묶거나, 실패 시 전체를 롤백하게 설계한 이유는?
외부 API 호출(NTS API)을 트랜잭션 밖에서 먼저 수행하고, 그 결과를 받아서 DB 작업만 트랜잭션으로 묶은 이유는?
상태 변경과 리포트 생성을 트랜잭션으로 분리한 이유는?
api 폴더 아래 public과 internal로 나누고, 다시 batch와 common을 분리한 이유는?
CryptoService를 엔티티의 메서드 파라미터로 넘기고 있습니다. BeforeInsert 훅을 쓰지 않은 이유는요?
유효성 검사를 class-validator와 커스텀 validatePhoneNumber로 이중으로 하는 이유는?
interface 대신 class로 DTO를 정의한 이유는 무엇인가요?
ConfigService를 쓸 때 process.env를 직접 쓰는 것과 비교해 어떤 장점이 있나요?
컨트롤러에서 try-catch를 쓰지 않고 전역 필터에 맡긴 이유는?
Promise.all을 사용할 때 주의할 점은 무엇이고, 실패 시 어떻게 처리했나요?
단위 테스트(Unit Test) 외에 E2E 테스트가 왜 필요한가요? Mocking만으로는 부족한가요?
커스텀 데코레이터(@User(), @Roles())는 언제, 왜 만드나요?
OnModuleInit 같은 생명주기 훅(Lifecycle Hooks)은 실무에서 어떤 경우에 활용하나요?
Dynamic Module(forRoot, register)은 언제 사용하나요?
Provider 정의 시 useClass 대신 useFactory를 써야 할 때는?
미들웨어(Middleware)와 가드(Guard)의 결정적인 차이는 무엇인가요?
인터셉터(Interceptor)로 응답 데이터를 조작할 때 스트림(Observable) 처리는 어떻게 하나요?
순환 참조(Circular Dependency) 발생 시 forwardRef 외의 해결책은?
Graceful Shutdown 처리는 어떻게 구현했나요?
Health Check API는 단순히 { status: "ok" }만 반환하면 되나요?
API 버전 관리(Versioning)는 어떤 전략을 선호하나요?
TypeScript의 type과 interface 중 무엇을 선호하고 그 이유는?
비동기 에러 처리 시 unhandledRejection은 어떻게 대응하나요?
로깅(Logging) 시 console.log 대신 Logger 서비스를 쓰는 이유는?
map과 forEach의 비동기 처리 차이점은?
테스트 커버리지(Coverage)는 100%를 목표로 해야 할까요?
SQLite에서 PostgreSQL로 마이그레이션 시 가장 큰 리스크는?
대용량 배치 처리 시 메모리 문제를 어떻게 해결하나요?
오프셋(Offset) 페이지네이션을 쓰면 안 되나요? 왜 커서(Cursor) 방식을 언급했죠?
Node.js Stream 사용 시 Backpressure 처리는 어떻게 하나요?
phone_encrypted와 phone_hash 중복 저장은 스토리지 낭비 아닌가요?
트래픽이 급증해 DB 부하가 심할 때, 코드 수정 없이 대응할 수 있는 전략은?
트랜잭션 범위를 설정할 때 원칙은 무엇인가요?
NestJS 도입이 인건비와 채용 관점에서 주는 이득은?
암호화 키 유출 시 DR(재해 복구) 대책과 비용 효율적인 보안 강화책은?
기술 부채(Technical Debt)는 언제, 어떻게 갚아야 한다고 생각하나요?
동료가 any 타입을 남발할 때 어떻게 설득하겠습니까?
팀원 간 기술 스택 논쟁(MikroORM vs TypeORM) 시 해결 방법은?
일정이 촉박해 테스트 코드를 짤 시간이 없다면?
레거시 코드를 리팩토링하고 싶은데 비즈니스 일정 때문에 못하게 한다면?
AWS에서 EC2, Lambda, ECS 중 어떤 것을 선택해야 하나요?
RDS와 DynamoDB 중 어떤 것을 선택해야 하나요?
AWS VPC와 네트워크 구성은 어떻게 하나요?
AWS IAM 역할(Role)과 정책(Policy)의 차이는?
CloudFront CDN의 동작 원리와 최적화는?
Kubernetes란 무엇이고 왜 필요한가요?
Infrastructure as Code(IaC)란 무엇이고 왜 필요한가요?