Heim > Artikel > Backend-Entwicklung > Über 20 wissenswerte PHP-Interviewfragen (mit Antwortanalyse)
In diesem Artikel werden mehr als 20 PHP-Interviewfragen mit Ihnen geteilt, auf etwaige Auslassungen geprüft, Lücken geschlossen und Ihnen dabei geholfen, die Grundlage zu festigen. Sehen Sie, wie viele davon Sie richtig beantworten können. Ich hoffe, es hilft allen.
Thema: PHP
Schwierigkeit: ⭐
==
zwischen zwei verschiedenen Typen um li>==
则在两个不同的类型之间进行强制转换===
操作符执行’类型安全比较‘这意味着只有当两个操作数具有相同的类型和相同的值时,它才会返回TRUE。
1 === 1: true 1 == 1: true 1 === "1": false // 1 是一个整数, "1" 是一个字符串 1 == "1": true // "1" 强制转换为整数,即1 "foo" === "foo": true // 这两个操作数都是字符串,并且具有相同的值
? 源自: https://stackoverflow.com/questions/80646/how-do-the-php-equality-double-equals-and-identity-triple-equals-comp
话题: PHP
困难: ⭐
为了能够通过引用传递变量,我们在其前面使用&,如下所示:
$var1 = &$var2
? 源自: https://www.guru99.com/php-interview-questions-answers.html
话题: PHP
困难: ⭐
$GLOBALS
是关联数组,包含对脚本全局范围内当前定义的所有变量的引用。
? 源自: https://www.guru99.com/php-interview-questions-answers.html
话题: PHP
困难: ⭐
PHP允许用户使用 ini_set() 修改 php.ini 中提到的一些设置。此函数需要两个字符串参数。第一个是要修改的设置的名称,第二个是要分配给它的新值。
给定的代码行将启用脚本的 display_error 设置(如果它被禁用)。
ini_set('display_errors', '1');
我们需要将上面的语句放在脚本的顶部,以便该设置一直保持启用状态,直到最后。此外,通过 ini_set() 设置的值仅适用于当前脚本。此后,PHP 将开始使用 php.ini 中的原始值。
? 源自: https://github.com/Bootsity/cracking-php-interviews-book
话题: PHP
困难: ⭐⭐
require()
函数与include()
函数相同,只是它处理错误的方式不同。如果出现错误,include()
函数会生成警告,但脚本会继续执行。require()
函数会产生致命错误,脚本会停止。
我的建议是99.9%的时间里只使用require_once
。
使用require
或include
代替意味着您的代码在其他地方不可重用,即您引入的脚本实际上是在执行代码,而不是提供类或某些类功能库。
? Source: https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once
主题: PHP
难度: ⭐⭐
stdClass
只是将其他类型强制转换为对象时使用的通用”空’’类。stdClass
不是PHP中对象的基类。这可以很容易地证明:
class Foo{} $foo = new Foo(); echo ($foo instanceof stdClass)?'Y':'N'; // 输出'N'
对于匿名对象,动态属性等很有用。
考虑StdClass
的一种简单使用场景是替代关联数组。请参见下面的示例,该示例显示json_decode()
如何允许获取StdClass实例或关联数组。
同样但未在本示例中显示的SoapClient::__soapCall
返回一个StdClass
实例。
//带有StdClass的示例 $json = '{ "foo": "bar", "number": 42 }'; $stdInstance = json_decode($json); echo $stdInstance - > foo.PHP_EOL; //"bar" echo $stdInstance - > number.PHP_EOL; //42 //Example with associative array $array = json_decode($json, true); echo $array['foo'].PHP_EOL; //"bar" echo $array['number'].PHP_EOL; //42
? 源自: https://stackoverflow.com/questions/931407/what-is-stdclass-in-php
话题: PHP
困难: ⭐⭐
没有区别,它们是一样的。 选择die()
而不是exit()
===
Der Operator führt einen 'typsicheren Vergleich' durch
const FOO = 'BAR'; define('FOO', 'BAR'); // but if (...) { const FOO = 'BAR'; // 无效 } if (...) { define('FOO', 'BAR'); // 有效 }Von: https://stackoverflow.com/questions/80646/how-do-the-php-equality-double-equals-and-identity-triple-equals-comp🎜🎜🎜🎜Q2: Wie übergebe ich Variablen per Referenz? 🎜🎜🎜🎜Thema: 🎜PHP🎜🎜Schwierigkeit: ⭐🎜🎜🎜Um eine Variable per 🎜Referenz🎜 übergeben zu können, verwenden wir 🎜&🎜 davor, etwa so: 🎜
$a = array('key1' => 'Foo Bar', 'key2' => null); isset($a['key1']); // true array_key_exists('key1', $a); // true isset($a['key2']); // false array_key_exists('key2', $a); // true🎜? 🎜Quelle: 🎜 https://www.guru99.com/php-interview-questions-answers.html🎜🎜🎜🎜🎜F3: Was bedeutet $GLOBAL? 🎜🎜🎜🎜Thema: 🎜PHP🎜🎜Schwierigkeit: ⭐🎜🎜🎜
$GLOBALS
ist ein assoziatives Array, das Verweise auf alle Variablen enthält, die derzeit im globalen Bereich des Skripts definiert sind. 🎜🎜? 🎜Von:🎜 https://www.guru99.com/php-interview-questions-answers.html🎜🎜🎜🎜🎜F4: Was ist der Nutzen von ini_set()? 🎜🎜🎜🎜Thema: 🎜PHP🎜🎜Schwierigkeit: ⭐🎜🎜🎜PHP ermöglicht Benutzern, einige in php.ini erwähnte Einstellungen mit ini_set() zu ändern. Diese Funktion erfordert zwei String-Parameter. Der erste ist der Name der zu ändernden Einstellung und der zweite ist der neue Wert, der ihr zugewiesen werden soll. 🎜🎜Die angegebene Codezeile aktiviert die display_error-Einstellung des Skripts, wenn sie deaktiviert ist. 🎜🎜ini_set('display_errors', '1');
🎜🎜Wir müssen die obige Anweisung oben im Skript platzieren, damit die Einstellung bis zum Ende aktiviert bleibt. Darüber hinaus gelten über ini_set() festgelegte Werte nur für das aktuelle Skript. Danach beginnt PHP, den ursprünglichen Wert aus php.ini zu verwenden. 🎜🎜? 🎜Von:🎜 https://github.com/Bootsity/cracking-php-interviews-book🎜🎜🎜🎜🎜F5: Wann sollte ich require und include verwenden? 🎜🎜🎜🎜Thema: 🎜PHP🎜🎜Schwierigkeit: ⭐⭐🎜🎜🎜 Die Funktion require()
ist mit der Funktion include()
identisch, bis auf die Art und Weise Es behandelt Fehler. Wenn ein Fehler auftritt, generiert die Funktion include()
eine Warnung, das Skript setzt jedoch die Ausführung fort. Die Funktion require()
generiert einen schwerwiegenden Fehler und das Skript wird gestoppt. 🎜🎜Mein Rat ist, in 99,9 % der Fälle einfach require_once
zu verwenden. 🎜🎜Die Verwendung von require
oder include
bedeutet stattdessen, dass Ihr Code nicht an anderer Stelle wiederverwendbar ist, d. h. das von Ihnen eingeführte Skript führt den Code tatsächlich aus, anstatt eine Klasse oder ähnliches bereitzustellen. Einige Klassenfunktionsbibliotheken . 🎜🎜? 🎜Quelle:🎜 https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once🎜🎜🎜🎜🎜F6: Was ist stdClass in PHP? 🎜🎜🎜🎜Thema: 🎜PHP🎜🎜Schwierigkeit: ⭐⭐🎜🎜🎜stdClass
ist nur eine generische „leere“ Klasse, die beim Umwandeln anderer Typen in Objekte verwendet wird keine Basisklasse für Objekte in PHP. Dies lässt sich leicht beweisen: 🎜$obj = (object) array('qualitypoint', 'technologies', 'India');🎜 Nützlich für anonyme Objekte, dynamische Eigenschaften usw. 🎜🎜 Betrachten Sie einen einfachen Anwendungsfall für
StdClass
als Ersatz für assoziative Arrays . Sehen Sie sich das Beispiel unten an, das zeigt, wie json_decode()
das Abrufen einer StdClass-Instanz oder eines assoziativen Arrays ermöglicht. 🎜SoapClient::__soapCall
gibt eine Instanz zurück von StdClass
🎜object(stdClass)#1 (3) { [0]=> string(12) "qualitypoint" [1]=> string(12) "technologies" [2]=> string(5) "India" }🎜? 🎜Quelle: 🎜 https://stackoverflow.com/questions/931407/what-is-stdclass-in-php🎜🎜🎜🎜🎜Q7: PHP Was ist das? Unterschied zwischen den()- und exit()-Funktionen in 🎜🎜🎜🎜Thema: 🎜PHP🎜🎜Schwierigkeit: ⭐⭐🎜🎜🎜Es gibt keinen Unterschied, sie sind gleich. Der einzige Vorteil von
exit().
ist wahrscheinlich, dass Sie Zeit sparen, indem Sie einen zusätzlichen Buchstaben eingeben 🎜🎜Quelle: 🎜 https://stackoverflow.com/questions/1795025/what-are -the-differences-in-die-and-exit -in-php🎜话题: PHP
困难: ⭐⭐
const
和define
的根本区别在于,const
在编译时定义常量,而define
在运行时定义常量。
const FOO = 'BAR'; define('FOO', 'BAR'); // but if (...) { const FOO = 'BAR'; // 无效 } if (...) { define('FOO', 'BAR'); // 有效 }
同样在PHP 5.3之前,const
命令不能在全局范围内使用。你只能在类中使用它。当你想要设置与该类相关的某种常量选项或设置时,应使用此选项。或者你可能想要创建某种枚举。一个好的const
用法的例子是摆脱了魔术数字。
Define
可以用于相同的目的,但只能在全局范围内使用。它应该仅用于影响整个应用程序的全局设置。
除非你需要任何类型的条件或表达式定义,否则请使用consts
而不是define()
——这仅仅是为了可读性!
? 源自: https://stackoverflow.com/questions/2447791/define-vs-const
话题: PHP
困难: ⭐⭐
array_key_exists
它会告诉你数组中是否存在键,并在$a
不存在时报错。null
,isset
才会返回true
。当$a
不存在时,isset
不会报错。考虑:
$a = array('key1' => 'Foo Bar', 'key2' => null); isset($a['key1']); // true array_key_exists('key1', $a); // true isset($a['key2']); // false array_key_exists('key2', $a); // true
? 源自: https://stackoverflow.com/questions/3210935/whats-the-difference-between-isset-and-array-key-exists
话题: PHP
困难: ⭐⭐
var_dump
函数用于显示变量/表达式的结构化信息,包括变量类型和变量值。数组递归浏览,缩进值以显示结构。它还显示哪些数组值和对象属性是引用。
print_r()
函数以我们可读的方式显示有关变量的信息。数组值将以键和元素的格式显示。类似的符号用于对象。
考虑:
$obj = (object) array('qualitypoint', 'technologies', 'India');
var_dump($obj)
将在屏幕的输出下方显示:
object(stdClass)#1 (3) { [0]=> string(12) "qualitypoint" [1]=> string(12) "technologies" [2]=> string(5) "India" }
print_r($obj)
将在屏幕的输出下方显示。
stdClass Object ( [0] => qualitypoint [1] => technologies [2] => India )
? 源自: https://stackoverflow.com/questions/3406171/php-var-dump-vs-print-r
话题: PHP
困难: ⭐⭐
notice
不是一个严重的错误,它说明执行过程中出现了一些错误,一些次要的错误,比如一个未定义的变量。warning
。 这个错误和上面的错误发生,脚本都将继续。fatal error
致命错误将终止代码。未能满足require()将生成这种类型的错误。? 源自: https://pangara.com/blog/php-interview-questions
话题: PHP
困难: ⭐⭐
检查 php.ini 中的“display_errors
”是否等于“on”,或者在脚本中声明“ini_set('display_error',1)
”。
然后,在你的代码中包含“ERROR_REPORTING(E_ALL)
”,以便在脚本执行期间显示所有类型的错误消息。
? 源自: https://www.codementor.io/blog/php-interview-questions-sample-answers-du1080ext
话题: PHP
困难: ⭐⭐
思考:
function showMessage($hello = false){ echo ($hello) ? 'hello' : 'bye'; }
? 源自: https://www.codementor.io/blog/php-interview-questions-sample-answers-du1080ext
话题: PHP
困难: ⭐⭐
PHP 只支持单一继承;这意味着使用关键字’extended’只能从一个类扩展一个类。
? 源自: https://www.guru99.com/php-interview-questions-answers.html
话题: PHP
困难: ⭐⭐
在 PHP 中,通过值传递的对象。
? 源自: https://www.guru99.com/php-interview-questions-answers.html
话题: PHP
困难: ⭐⭐
!=
表示 不等于 (如果$a不等于$b,则为 True), !==
表示 不全等 (如果$a与$b不相同,则为 True).
? 源自: https://www.guru99.com/php-interview-questions-answers.html
话题: PHP
困难: ⭐⭐
PDO 代表 PHP 数据对象。
它是一组 PHP 扩展,提供核心 PDO 类和数据库、特定驱动程序。它提供了供应商中立、轻量级的数据访问抽象层。因此,无论我们使用哪种数据库,发出查询和获取数据的功能都是相同的。它侧重于数据访问抽象,而不是数据库抽象。
? 源自: https://github.com/Bootsity/cracking-php-interviews-book
Topic: PHP
Difficulty: ⭐⭐
当程序执行出现异常报错时,后面的代码将不会再执行,这时PHP将会尝试匹配第一个catch块进行异常的处理,如果没有捕捉到异常程序将会报致命错误并显示”Uncaught Exception”。
可以在PHP中抛出和捕获异常。
为了处理异常,代码可以被包围在”try”块中.
每个 try 必须至少有一个对应的 catch
块 。多个不同的catch块可用于捕获不同类的异常。
在catch块中也可以抛出异常(或重新抛出之前的异常)。
思考:
try { print "this is our try block n"; throw new Exception(); } catch (Exception $e) { print "something went wrong, caught yah! n"; } finally { print "this part is always executed n"; }
? Source: https://github.com/Bootsity/cracking-php-interviews-book
Topic: PHP
Difficulty: ⭐⭐
echo
和 print
基本上是一样的. 他们都是用来打印输出数据的。
区别在于:
? Source: https://github.com/Bootsity/cracking-php-interviews-book
Topic: PHP
Difficulty: ⭐⭐⭐
require_once()
作用与 require()
的作用是一样的,都是引用或包含外部的一个php文件,require_once()
引入文件时会检查文件是否已包含,如果已包含,不再包含(require)它。
我建议在99.9%的时候要使用 require_once
使用require
或 include
意味着您的代码不可在其他地方重用,即您要拉入的脚本实际上是在执行代码,而不是提供类或某些函数库。
? Source: https://stackoverflow.com/questions/2418473/difference-between-require-include-require-once-and-include-once
Topic: PHP
Difficulty: ⭐⭐⭐
思考:
function has_string_keys(array $array) { return count(array_filter(array_keys($array), 'is_string')) > 0; }
如果$array
至少有一个字符串类型的 key ,它将被视为关联数组。
? Source: stackoverflow.com
Topic: PHP
Difficulty: ⭐⭐⭐
这里有几种实现方法:
思考 get-data.php:
echo json_encode(42);
思考 index.html:
<script> function reqListener () { console.log(this.responseText); } var oReq = new XMLHttpRequest(); // new 一个请求对象 oReq.onload = function() { // 在这里你可以操作响应数据 // 真实的数据来自 this.responseText alert(this.responseText); // 将提示: 42 }; oReq.open("get", "get-data.php", true); // ^ 不要阻塞的其余部分执行。 // 不要等到请求结束再继续。 oReq.send(); </script>
<div id="dom-target" style="display: none;"> <?php $output = "42"; // 此外, 做一些操作,获得 output. echo htmlspecialchars($output); /* 你必须避免特殊字符,不然结果将是无效HTML。 */ ?> </div> <script> var div = document.getElementById("dom-target"); var myData = div.textContent; </script>
<script> var data = <?php echo json_encode("42", JSON_HEX_TAG); ?>; // Don't forget the extra semicolon! </script>
? Source: https://stackoverflow.com/questions/23740548/how-do-i-pass-variables-and-data-from-php-to-javascript
Topic: PHP
Difficulty: ⭐⭐⭐
PHP 数组通过复制进行赋值,而对象通过引用进行赋值。所有默认情况下,PHP 将复制这个数组。这里有一个 PHP 参考,一目了然:
$a = array(1,2); $b = $a; // $b 是一个不同的数组 $c = &$a; // $c 是 $a 的引用
? Source: https://stackoverflow.com/questions/1532618/is-there-a-function-to-make-a-copy-of-a-php-array-to-another
英文原文地址:https://dev.to/fullstackcafe/45-important-php-interview-questions-that-may-land-you-a-job-1794
推荐学习:《PHP视频教程》
Das obige ist der detaillierte Inhalt vonÜber 20 wissenswerte PHP-Interviewfragen (mit Antwortanalyse). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!