당신이 알아야 할 23가지 Laravel 인터뷰 질문!

藏色散人
풀어 주다: 2021-04-19 09:02:21
앞으로
3613명이 탐색했습니다.

다음laravel튜토리얼 칼럼에서는 꼭 알아야 할 라라벨 면접 질문 23가지를 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

다음 기술 인터뷰 전에 알아야 할 상위 20가지 Laravel 인터뷰 질문을 살펴보세요.

Q1: 라라벨이란 무엇인가요?

테마: Laravel
난이도: ⭐

Laravel은 Taylor Otwell이 만든 무료 오픈 소스 PHP 웹 프레임워크로, MVC(모델-뷰-컨트롤러) 아키텍처 패턴을 따르는 웹 애플리케이션을 개발하도록 설계되었습니다.

출처:codingcompiler.com

Q2: 다른 Php 프레임워크와 비교하여 Laravel의 이점은 무엇입니까?

테마: Laravel
난이도: ⭐
  • 다른 프레임워크에 비해 설정 및 사용자 정의 프로세스가 쉽고 빠릅니다.
  • 내장 인증 시스템
  • 여러 파일 시스템 지원
  • Laravel Socialite, Laravel cashier, Laravel elixir, Passport, Laravel Scout
  • PHP 활성 레코드로 구현된 Eloquent ORM(Object Relational Mapping)
  • 과 같은 사전 설치된 패키지 코드 프레임워크, 데이터베이스 구조 생성 및 마이그레이션 구축을 위한 내장 명령줄 도구 "Artisan"

출처:mytectra.com

Q3: Laravel의 마이그레이션 설명

주제: Laravel
난이도: ⭐⭐

Laravel 마이그레이션데이터베이스 버전 제어와 유사하여 팀이 애플리케이션의 데이터베이스 스키마를 쉽게 수정하고 공유할 수 있습니다. 마이그레이션은 애플리케이션의 데이터베이스 스키마를 쉽게 구축하기 위해 Laravel의 스키마 빌더와 함께 사용되는 경우가 많습니다.

출처:laravelinterviewquestions.com

Q4: Facade Pattern의 용도는 무엇인가요?

테마: Laravel
난이도: ⭐⭐

Facades는 애플리케이션의 서비스 컨테이너에서 사용할 수 있는 클래스에 대해static인터페이스를 제공합니다. 서비스 컨테이너의 기본 클래스에 대한정적 프록시인 Laravel 파사드는 기존 정적 방법보다 더 높은 테스트 가능성과 유연성을 유지하면서 간결하고 표현력 있는 구문의 이점을 제공합니다.

모든 Laravel 파사드는IlluminateSupportFacades네임스페이스에 정의되어 있습니다.
보기:

use Illuminate\Support\Facades\Cache; Route::get('/cache', function () { return Cache::get('key'); });
로그인 후 복사

출처:laravel.com

Q5: 서비스 컨테이너란 무엇인가요?

테마: Laravel
난이도: ⭐⭐

LaravelService Container는 클래스 종속성을 관리하고 종속성 주입을 수행하는 도구입니다.

출처:laravel.com

Q6: Eloquent 모델이란 무엇인가요?

테마: Laravel
난이도: ⭐⭐

Laravel과 함께 제공되는 Eloquent ORM은 데이터베이스 작업을 위한 아름답고 간단한 ActiveRecord 구현을 제공합니다. 각 데이터베이스 테이블에는 해당 테이블과 상호 작용하는 데 사용되는 해당Model이 있습니다. 모델을 사용하면 테이블의 데이터를 쿼리하고 테이블에 새 레코드를 삽입할 수 있습니다.

출처:laravel.com

Q7: Laravel 이벤트란 무엇인가요?

주제: Laravel
난이도: ⭐⭐

Laravel 이벤트는 애플리케이션에서 이벤트를 구독하고 들을 수 있는 간단한Observer 패턴구현을 제공합니다. 이벤트는 프로그램이 감지하고 처리하는 발생 또는 사물입니다.

다음은 Laravel의 이벤트에 대한 몇 가지 예입니다:

  • 새 사용자 등록
  • 새 댓글 게시
  • 사용자 로그인/로그아웃
  • 새 제품 추가.

출처:mytectra.com

Q8: Laravel의 쿼리 빌더에 대해 얼마나 알고 있나요?

테마: Laravel
난이도: ⭐⭐⭐

Laravel의 데이터베이스 쿼리 빌더는 데이터베이스 쿼리를 생성하고 실행하기 위한 편리하고 원활한 인터페이스를 제공합니다. 이는 애플리케이션 내에서 대부분의 데이터베이스 작업을 수행하는 데 사용할 수 있으며 지원되는 모든 데이터베이스 시스템에서 작동합니다.

Laravel 쿼리 빌더는 PDO 매개변수 바인딩을 사용하여 SQL 주입 공격으로부터 애플리케이션을 보호합니다. 바인딩으로 전달된 문자열을 지울 필요가 없습니다.

쿼리 빌더의 일부 기능:

  • 청킹
  • 집계
  • 선택
  • 네이티브 메소드
  • Joins
  • Unions
  • Where 문
  • 순서, 그룹화, 제한 및 오프셋

출처:laravel .com

Q9: 마이그레이션을 생성하는 방법은 무엇입니까?

테마: Laravel
난이도: ⭐⭐⭐

Migration은 데이터베이스의 버전 제어와 유사하므로 팀에서 애플리케이션의 데이터베이스 스키마를 쉽게 수정하고 공유할 수 있습니다. 마이그레이션은 애플리케이션의 데이터베이스 스키마를 쉽게 구축하기 위해 Laravel의 스키마 빌더와 함께 사용되는 경우가 많습니다.

要创建迁移,使用make:migrationArtisan 命令:

php artisan make:migration create_users_table
로그인 후 복사

新的迁移将放置在您的database/migrations目录中。每个迁移文件名都包含一个时间戳,该时间戳使 Laravel 可以确定迁移的顺序。

来源:laravel.com

Q10:如何 mock 一个静态 facade 方法?

主题: Laravel
难度:⭐⭐⭐

Facades 为应用程序的服务容器中可用的类提供“静态”接口。与传统的静态方法调用不同,Facades 是可被 mock 的。我们可以使用shouldReceive方法 mock 对静态外观方法的调用,该方法将返回Mockerymock 的实例。

// 实际代码 $value = Cache::get('key'); // 测试 Cache::shouldReceive('get') ->once() ->with('key') ->andReturn('value');
로그인 후 복사

来源:laravel.com

Q11:Eager Loading 有什么好处,何时使用?

主题: Laravel
难度: ⭐⭐⭐

当访问 Eloquent 关系作为属性时,关系数据是 “Lazy Loaded” 的。这意味着直到您首次访问该属性,关系数据才被实际加载。但是,Eloquent 可以在查询父模型时 “Eager Load” 关系。

当我们有嵌套对象时(例如书本->作者),Eager Loading 减轻了N + 1查询的问题。我们可以使用 Eager Loading 将此操作减少为仅2个查询。

来源:FullStack.Cafe

Q12:本地作用域有何用?

主题: Laravel
难度: ⭐⭐⭐

Scopes允许您轻松地在模型中复用查询逻辑。要定义 scope,只需在模型方法的前面加上 scope:

class User extends Model { public function scopePopular($query) { return $query->where('votes', '>', 100); } public function scopeWomen($query) { return $query->whereGender('W'); } }
로그인 후 복사

用法:

$users = User::popular()->women()->orderBy('created_at')->get();
로그인 후 복사

有时您可能希望定义一个接受参数的 scope。Dynamic scopes接受查询参数:

class User extends Model { public function scopeOfType($query, $type) { return $query->whereType($type); } }
로그인 후 복사

用法:

$users = User::ofType('member')->get();
로그인 후 복사

来源:laravel.com

Q13:Laravel中的路由命名是什么?

Topic: Laravel
Difficulty: ⭐⭐⭐

路由命名使得在生成重定向或者 URL 的时候更加方便地引用路由。您可以通过将 name 方法加到路由定义上来指定命名路由:

Route::get('user/profile', function () { // })->name('profile');
로그인 후 복사

您可以为控制器操作指定路由名称:

Route::get('user/profile', 'UserController@showProfile')->name('profile');
로그인 후 복사

为路由分配名称后,您可以在生成 URL 或重定向时,通过全局路由功能使用路由名称:

// Generating URLs... $url = route('profile'); // Generating Redirects... return redirect()->route('profile');
로그인 후 복사

来源:laravelinterviewquestions.com

Q14:Laravel中的闭包是什么?

主题: Laravel
难度:⭐⭐⭐

闭包是一个匿名函数。闭包通常用作回调方法,并且可以用作函数中的参数

function handle(Closure $closure) { $closure('Hello World!'); } handle(function($value){ echo $value; });
로그인 후 복사

来源:stackoverflow.com

Q15:列出 Laravel 中查询构建器提供的一些聚合方法?

主题: Laravel
难度: ⭐⭐⭐

聚合函数是一种功能,能够将多行的值组合在一起,作为某些条件下的输入,以形成具有更重要含义或度量值(例如集合,包或列表)的单个值。

以下是 Laravel 查询构建器提供的一些聚合方法的列表:

  • count()
$products = DB::table(‘products’)->count();
로그인 후 복사
  • max()
$price = DB::table(‘orders’)->max(‘price’);
로그인 후 복사
  • min()
$price = DB::table(‘orders’)->min(‘price’);
로그인 후 복사
  • avg()
*$price = DB::table(‘orders’)->avg(‘price’);
로그인 후 복사
  • sum()
$price = DB::table(‘orders’)->sum(‘price’);
로그인 후 복사

来源:laravelinterviewquestions.com

Q16:什么是 Laravel 中的反向路由?

主题: Laravel
难度:⭐⭐⭐

在 Laravel 中,反向路由会根据路由声明生成 URL。反向路由使您的应用程序更加灵活。例如,下面的路由声明告诉 Laravel 当请求的 URI 为 “login” 时在 users 控制器中执行 “login” 操作。

http://mysite.com/login

Route::get(‘login’, ‘users@login’);
로그인 후 복사

使用反向路由,我们可以创建到它的链接并传递我们定义的任何参数。如果未提供可选参数,则会从生成的链接中删除。

{{ HTML::link_to_action('users@login') }}
로그인 후 복사

它将在视图中创建类似 http://mysite.com/login 的链接。

来源:stackoverflow.com

Q17: :让我们为 PHP 创建枚举,提供一些代码示例。

主题: PHP
难度: ⭐⭐⭐

如果我们的代码需要对枚举常量和值进行更多验证,该怎么办?


根据使用情况,我通常会使用类似以下的简单内容:

abstract class DaysOfWeek { const Sunday = 0; const Monday = 1; // etc. } $today = DaysOfWeek::Sunday;
로그인 후 복사

这是一个扩展的示例,可以更好地服务于更广泛的案例:

abstract class BasicEnum { private static $constCacheArray = NULL; private static function getConstants() { if (self::$constCacheArray == NULL) { self::$constCacheArray = []; } $calledClass = get_called_class(); if (!array_key_exists($calledClass, self::$constCacheArray)) { $reflect = new ReflectionClass($calledClass); self::$constCacheArray[$calledClass] = $reflect - > getConstants(); } return self::$constCacheArray[$calledClass]; } public static function isValidName($name, $strict = false) { $constants = self::getConstants(); if ($strict) { return array_key_exists($name, $constants); } $keys = array_map('strtolower', array_keys($constants)); return in_array(strtolower($name), $keys); } public static function isValidValue($value, $strict = true) { $values = array_values(self::getConstants()); return in_array($value, $values, $strict); } }
로그인 후 복사

我们可以将其用作:

abstract class DaysOfWeek extends BasicEnum { const Sunday = 0; const Monday = 1; const Tuesday = 2; const Wednesday = 3; const Thursday = 4; const Friday = 5; const Saturday = 6; } DaysOfWeek::isValidName('Humpday'); // false DaysOfWeek::isValidName('Monday'); // true DaysOfWeek::isValidName('monday'); // true DaysOfWeek::isValidName('monday', $strict = true); // false DaysOfWeek::isValidName(0); // false DaysOfWeek::isValidValue(0); // true DaysOfWeek::isValidValue(5); // true DaysOfWeek::isValidValue(7); // false DaysOfWeek::isValidValue('Friday'); // false
로그인 후 복사

来源:stackoverflow.com

Q18:什么是PHP自动加载类?

主题: PHP
难度: ⭐⭐⭐

使用自动加载器,PHP 允许在由于错误而失败之前最后一次加载类或接口。

PHP中的spl_autoload_register()函数可以注册任意数量的自动加载器,即使未定义类和接口也可以自动加载。

spl_autoload_register(function ($classname) { include $classname . '.php'; }); $object = new Class1(); $object2 = new Class2();
로그인 후 복사

在上面的示例中,我们不需要包含 Class1.php 和 Class2.php。spl_autoload_register()函数将自动加载 Class1.php 和 Class2.php。

来源:github.com/Bootsity

Q19:PHP是否支持方法重载?

主题: PHP
难度:⭐⭐⭐

方法重载是使用具有不同签名的相同方法名称的现象。PHP 中函数签名仅基于它们的名称,并且不包含参数列表,因此不能有两个具有相同名称的函数,所以 PHP 不支持方法重载。

但是,您可以声明一个可变函数,它接受可变数量的参数。您可以使用func_num_args()func_get_arg()来传递参数并正常使用它们。

function myFunc() { for ($i = 0; $i < func_num_args(); $i++) { printf("Argument %d: %s\n", $i, func_get_arg($i)); } } /* Argument 0: a Argument 1: 2 Argument 2: 3.5 */ myFunc('a', 2, 3.5);
로그인 후 복사

来源:github.com/Bootsity

Q20:Laravel 中为什么需要 Traits?

主题: Laravel
难度: ⭐⭐⭐⭐

Traits已被添加到 PHP 中,原因很简单s:PHP 不支持多重继承。简而言之,一个类不能一次性扩展至多个类。当你需要在其他类也使用的两个不同类中声明的功能时,这变得很费力,结果是你必须重复执行代码才能完成工作,而不会纠缠自己。

引入 Traits,它能使我们声明一种包含多个可复用方法的类。更好的是,它们的方法可以直接注入到你使用的任何类中,并且你可以在同一类中使用多个 Trait。让我们看一个简单的 Hello World 示例。

trait SayHello { private function hello() { return "Hello "; } private function world() { return "World"; } } trait Talk { private function speak() { echo $this->hello() . $this->world(); } } class HelloWorld { use SayHello; use Talk; public function __construct() { $this->speak(); } } $message = new HelloWorld(); // returns "Hello World";
로그인 후 복사

来源:conetix.com.au

Q21:PHP 中的 Autoloader 是什么?

主题: Laravel
难度: ⭐⭐⭐⭐

自动加载器定义了自动在代码中包含 PHP 类的方法,而不必使用诸如 require 和 include 之类的语句。

  • PSR-4将支持更简单的文件夹结构,但是将使我们仅通过查看完全限定的名称就无法知道类的确切路径。
  • PSR-0在硬盘驱动器上比较混乱,但是支持恋旧的开发人员(类名下划线用户),并帮助我们通过以下方式辨别类的位置:看它的名字。

来源:sitepoint.com

Q22:在 PHP 中 yield 是什么意思?

主题: PHP
难度: ⭐⭐⭐⭐

解释此代码以及yield的作用:

function a($items) { foreach ($items as $item) { yield $item + 1; } }
로그인 후 복사

yield关键字从生成器函数返回数据。生成器函数实际上是编写Iterator的更紧凑和有效的方式。它允许您定义一个函数,该函数将在您遍历该函数时计算并返回值。

因此,问题中的函数与以下内容的函数几乎相同:

function b($items) { $result = []; foreach ($items as $item) { $result[] = $item + 1; } return $result; }
로그인 후 복사

只有一个区别,a()返回一个generator,而b()只是一个简单的数组。而且两者都可以被迭代。

函数的生成器版本未分配完整的数组,因此对内存的需求较少。生成器可用于解决内存限制。由于生成器仅按需计算其yielded值,因此它们用于代替计算成本昂贵或无法一次性计算的序列很有用。

来源:stackoverflow.com

Q23:$$$ 在 PHP 中是什么意思?

主题: PHP
难度: ⭐⭐⭐⭐⭐

类似$$variable的语法称为可变变量。

让我们尝试 $$$:

$real_variable = 'test'; $name = 'real_variable'; // variable variable for real variable $name_of_name = 'name'; // variable variable for variable variable echo $name_of_name . '
'; echo $$name_of_name . '
'; echo $$$name_of_name . '
';
로그인 후 복사

这是输出:

name real_variable test
로그인 후 복사

来源:guru99.com

原文链接:https://learnku.com/laravel/t/41264

위 내용은 당신이 알아야 할 23가지 Laravel 인터뷰 질문!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!