Home > PHP Framework > Laravel > body text

These 23 Laravel interview questions you should know!

藏色散人
Release: 2021-04-19 09:02:21
forward
3698 people have browsed it

The following tutorial column will introduce you to 23 Laravel interview questions you should know. I hope it will be helpful to friends in need! 23 Laravel Interview Questions You Should Know

Explore the top 20 Laravel interview questions you should know before your next technical interview. Q1: What is Laravel?

Theme:

Laravel

Difficulty: ⭐
Laravel
is a free and open source PHP web framework created by Taylor Otwell, Designed to develop web applications following the Model-View-Controller (MVC) architectural pattern.

Source: codingcompiler.com

Q2: What are the benefits of Laravel compared to other Php frameworks? Theme:

Laravel

Difficulty: ⭐
The setup and customization process is easy and fast compared to other frameworks.
Built-in authentication system
  • Supports multiple file systems
  • Pre-installed packages such as Laravel Socialite, Laravel cashier, Laravel elixir, Passport, Laravel Scout
  • Eloquent ORM (Object Relational Mapping) implemented by PHP active record
  • Built-in command line tool "Artisan" for creating code framework, database structure and building its migration
  • Source:
  • mytectra.com

Q3: Explain migration in LaravelTopic:

Laravel

Difficulty: ⭐⭐
Laravel Migrations
Database-like version control allows teams to easily modify and share the application's database schema. Migrations are often used in conjunction with Laravel's schema builder to easily build your application's database schema.

Source: laravelinterviewquestions.com

Q4: What is the use of Facade Pattern? Theme:

Laravel

Difficulty: ⭐⭐
Facades
Provides a ## for classes available in the application's service container #static
Interface. Laravel facades serve as

static proxies for base classes in service containers, providing the advantages of concise and expressive syntax while maintaining higher testability and flexibility than traditional static methods. All Laravel facades are defined in the Illuminate\Support\Facades namespace. View:

use Illuminate\Support\Facades\Cache;

Route::get('/cache', function () {
    return Cache::get('key');
});
Copy after login

Source: laravel.com

Q5: What is a service container?

Topic: Laravel

Difficulty: ⭐⭐

Laravel Service Container is used to manage class dependencies and perform dependency injection tool.

Source: laravel.com

Q6: What are Eloquent Models?

Theme: Laravel

Difficulty: ⭐⭐

The Eloquent ORM that comes with Laravel provides a beautiful, simple ActiveRecord implementation for working with databases. Each database table has a corresponding Model used to interact with the table. Models allow you to query data in a table and insert new records into the table.

Source: laravel.com

Q7: What is a Laravel event?

Topic: Laravel

Difficulty: ⭐⭐

Laravel events provide a simple Observer Pattern implementation that allows subscribing and listening events in the application. An event is an occurrence or thing that a program detects and handles.
Here are some examples of events in Laravel:

New user registration

Post new comment

    User login/logout
  • New products added.
  • Source:
  • mytectra.com
Q8: How much do you know about the query builder in Laravel?

Theme: Laravel

Difficulty: ⭐⭐⭐

Laravel’s database query builder provides a convenient, smooth interface for creating and running database queries. It can be used to perform most database operations within an application and works on all supported database systems. The Laravel query builder uses PDO parameter binding to protect applications from SQL injection attacks. There is no need to clear the string passed as a binding.
Some features of the query builder:

Blocking

Aggregation

    Selects
  • Native methods
  • Joins
  • Unions
  • Where statement
  • Ordering, Grouping, Limit, & Offset
  • ##Source:
  • laravel .com
  • Q9: How to generate migration?

Theme: Laravel

Difficulty: ⭐⭐⭐

Migration is like version control of your database so your team can Easily modify and share your application's database schema. Migrations are often used in conjunction with Laravel's schema builder to easily build your application's database schema.

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

php artisan make:migration create_users_table
Copy after login

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

来源: laravel.com

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

主题:Laravel
难度:⭐⭐⭐

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

// 实际代码
$value = Cache::get('key');

// 测试
Cache::shouldReceive('get')
                    ->once()
                    ->with('key')
                    ->andReturn('value');
Copy after login

来源: 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');
    }
}
Copy after login

用法:

$users = User::popular()->women()->orderBy('created_at')->get();
Copy after login

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

class User extends Model {
    public function scopeOfType($query, $type)
    {
        return $query->whereType($type);
    }
}
Copy after login

用法:

$users = User::ofType('member')->get();
Copy after login

来源: laravel.com

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

Topic: Laravel
Difficulty: ⭐⭐⭐

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

Route::get('user/profile', function () {
    //
})->name('profile');
Copy after login

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

Route::get('user/profile', 'UserController@showProfile')->name('profile');
Copy after login

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

// Generating URLs...
$url = route('profile');

// Generating Redirects...
return redirect()->route('profile');
Copy after login

来源: laravelinterviewquestions.com

Q14:Laravel中的闭包是什么?

主题:Laravel
难度:⭐⭐⭐

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

function handle(Closure $closure) {
    $closure('Hello World!');
}

handle(function($value){
    echo $value;
});
Copy after login

来源: stackoverflow.com

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

主题: Laravel
难度: ⭐⭐⭐

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

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

  • count()
$products = DB::table(‘products’)->count();
Copy after login
  • max()
    $price = DB::table(‘orders’)->max(‘price’);
Copy after login
  • min()
    $price = DB::table(‘orders’)->min(‘price’);
Copy after login
  • avg()
    *$price = DB::table(‘orders’)->avg(‘price’);
Copy after login
  • sum()
    $price = DB::table(‘orders’)->sum(‘price’);
Copy after login

来源: laravelinterviewquestions.com

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

主题:Laravel
难度:⭐⭐⭐

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

http://mysite.com/login

Route::get(‘login’, ‘users@login’);
Copy after login

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

{{ HTML::link_to_action('users@login') }}
Copy after login

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

来源: stackoverflow.com

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

主题: PHP
难度: ⭐⭐⭐

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


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

abstract class DaysOfWeek
{
    const Sunday = 0;
    const Monday = 1;
    // etc.
}

$today = DaysOfWeek::Sunday;
Copy after login

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

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);
    }
}
Copy after login

我们可以将其用作:

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
Copy after login

来源: stackoverflow.com

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

主题: PHP
难度: ⭐⭐⭐

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

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

spl_autoload_register(function ($classname) {
    include  $classname . '.php';
});
$object  = new Class1();
$object2 = new Class2();
Copy after login

在上面的示例中,我们不需要包含 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(&#39;a&#39;, 2, 3.5);
Copy after login

来源: 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";
Copy after login

来源: 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;
    }
}
Copy after login

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

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

function b($items) {
    $result = [];
    foreach ($items as $item) {
        $result[] = $item + 1;
    }
    return $result;
}
Copy after login

只有一个区别,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 . '<br />';
echo $$name_of_name . '<br />';
echo $$$name_of_name . '<br />';
Copy after login

这是输出:

name
real_variable
test
Copy after login

来源: guru99.com

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

The above is the detailed content of These 23 Laravel interview questions you should know!. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template