Laravel 주니어 프레임워크 면접

Laravel 주니어 (1~3년) 프레임워크 5문항 조회수 111 · 2026-05-23 (토) 19:10:42
1 Blade 템플릿
Easy

Q. Laravel Blade 템플릿 엔진의 주요 특징과 장점을 설명하고, @if, @foreach, @extends, @section 같은 디렉티브가 일반 PHP 코드와 비교했을 때 어떤 이점을 제공하는지 설명해주세요.

A. 모범답안

Blade는 Laravel의 템플릿 엔진으로 뷰 파일에서 PHP 코드를 간결하게 작성할 수 있게 해줍니다. 일반 PHP 문법보다 가독성이 높고, 템플릿 상속과 섹션 기능을 통해 레이아웃을 재사용할 수 있습니다. Blade 파일은 컴파일되어 캐싱되므로 성능 오버헤드가 거의 없으며, XSS 공격 방지를 위한 자동 이스케이프 기능을 제공합니다. @extends와 @section을 사용하면 공통 레이아웃을 정의하고 필요한 부분만 오버라이드할 수 있어 코드 중복을 줄일 수 있습니다.

핵심 포인트
  • • 간결한 문법으로 가독성 향상
  • • 템플릿 상속을 통한 레이아웃 재사용
  • • 컴파일 및 캐싱으로 성능 최적화
  • • 자동 이스케이프로 XSS 방지
Follow-up 질문

@{{ }} 문법과 {{ }} 문법의 차이점은 무엇이며, 언제 @{{ }}를 사용해야 하나요?

2 Eloquent Accessor & Mutator
Medium

Q. Laravel Eloquent의 Accessor와 Mutator의 차이점을 설명하고, 각각 언제 사용하는지 예시와 함께 설명해주세요. 또한 Laravel 9 이상 버전에서 도입된 Attribute 캐스팅 방식과 기존 방식의 차이점도 설명해주세요.

A. 모범답안

Accessor는 모델 속성을 조회할 때 자동으로 값을 변환하는 기능으로, get{Attribute}Attribute 메서드로 정의합니다. Mutator는 모델 속성을 저장하기 전에 값을 변환하는 기능으로, set{Attribute}Attribute 메서드로 정의합니다. 예를 들어 이름을 항상 대문자로 조회하거나, 비밀번호를 저장할 때 자동으로 해싱하는 데 사용됩니다. Laravel 9부터는 Attribute 클래스를 반환하는 단일 메서드로 get과 set을 함께 정의할 수 있어 코드가 더 간결해졌습니다.

핵심 포인트
  • • Accessor는 조회 시 값 변환, Mutator는 저장 시 값 변환
  • • 데이터 포맷팅, 암호화, 계산된 속성 등에 활용
  • • Laravel 9+ Attribute 방식은 get/set을 하나의 메서드로 통합
  • • 모델 레벨에서 데이터 일관성 유지
Follow-up 질문

Accessor를 사용할 때와 appends 속성을 사용할 때의 차이점은 무엇인가요?

3 Service Provider
Medium

Q. Laravel Service Provider의 역할과 register 메서드와 boot 메서드의 차이점을 설명해주세요. 또한 커스텀 Service Provider를 만들어야 하는 경우는 언제인지 실무 예시와 함께 설명해주세요.

A. 모범답안

Service Provider는 Laravel 애플리케이션의 부트스트래핑 중심지로, 서비스 컨테이너에 바인딩을 등록하고 초기화 작업을 수행합니다. register 메서드는 서비스 컨테이너 바인딩만 수행하며 다른 서비스에 의존하면 안 됩니다. boot 메서드는 모든 서비스가 등록된 후 실행되므로 다른 서비스를 사용할 수 있습니다. 커스텀 Service Provider는 패키지를 만들 때, 복잡한 서비스 초기화가 필요할 때, 또는 애플리케이션 전역에서 사용할 헬퍼나 매크로를 등록할 때 만듭니다.

핵심 포인트
  • • register는 서비스 바인딩만, boot는 초기화 및 설정 작업
  • • 애플리케이션 부트스트래핑의 핵심 메커니즘
  • • 패키지 개발이나 전역 서비스 등록 시 커스텀 Provider 생성
  • • 의존성 주입과 서비스 컨테이너의 진입점
Follow-up 질문

deferred provider는 무엇이며, 언제 사용하면 성능상 이점이 있나요?

4 Eloquent Scopes
Easy

Q. Laravel Eloquent의 Local Scope와 Global Scope의 차이점을 설명하고, 각각 어떻게 정의하고 사용하는지 설명해주세요. 또한 Global Scope를 제거해야 하는 경우 어떻게 하는지도 함께 설명해주세요.

A. 모범답안

Local Scope는 모델에서 scope 접두사를 붙인 메서드로 정의하며, 필요할 때만 명시적으로 호출하는 재사용 가능한 쿼리 조건입니다. Global Scope는 모델의 모든 쿼리에 자동으로 적용되는 조건으로, Scope 클래스를 만들거나 boot 메서드에서 정의합니다. 예를 들어 삭제된 데이터를 자동으로 제외하는 SoftDeletes가 Global Scope의 대표적인 예입니다. Global Scope를 일시적으로 제거하려면 withoutGlobalScope 메서드를 사용하면 됩니다.

핵심 포인트
  • • Local Scope는 명시적 호출, Global Scope는 자동 적용
  • • Local Scope는 scope 접두사 메서드로 정의
  • • Global Scope는 Scope 인터페이스 구현 또는 Closure로 정의
  • • withoutGlobalScope로 Global Scope 제거 가능
Follow-up 질문

여러 개의 Local Scope를 체이닝해서 사용할 때 주의해야 할 점은 무엇인가요?

5 Request Lifecycle
Medium

Q. Laravel 애플리케이션에서 HTTP 요청이 들어왔을 때부터 응답이 반환되기까지의 전체 생명주기를 순서대로 설명해주세요. 특히 Service Provider, Middleware, Route, Controller가 각각 어느 시점에 실행되는지 포함해서 설명해주세요.

A. 모범답안

요청이 들어오면 먼저 public/index.php가 실행되어 Laravel 애플리케이션을 부트스트랩합니다. 그 다음 모든 Service Provider의 register와 boot 메서드가 순차적으로 실행되어 서비스들이 등록됩니다. 요청은 HTTP 커널로 전달되어 글로벌 미들웨어를 거치고, 라우터가 매칭되는 라우트를 찾습니다. 라우트 미들웨어를 통과한 후 컨트롤러가 실행되어 비즈니스 로직을 처리하고, 응답이 생성되면 다시 미들웨어를 역순으로 거쳐 클라이언트에게 전달됩니다.

핵심 포인트
  • • index.php → 부트스트랩 → Service Provider 등록
  • • HTTP 커널 → 글로벌 미들웨어 → 라우팅
  • • 라우트 미들웨어 → 컨트롤러 실행 → 응답 생성
  • • 미들웨어 역순 통과 → 응답 반환
Follow-up 질문

terminate 메서드를 가진 미들웨어는 언제 실행되며, 어떤 용도로 사용하나요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!