Unetway
Список вопросов и задач при собеседовании PHP программиста

Список вопросов и задач при собеседовании PHP программиста

Готовясь к прохождению собеседования, PHP программисты часто задаются вопросами: что меня будут спрашивать, какие вопросы и задания могут быть? Вопросы и задачи могут быть абсолютно разными. Здесь нельзя предугадать, что конкретно у вас будут спрашивать, и какое тестовое задание попросят пройти.
В данной статье собраны наиболее часто встречающиеся вопросы и задачи, которые могут попасться на собеседовании и которые PHP программист должен знать.

Что такое $this и self в PHP?

$this - является ссылкой на текущий объект. self - является ссылкой на текущий класс.
Сколько типов данных  есть в PHP? Какие это типы данных?

В PHP есть 8 базовых типов данных

4 скалярных типа:

  • boolean - логический тип true/false
  • integer - целочисленный тип
  • float - числовой тип с плавающей точкой, содержащий целые и дробные числа
  • string - строковый тип

2 составных типа:

  • array - массив с упорядоченным списком элементов
  • object - объект

2 специальных типа:

  • resource - ссылка на внешний (абстрактный) ресурс.
  • NULL - пустой тип, без значения

Какой тип типизации данных в PHP?

В PHP используется динамическая типизация, не требующая объявления переменной и указания ее типа при объявлении.

Что такое static функция?

Static функция вызывается напрямую у класса и позволяет обращаться к свойствам и методам класса без создания экземпляра класса. При этом указатель $this не доступен внутри метода объявленного статическим.

Что такое конструктор?

Конструктор это метод _constructor(), который вызывается при создании экземпляра класса с помощью ключевого слова new.

Обязательно ли использовать закрывающий тег ?> в конце файла?

Нет, не обязательно. В файлах, где только PHP код, его лучше не использовать, чтобы предотвратить случайное попадание конечного пробела в вывод.

Как в PHP сделать множественное наследование?

В PHP нельзя сделать множественное наследование. У класса может быть только один родитель. Для эмуляции множественного наследования можно использовать функцию _call() или трейты (traits). Трейт позволяет группировать и повторно использовать наборы методов в нескольких классах.

В чем разница между require(), require_once(), include(), include_once()?

  • require() просто подключает в текущий файл указанный
  • require_once() подлключает указанный файл в текущий только в том случает, если он не был ранее подключен
  • include() работает также как и require(), подключает файл и в случае ошибки возвращает WARNING, в то время как require() возвращает FATAL ERROR
  • include_once() работает также как и require_once(), подключает файл если он не был ранее подключен и возвращает WARNING, в то время как require_once() возвращает FATAL ERROR.

В чем отличие цикла while от do while?

Тело цикла do-while выполнится хотя бы один раз, так как условие проверяется в конце цикла, в то время как в цикле while условие проходит проверку вначале.

Дан массив [1,2,3,4,5,6,7]. Как перевернуть его и получить [7,6,5,4,3,2,1]?

Чтобы перевернуть массив, можно использовать функцию array_reverse()

Дана строка "Hello world!". Как перевернуть строку?

Чтобы перевернуть строку, можно использовать функцию strrev()

Что такое рекурсия?

Рекурсия - это вызов функции из самой себя.

Что такое преинкремент и постинкремент?

Преинкремент (++$i) увеличивает значение, затем возвращает его.
Постинкремент ($i++) возвращает значение, затем увеличивает его.

Что работает быстрей: преинкремент или постинкремент?

Преинкремент работает быстрее, изменяя содержимое самой переменной, в то время как постинкремент создает временную переменную.

В чем разница между одинарными и двойными кавычками в PHP?

В отличии от одинарных, данные в двойных кавычках парсятся.
Например, при использовании двойных кавычек результат выведет Hello, а одинарные кавычки выведут переменную как текст, а не ее значение:

<?php
$data = 'Hello';
echo "$data";
?>

Как получить максимальное значение элемента массива [1,2,3,4,5,10,20,30,40,50,70,100, 10, 30, 50]?

Для получения максимального значения массива можно использовать функцию max().

$arr = [1,2,3,4,5,10,20,30,40,50,70,100, 10, 30, 50];
echo max($arr);

Либо сделать это через цикл:

$arr = [1,2,3,4,5,10,20,30,40,50,70,100, 10, 30, 50];
$max = $arr[0];
foreach ($arr as $row) {
 if ($max < $row) {
$max = $row;
}
echo $max;
}

Что такое магические методы в PHP?

Магические методы - это зарезервированные методы PHP, начинающиеся с двойного подчеркивания __

Что такое MVC?

MVC (Model-View-Controller) схема шаблона проектирования, разделенный на три компонента для работы с базой данных, интерфейсом отображения данных, взаимосвязью приложения с пользователем. Модель отвечает за работу с информацией из базы данных. Представление отвечает за отображение полученной информации на экран. Контроллер отвечает за взаимодействие между данными и отображением.

Что такое объектно-ориентированное программирование?

Объектно-ориентированное программирование - это парадигма программирования с использованием объектов и классов.

Назовите основные концепции объектно-ориентированного программирования

Основными концепциями объектно-ориентированного программирования являются: инкапсуляция, наследование, полиморфизм.
Инкапсуляция объединяет методы и данные и защищает от внешнего вмешательства или неправильного использования.
Наследование позволяет одному объекту наследовать методы и свойства другого объекта.
Полиморфизм создает общий интерфейс для схожих по смыслу действий, чтобы решать множество разных задач.

Что такое виртуальный метод?

Виртуальный метод является переопределенным методом класса в классах-наследниках для вызова во время исполнения.

Что такое класс?

Класс это модель еще не существующего объекта, описывающая устройство бъекта - его методы и свойства.

Что такое объект?

Объект это данные и методы для их обработки.

Что такое члены класса?

Членами класса называют данные и методы объекта.

В чем отличие класса от объекта?

Объект является экземпляром типа класса. Класс является типом данных.

Что такое область видимости переменной?

Область видимости переменной - это область, в пределах которой метод или переменная продолжает работать и возвращать значение.

Есть несколько типов определяемых область видимости методов и переменных:

  • public - переменная доступна из любого места
  • protected - защищенная переменная доступна только внутри класса, в котором была объявлена и из производных классов
  • private - закрытые методы и переменные доступны только внутри класса

В чем отличие локальной переменной от глобальной переменной?

Локальные переменные доступны только в конкретном методе, а глобальные во всей программе.

Что такое абстрактный класс?

Абстрактный класс в объектно-ориентированном программировании - это базовый класс, который не предполагает создания экземпляров. Абстрактные классы реализуют на практике один из принципов ООП - полиморфизм. Абстрактный класс может содержать (и не содержать[1]) абстрактные методы и свойства.

В чем разница между абстрактным классом и интерфейсом?

Абстрактный класс - имеет хотя бы один метод и обозначается как abstract.
Интерфейс - это тоже абстрактный класс, но он не может иметь свойств, и не определено содержимое методов.

Зачем интерфейс, когда есть абстрактный класс?

Произвести наследование можно только от одного абстрактного класса, но реализовать множество интерфейсов. Абстрактный класс наследуется, а интерфейс реализуется.

Понравился материал? Поделитесь с друзьями!

Автор

Автор сайта «Unetway», программист по образованию, работаю менеджером проектов, занимаюсь разработкой и развитием программного обеспечения.

Комментарии

Незарегистрированным пользователям запрещено комментировать.
Войдите или пройдите регистрацию