10 PHP interview questions and answers – (upwork)

  • Q

    Do you have any experience with LAMP?

    A

    LAMP is an open-source solution stack that contains everything you need to create a complete, stand-alone platform for your web application—Linux, Apache, MySQL, and PHP. This question is a good opportunity for your prospective programmer to detail any experience they have taking a web project from conception to completion.

     

  • Q

    What are PHP sessions and how do they work?

    A

    What you’re really asking is whether they know how to use session_start(). It either creates or resumes a session based on an identifier that is sent to the server via a GET or POST request or a cookie. The most common use case scenario on the web is when a website won’t let you comment or post without first prompting a login. How does it know whether you’re logged in? One way would be to place a cookie in the user’s browser; on every request the cookie is sent server-side, where PHP can be used to determine which information is sent back and displayed to the client. While session_start() saves session data in files by default, it is also possible to store sessions directly in the database.

     

  • Q

    How are classes loaded in PHP?

    A

    This is a good way to gauge a developer’s understanding of autoloading. Whenever a class is instantiated, a function is triggered. You can register a function with the spl_autoload que detailed below, courtesy of php.net:

    bool spl_autoload_register ([ callable $autoload_function [, bool$throw = true [, bool $prepend = false ]]] )

     

  • Q

    What are some of your favorite PHP design patterns?

    A

    Design patterns are basically best-practice templates that programmers can use to consistently write well-designed code more quickly. Here are a couple examples along with their use cases:

    The Singleton: Used when you only want to allow access to one instance of a particular class.

    The Factory: The factory pattern makes it
    easier to create multiple classes without repeating code. To change,
    rename, or replace the class, simply modify the factory.

     

  • Q

    Determine the value of $pear after executing the code below. What will strlen($pear) return? Explain your answer.

    A

    $pear = ‘PEAR ’;
    $pear[12] = ‘PHP Extension and Application Repository’;

    This question reveals a few interesting things about the way PHP interprets code. The value of $pear in the code above will be the string “PEAR P” or the string “PEAR ” followed by seven spaces, followed by “P,” which is the first character in the string “PHP Extension and Application Repository.” The value returned by strlen($pear) will thus be 13. Since an element of a string can only consist of one character, and the count of elements within a string starts with 0, $pear[12] sets the 13th character of the string to the letter “P.” Interestingly enough, we chose to set the 13th value of a string that only has five characters. While other language interpreters might have thrown an out-of-bounds index error, PHP is more forgiving and fills in the blanks with empty spaces.

     

  • Q

    Determine the output of the code below. Explain your answer.

    A

    var_dump(42 == 042);
    var_dump(‘042’ == 42);
    var_dump(‘042’ === 42);

    This question quizzes the coder on how the PHP interpreter handles numbers and strings.
    i. var_dump(42 == 042); will output bool(false) because the PHP interpreter treats leading zeroes as octals. 042 is 32 in decimal, which does not equal 42.
    ii. var_dump(‘042’ == 42); will output bool(true) because PHP interpreter will coerce the string into an integer but ignore the leading zero. 42 is equal to 42.
    iii. var_dump(‘042’ === 42); will output bool(false) because the === operator performs a stricter comparison and will not coerce the integer into a string.

     

  • Q

    Explain why the two code snippets below will evaluate to the same output.

    A

    $x = true or false; $x = true and false;
    var_dump($x); var_dump($x);

    This question is designed to test a coder’s knowledge of the order of operations. The first block of code is more straightforward, evaluating to true because of the “or” operator. The second code block, however, would typically be expected to evaluate to false. Instead, it evaluates to true because of how the PHP interpreter handles the order of operations: “=” is prioritized leading to the following equivalent code snippet:

    $x = true; // sets $x equal to true
    True and false; // evaluates to false, but does not affect anything

     

  • Q

    If $x = 100 + “25%” + “$40” what is the value of $x and why?

    A

    The answer is $x = 125, because PHP uses automatic type conversion in deciding how to treat variables and values depending on how they are used. When PHP encounters a string during an arithmetic operation, it will interpret any numerical value and ignore the remainder in order from left to right. Strings that don’t start with numbers are evaluated to zero.

    $x = 100 + 25 + 0 = 125.

     

  • Q

    Explain the difference between classes and interfaces.

    A

    In layman’s terms, an interface is a class without all the business logic. In an interface, all methods must be public and multiple inheritance is supported. However, all methods must be defined within the class that implements them. Abstract classes, on the other hand, can be declared with modifiers like public or internal, and can define properties or variables. Abstract classes do not support multiple inheritance and can only be extended by one abstract class.

     

  • Q

    Predict the output of the code below. Explain your answer.

    A

    $x = 2
    $y = 4
    $z = 6
    
    
    if($z > $y > $x) {
        echo “true”;
    }else{
        echo “false”;
    }

    At first glance, one would expect the boolean to evaluate to “true” because 6 > 4 > 2. However, the correct answer is “false” because PHP will first evaluate $z > $y, which returns a boolean value of 1 or true. It is this boolean value of 1 that is compared to the next integer in the chain, bool(1) > $z, which will result in NULL and echo “false.”

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s