Laravel 면접 준비 방법
시니어 Laravel 면접은 단순히 문법 지식을 테스트하지 않습니다. 확장 가능한 시스템을 설계하고 실제 상황에서의 트레이드오프(trade-offs)를 다루는 능력을 테스트합니다.
기본적인 CRUD 작업을 넘어선 실력이 필요합니다. 대규모 환경에서도 소프트웨어를 안정적으로 배포할 수 있음을 증명해야 합니다.
가용 시간에 맞춘 다음 학습 계획을 활용해 보세요.
- 1~2일: Request Lifecycle, Eloquent N+1 문제, Queues, Validation, Authorization에 집중하세요.
- 3~5일: Caching, Database Transactions, Testing, API Design을 추가하세요.
- 6~10일: 전체 내용을 학습하세요. queues, events, jobs, policies를 사용한 소규모 프로젝트를 구축해 보세요.
마스터해야 할 핵심 기술 영역:
Service Container
다음 세 가지의 차이점을 숙지하세요:
• bind(): 호출할 때마다 새로운 인스턴스를 반환합니다.
• singleton(): 프로세스 전체에서 동일한 인스턴스를 반환합니다.
• scoped(): 요청(request)당 하나의 인스턴스를 반환합니다. 이는 Laravel Octane과 같은 도구에서 매우 중요합니다.
Eloquent 및 Database
대규모 테이블에서 all() 사용을 지양하세요. 메모리 관리를 위해 chunk() 또는 lazyById()를 사용하세요.
N+1 문제를 이해하세요. 이를 해결하기 위해 eager loading (with)을 사용하세요.
Eloquent와 Query Builder 중 언제 무엇을 사용할지 결정할 줄 알아야 합니다. 모델 오버헤드를 피하기 위해 무거운 리포팅 작업에는 Query Builder를 사용하세요.
Queues 및 Background Processing
느리거나 신뢰할 수 없는 작업은 모두 queue에 넣어야 합니다. 운영 환경의 queue에는 Redis를 사용하세요. Laravel Horizon을 사용하여 worker와 실패한 job을 모니터링하세요. job에 데이터를 전달할 때는 데이터가 최신 상태가 아닐 경우를 대비해 전체 모델 객체 대신 ID를 전달하세요.
보안 및 아키텍처
mass assignment를 위해 $request->all()을 사용하지 마세요. $request->validated()를 사용하세요.
Sanctum(SPA 및 단순 토큰용)과 Passport(전체 OAuth2용)의 차이점을 이해하세요.
Controller는 가볍게 유지하세요. 비즈니스 로직은 Service나 Action으로 옮기세요.
시니어의 징후
주니어 개발자는 도구의 사용법을 알지만, 시니어 개발자는 왜 다른 도구 대신 그 도구를 선택했는지 압니다.
면접에서 단순히 정답만 말하지 마세요. 트레이드오프를 설명하세요. 다양한 접근 방식의 장단점을 비교하세요. 이는 기술적 결정이 비즈니스에 미치는 영향을 이해하고 있음을 보여줍니다.
출처: https://dev.to/nazar_boyko/how-to-prepare-for-a-laravel-interview-8dn
