7个基本的Drupal面试问题 *

Toptal提供了最好的Drupal开发人员和工程师可以回答的基本问题. 在我们社区的推动下,我们鼓励专家提交问题并提供反馈.

Hire a Top Drupal Developer Now
Toptal logo是顶级自由软件开发人员的专属网络吗, designers, finance experts, product managers, and project managers in the world. 顶级公司雇佣Toptal自由职业者来完成他们最重要的项目.

Interview Questions

1.

命名并描述Drupal系统中的五个概念层.

View answer

The five layers, starting from the bottom layer, are as follows:

  1. Data (nodes, etc.). 在任何东西可以在网站上显示之前,它必须作为数据输入.
  2. Modules. 模块是功能性插件,它们要么是Drupal核心的一部分,要么是构建在Drupal核心功能之上的贡献模块.
  3. Blocks and menus. Blocks can be used to present anything, 所以Drupal站点上的任何内容(除了主要内容), breadcrumbs, (主/次菜单)通常是一个块. block是Drupal的一个可扩展核心特性,block模块提供了一个简单的API. 块类似于内容管理系统中的“小部件”,但是是高度一般化的. Menus 链接(菜单项)的集合是用来浏览网站的吗. Menu模块提供了一个接口来控制和定制Drupal自带的菜单系统. By default, 新的菜单项被放置在一个名为Navigation的内置菜单中, 但是管理员也可以创建自定义菜单.
  4. User permissions. 为各种角色定义了用户权限,并将用户分配给这些角色,以便向他们授予定义的权限.
  5. Themes and templates. drupal体系结构的顶层概念层是主题. 这主要由XHTML和CSS组成, with some PHP variables intermixed, 这样drupal生成的内容就可以放在合适的位置. 每个主题还包含一组函数,可用于覆盖模块中的标准函数,以便完全控制模块在输出时如何生成标记. 主题可以包含一个或多个模板, 取决于网站的复杂性和它的设计方式.
2.

Drupal的分类系统是什么?它的一些关键特性是什么?

View answer

Drupal提供了一个内置的分类法系统,允许对站点上的节点进行分类.

分类法系统允许对术语进行任意定义, 以及将这些术语任意组织成词汇表. 可以创建的词汇表的数量没有限制, 词汇表中可以包含的术语数量也没有任何限制.

词汇表也可以有自由标记,这意味着, 而不是提前输入具体条款, 用户可以在创建内容时自由输入标记,这些标记将自动成为该词汇表中的术语.

Drupal的分类法系统是其最强大、最灵活的特性之一.

3.

请描述一下Drupal 7核心中引入的Field API.

View answer

Field API允许将自定义数据字段附加到Drupal实体并负责存储, loading, editing, and rendering field data. Any entity type (node, user, etc.)可以使用Field API使自己成为“可字段”,从而允许附加字段. 其他模块可以提供一个用户界面,用于通过web浏览器管理自定义字段,以及广泛而灵活的各种数据类型, form element, and display format capabilities.

Field API定义了两个主要的数据结构:Field和Instance,以及Bundle的概念. 字段定义了可以附加到实体的特定类型的数据. 字段实例是附加到单个Bundle的字段. Bundle是一组字段,它们被Field Attach API视为一个组,并且与单个可字段实体类型相关.

例如,假设站点管理员希望文章节点具有副标题和照片. Using the Field API or Field UI module, 管理员创建类型为“text”的名为“subtitle”的字段和类型为“image”的名为“photo”的字段。. The administrator (again, via a UI) creates two Field Instances, 一个将字段' subtitle '附加到' node ' bundle ' article ',另一个将字段' photo '附加到' node ' bundle ' article '. 当节点系统使用Field Attach API来加载Article节点的所有字段时, 它将节点的实体类型(' node ')和内容类型(' article ')作为节点的bundle传递. field_attach_load() 然后加载' subtitle '和' photo '字段,因为它们都附加到' node ' bundle ' article '.

字段定义表示为键/值对数组.

注意,以上答案摘自 Drupal API Documentation, where more information can be found.

申请加入Toptal的发展网络

and enjoy reliable, steady, remote Freelance Drupal Developer Jobs

Apply as a Freelancer
4.

解释Drupal系统中“节点”的概念.

View answer

Drupal网站上的所有内容都作为“节点”存储和处理。. A node is any piece of individual content (e.g.、网页、文章、论坛主题、博客条目等.). Note, though, that omments are not stored as nodes but are always connected to a node.

创建不同“内容类型”的能力是Drupal允许您为不同目的拥有不同类型节点的一种方式. For example, an “article” is one content type, a “book page” is another, and a “blog entry” yet another. 您还可以创建自己的新内容类型.

将所有内容视为节点提供了极大的灵活性,方便并简化了创建新类型内容的过程. 它还可以很容易地将新特性或更改应用到特定类型的所有内容.

5.

描述Views模块的特性和用法.

View answer

Using the Views module, 您可以从站点的数据库中获取内容,并将其作为列表呈现给用户, posts, galleries, tables, maps, graphs, menu items, blocks, reports, forum posts etc. 可以显示不同的内容类型,包括节点、用户和其他包.

Views UI, a submodule within Views, 提供了一个图形界面,下面是一个强大的SQL查询构建器,可以访问数据库中的几乎任何信息,并以任何格式显示它.

不同的显示方式可以将查询结果显示为站点上带有固定url的页面(或接受参数的url)。, blocks, feeds, or panel panes.

您还可以使用视图来显示相关内容或实现上下文过滤器. For example, 您可以显示用户列表以及指向他们创建的内容的链接,或者您可以根据用户ID向用户显示定制的内容.

More information is available in the Views documentation on the Drupal site.

6.

相对于Ruby on Rails这样的低级框架,Drupal有哪些合适的用例?

View answer

Rails是Ruby的通用web应用程序框架. 它旨在帮助程序员在构建各种类型的网站时更有效率, not just CMSs. And note that it’s for “programmers”. 除非您打算编写服务器端代码, 你不能指望仅仅使用Rails就能完成很多事情(但是如果你真的打算写代码的话), Ruby和Rails都是非常高效的).

Drupal是一个内容管理系统,有数百个这样的系统. It happens to be written in PHP, 但是它的模块化设计和大量可用模块和主题的集合使得设计和实现各种各样的网站成为可能,而不需要编写一行代码. 但最重要的是,它本质上是一个CMS. 您的站点的需求离CMS的最佳点越远, Drupal成为您最佳选择的可能性就越小.

7.

Explain the “hook” system in Drupal. How and why would you use it?

View answer

Drupal的钩子系统本质上是一种实现自定义特性的机制,无需对Drupal核心进行任何修改. Drupal核心可以在特定的地方调用模块中定义的自定义函数来增强核心的功能. 这些地方被称为“钩子”,并且具有定义良好的接口.

例如,Hooks使模块可以在站点内定义新的url和页面(hook_menu), to add content to pages (hook_block, hook_footer, etc.), set up custom database tables (hook_schema), and so on.

假设您想要更改核心“Contact”表单. To do so, you can implement hook_form_alter 在自定义模块中,并提供您希望在该函数中使用的任何自定义功能. Drupal will check all form_alter hooks in all modules, 这样你的钩子就会被选中,你的自定义代码就会应用到“联系人表单”上。.

So overall, Drupal钩子只是根据Drupal标准定义的函数,允许您扩展Drupal并更改或扩展核心功能,而无需修改任何核心代码.

面试不仅仅是棘手的技术问题, 所以这些只是作为一个指南. 并不是每一个值得雇佣的“A”候选人都能回答所有的问题, 回答所有问题也不能保证成为A级考生. At the end of the day, 招聘仍然是一门艺术,一门科学,需要大量的工作.

Why Toptal

Tired of interviewing candidates? 不知道该问什么才能让你得到一份好工作?

让Toptal为你找到最合适的人.

Hire a Top Drupal Developer Now

我们的Drupal开发者独家网络

希望找到一份Drupal开发人员的工作?

Let Toptal find the right job for you.

Apply as a Drupal Developer

Job Opportunities From Our Network

Submit an interview question

提交的问题和答案将被审查和编辑, 并可能会或可能不会选择张贴, at the sole discretion of Toptal, LLC.

* All fields are required

Looking for Drupal Developers?

Looking for Drupal Developers? Check out Toptal’s Drupal developers.

Rafael Silva

Freelance Drupal Developer
BrazilExpert Drupal Developer at Toptal Since August 27, 2019

拉斐尔是一位经验丰富的web开发人员,在为MIT和无国界医生等著名组织开发Drupal CMS项目方面拥有超过7年的专业知识. 他擅长使用自动化测试开发后端和前端代码, integrating systems through APIs, 建立基于集装箱的基础设施. 无论是工作还是沟通,拉斐尔都力求品质.

Show More

Stephen Villee

Freelance Drupal Developer
United StatesExpert Drupal Developer at Toptal Since January 8, 2016

Stephen已经做了30多年的软件工程师. 从20世纪80年代为Unix平台开发软件到用PHP开发企业级金融和电子商务软件, JS, and the C language family, 他以一丝不苟和开发高质量的软件而自豪. He is a dedicated, 工作效率高,善于沟通, 并期待为您的项目贡献有价值的技能!

Show More

Richard Dam

Freelance Drupal Developer
VietnamExpert Drupal Developer at Toptal Since July 10, 2019

Richard是一位经验丰富的产品工程师,在AI/ML领域拥有超过十年的创新产品开发经验, payment, and eCommerce fields. He's an experienced team leader, 为一家初创公司的人工智能聊天机器人推动了10倍的增长,并成功领导了GO VIET的工程团队. 他是一家金融科技公司的首席技术官, 理查德对产品工程和驱动结果的热情使他成为任何技术团队的宝贵资产.

Show More

Toptal Connects the Top 3% 世界各地的自由职业人才.

Join the Toptal community.

Learn more