laravel面试题(全网最全必考面试题) - 知乎 (1)
00 分钟
2023-4-26
notion image

滑到最后有惊喜和福利哦!!!!

1、什么是 HTTP 中间件?

HTTP 中间件是一种用于过滤 HTTP 请求的技术。Laravel 包含一个中间件,用于检查应用程序用户是否已通过身份验证。

2、聚合查询生成器的方法名称

查询构建器的聚合方法是:1) max (),2) min (),3) sum (),4) avg () 和 5) count ()。

3、什么是 Route ?

路由基本上是由 URI (统一资源标识符) 指定的端点。它在 Laravel 应用程序中充当指针。
最常见的是,路由指向控制器上的方法,还指出哪些 HTTP 方法可以访问该 URI。

4、 解释 Laravel 中的反向路由。

反向路由是一种基于符号或名称生成 URL 的方法。它使您的 Laravel 应用程序变得灵活。

5、解释 Laravel 中 traits 的特征

Laravel traits 是包含在另一个类中的一组函数。一个 trait 就像一个抽象类。您不能直接实例化它,但是可以在其他的类中试用它的方法。

6、 解释 Laravel 中契约的概念。

它们是 Laravel 框架的接口集合。这些契约提供核心服务。Laravel 中的契约包括相应的框架实现。
laravel跟tp都是PHP主流的框架,点击这里还有tp的面试题,感兴趣的小伙伴可以去了解一下。

7、如何注册您的服务提供者?

您可以在 config/app.php 配置文件中注册服务提供者,该配置文件包含一个数组,您可以在其中配置服务提供者的类名。

8、如何定义 Laravel 的门面?

所有的门面都定义在 Illuminate.upport.acades 命名空间当中。

9、 Laravel 中的服务容器是什么

服务容器是用于在 Laravel 中执行依赖注入的工具。用于存储各种注入到容器中的类库对象,首先会经过绑定到容器,然后在通过反射机制获取里面的对象,或者的时候会根据绑定的类型进行判断,例如有类、闭包、实例对象。会根据类型进行获取。
IOC:控制反转,从容器获取相关对象就为控制反转。控制正转就是自己实例自己的对象,给自己使用。而有了容器,就是由它帮助我们完整创建对象的过程。
DI:依赖注入,例如A类需要B类提供的功能,它们就存在依赖关系,而注入只是把对象B交给对象A。

10、如何在 Laravel 中开启查询日志?

您可以使用 enableQueryLog 方法在 Laravel 中启用查询日志。

11、 解释 Laravel 中事件的概念。

事件是一种动作或者操作,可以帮助您订阅和侦听 Laravel 应用程序中发生的事件。当发生任何活动时,Laravel 会自动出发某些事件。

12、 说一下依赖注入和依赖注入的类型.

它是‘其中一种对象依赖于另一个对象’的技术。 依赖注入有三种类型:
  • 1) 构造函数注入
  • 2) setter 注入
  • 3) 接口注入.

13、 使用 laravel 有什么优势吗?

下面是 laravel 的主要优点:
  • Laravel 具有 blade 模板引擎,可创建动态布局并增加编译任务.
  • 可以很简单的复用代码.
  • 您不需要手动维护和包含路径,因为 Laravel 具有自动加载功能.
  • 该框架可帮助您使用 LOC 容器制作新工具.
  • Laravel 提供了一个版本控制系统,可帮助简化迁移管理.

14、 说明 Laravel 中验证的概念.

在设计任何 Laravel 应用程序时,验证是一个重要的概念。它可以确保在将数据存储到数据库之前,数据始终采用预期的格式。Laravel 提供了多种验证数据的方法。 基础控制器特征是使用 ValidatesRequests 类,该类提供了一种有用的方法来验证来自客户端计算机的请求。

15、 ORM 代表什么?

ORM 代表对象关系映射,把数据库相关字段映射到对应的模型对象里面,相当于有多个一个抽象层。后面直接操作对象

16、 如何减少 Laravel 中的内存使用?

在处理大量数据时,可以使用 cursor 方法以减少内存使用量

17、定义一下 Laravel 使用的模板引擎.*,加载原理是什么?

Blade 是 Laravel 使用的功能强大的模板引擎。laravel根据路由检查到需要展示视图的时候,会根据请求文件的后缀找到对应的引擎,然后在进行渲染,并缓存为对应的静态文件。

18、为什么迁移很重要?

迁移非常重要是因为它允许您通过维护数据库一致性来共享应用程序。 如果不进行迁移,则很难共享任何 Laravel 应用程序。 它还允许您同步数据库。

19、 解释 PHP artisan

artisan 是 Laravel 的命令行工具。它提供的命令可帮助您轻松构建 Laravel 应用程序。

20、 如何生成软链接?

Laravel 用 php artisan storage:link 生成软链接。这样可以让不显示的目录供给公共请求的访问到资源。

21、哪个类用于处理异常?

Laravel 异常由 App.exceptions.handler 类处理。

22、 什么是常见的 HTTP 错误代码?

最常见的 HTTP 错误代码是:
  • 错误 404 –未找到页面时显示。 - 错误 - 401 –未授权错误时显示

23、 在 Laravel 中解释 Fluent 查询生成器。

它是一个数据库查询生成器,它提供了方便,快捷的界面来创建和运行数据库查询。

24、 列出 Laravel 中使用的常见 artisan 命令。

Laravel 支持以下工匠命令:
  • PHP artisan down;
  • PHP artisan up;
  • PHP artisan make:controller;
  • PHP artisan make:model;
  • PHP artisan make:migration;
  • PHP artisan make:middleware;

25、 在 Laravel 中 如何配置邮件发送?

Laravel 提供了一些 API,可以在本地和实时服务器上发送电子邮件。

26、授权是什么东西

这是一种使用密码标识用户登录凭据的方法。在 Laravel 中,可以使用带有两个参数 1) 用户名和 2) 密码的会话来管理它。

27、 delete ():从数据库表中删除所有记录

  • delete ():从数据库表中删除所有记录。 -softDeletes ():不会从表中删除数据。它用于将任何记录标记为已删除。但需要安装好软删除。

28、您将如何检查表是否在数据库中存在?

使用 Laravel 中的 hasTable () 函数检查所需的表是否在数据库中存在。
29、 Laravel 中 insert () 和 insertGetId () 函数之间的显著区别是什么?
  • Insert (): 此函数仅用于将记录插入数据库。不返回自增 ID
  • InsertGetId (): 此函数会在表中插入一条记录,但当 ID 字段自动递增时使用。(插入记录并返回自增的 ID)

30、 定义隐式控制器。

隐式控制器可帮助您定义适当的路由来处理控制器操作。您可以使用 Route :: controller () 方法在 route.php 文件中定义它们。

31、 如何在 Laravel 模型中自定义表名?

自定义表名,您可以重写 protected 变量 $ table 的值。

32、 定义 @include.

@include 用于加载多个模板视图文件。它可以帮助您将视图包括在另一个视图中。用户还可以在一个视图中加载多个文件。

33、 什么是 Eloquent?

Eloquent 是 在 laravel 中使用的 ORM 。它提供了简单的 active record 实现, 配合数据库使用。每个数据库表都有其模型,该模型用于与表进行交互。

34、 解释 Laravel guard (卫兵)

Laravel Guard 是一个用于查找经过身份验用户的特殊组件。 最初将请求的传入路由通过此防护来验证用户输入的凭据。防护措施在../config/auth.php 文件中定义。

35、 什么是 Laravel API 限流?

这是 Laravel 的功能。它提供了限流处理功能。限流可帮助 Laravel 开发人员开发安全的应用程序并防止 DOS 攻击。

36、 解释laravel 中的集合 Collections.

集合 Collections 是用于数组的包装器类。Laravel Eloquent 的查询使用一组最常用的函数来返回数据库结果。

37、 DB Facade 的用途是什么?

DB Facade 用于运行 SQL 查询,例如创建,查询,更新,插入和删除。主要是用到了门面的静态代理,通过门面把相关类库代理到容器里面的操作类库。

38、 对象关系映射的用途是什么?

对象关系映射是一种技术,可帮助开发人员在不考虑对象及其数据源之间的关系的情况下寻址,访问和操纵对象。

39、 解释 Laravel 中的路由概念。

它允许将您所有的应用程序请求路由到控制器。Laravel 路由确认并接受带闭包的统一资源标识符。

40、说明身份验证和授权之间的区别。

认证是指通过凭据确认用户身份,而授权是指收集对系统的访问权限。

41、什么监听器 - listeners,应用场景有哪些

在EventServiceProvider的linsten数组里面加上事件和监听器,键名是事件,键值里面的数组是一个或者多个监听器,当某一个事件发生的时候,传送给数组里面的那些个监听器,在执行一系列相关的操作
场景: 发送短信验证码事件、邮件、通知类相关

42、什么策略类?

策略类包括 Laravel 应用程序的授权逻辑。这些类用于特定的模型或资源。

43、什么是IOC(控制反转)?

IOC是一种设计思想,它主要控制了外部资源获取(不只是对象包括比如文件等)。并且由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以叫控制反转。

43、 具体讲讲依赖注入?

由容器动态的将某个依赖关系注入到组件之中,依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。
“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。

44、 什么是反射?

反射可以理解成根据类名返回该类的任何信息,它主要用来动态地获取系统中类、实例对象、方法等语言构件的信息,通过反射API函数可以实现对这些语言构件信息的动态获取和动态操作等。同时反射添加了对类、接口、函数、方法和扩展进行反向工作的能力。在Laravel框架中,服务容器解析服务的过程中就用到了反射机制。

45、 service服务容器是什么?

服务容器是一个用于管理类依赖和执行依赖注入的强大工具,也可以理解为就是一个自动产生类的工厂。

46、 Laravel+Redis广播如何实现?

Redis 广播使用 Redis 的 pub/sub 功能进行广播;同时你需要将其和能够接受 Redis 消息的 Websocket 服务器进行配对以便将消息广播到 Websocket 频道。
当 Redis 广播发布事件时,事件将会被发布到指定的频道上,传递的数据是一个 JSON 格式的字符串,其中包含了事件名称、数据明细 data、以及生成事件socket ID 的用户。
在消息推送的场景下,我们可以使用 WebSocket 协议来处理实时交互,它是一种双向协议,允许服务端主动推送信息到客户端。需要涉及内容如下:
1>Laravel Event
2>Redis
4>Node.js
具体配置步骤如下:
1.安装Predis库
composer require predis/predis 2.安装 laravel-echo-server
npm install -g laravel-echo-server
3.初始化 Socket 服务:
laravel-echo-server init
4.启动服务
laravel-echo-server start 启动
其实这个广播可以拆解为几个部分,消息队列,发布订阅,广播,这些内容我都是有讲过对应的一些视频,有需要的小伙伴也可以关注私聊我获取。

47、 任务调度是什么?

Cron 脚本能使计划任务定期地在系统后台自动运行。一般会在队列场景应用。
可以定时周期的去进行实现,比如时间节点,比如每周一,周末,每十分钟这些。

48、 Blade模板是什么?它的模板继承优势在哪?为什么要使用它?

Blade模板是Laravel提供一个既简单又强大的模板引擎;
和其他流行的PHP模板引擎不一样,他并不限制你在视图里使用原生PHP代码;
祝小伙伴面试顺利,拿到心仪offer,奥利给!
如果你喜欢我写的技术文章以及面试总结,欢迎关注收看我的视频,并且点赞、收藏、关注我哦。
我是luke,感谢你的关注!
据说点赞,喜欢,收藏了的小伙伴面试必过,拿到心仪offer!

评论