Verification: a143cc29221c9be0

100 вопросов на собеседовании php

Содержание

Middle

Основы

  1. Как передаются переменные (по значению или по ссылке)?

  2. Какие процессы происходят, когда пользователь вводит в браузере URL?

  3. Что такое вариативная функция или spread-оператор?

  4. Что такое OWASP?

  5. Какие типы уязвимостей знаете? Как от них защищаться?

  6. Что такое идемпотентность метода? Какие HTTP-методы являются идемпотентными для REST?

  7. Что такое stateless?

  8. SOAP vs REST. В чем разница?

  9. Какие методы авторизации используют для построения API?

  10. Что может содержать интерфейс?

  11. Класс содержит свойство, которое, в свою очередь, является объектом. Что будет содержать это свойство в клонированный объект: ссылка на тот же дочерний объект или копию дочернего объекта? Что нужно сделать, чтобы это изменить?

  12. Что такое Mock? Где используют и зачем?

  13. Что такое PSR?

  14. Опишите реализацию одного из шаблонов проектирования.

  15. Что такое redis?

  16. Как хранятся данные в redis / memcached?

  17. Расскажите о целесообразности применения redis / memcached для кэширования. Какие плюсы и минусы?

  18. Назовите различия между nginx и apache.

  19. Что такое opcash? Как он работает?

  20. Что такое JIT? Как он работает?

  21. Зачем нужно ключевое слово final?

  22. Что нового в РНР 7/8?

  23. Что такое SOLID, DRY, KISS, YAGNI?

  24. Назовите паттерны проектирования, с которыми приходилось работать.

  25. Что такое простая фабрика?

  26. Что такое Service Layer и где его следует применять?

  27. Как устроен Singleton и почему его считают антипатерном?

  28. Что такое идемпотентность?

  29. Опишите жизненный цикл HTTP-запроса?

  30. Что такое куча и стек?

  31. Что такое рефлексия?

  32. Что такое хэш-функция и где она используется?

  33. Как применяются очереди в РНР?

  34. Как в общих чертах работает opcache?

  35. Что такое GRASP?

  36. Что такое TDD?

  37. Чем отличаются модульные тесты от интеграционных?

  38. Что такое трейты? Как применять на практике?

  39. Как разрешить конфликты при использовании trait?

  40. Как работает автозагрузки классов?

  41. В чем разница между стеком и очередью?

  42. Расскажите о Unit Tests (required), Functional Tests (optional). Моки и стаб в PHP.

  43. Представим ситуацию, в которой нам нужно вызвать частный метод, как это сделать?

  44. Опишите разницу между PHP-FPM и PHP на сокете.

  45. Как бы вы реализовали загрузки больших отчетов с большим количеством данных (файлы от 1 гигабайта до N гигабайт).

  46. ​​Как бы вы импортировали 50-гигабайтный файл xml в базу данных?

  47. Почему после PHP 5 идет сразу 7, куда делась 6?

  48. Есть ли разница между self и this в PHP?

  49. У нас есть важный PHP-файл, его надо запускать каждые 20 секунд, как бы вы это сделали?

  50. Как расшифровать 644 в правах на файл в Linux?

  51. Что такое Opcode?

Git

  1. В чем разница между merge и rebase?

  2. Какой командой можно сделать ресет изменений, не потеряв их?

  3. Что такое stash и зачем он нужен?

Базы данных

  1. Какая разница между MyISAM i InnoDB? В каких случаях и лучше применять?

  2. Как найти и оптимизировать «тяжелые» запросы?

  3. Какие типы индексов?

  4. Как хранить координаты точки на карте в БД?

  5. Какие типы индексов бывают в RDBMS?

  6. Какое свойство полей БД нужно учитывать при выборе типа индекса?

  7. Когда следует использовать индексы, преимущества и недостатки?

  8. Что такое ACID?

  9. Что такое план выполнения запроса и как его узнать?

  10. В чем разница между типами данных CHAR и VARCHAR в SQL?

  11. Каково назначение транзакций? Расскажите о принципе работы.

  12. Назовите 3-4 нормальные формы реляционных БД.

  13. Каково назначение репликации? Какие типы связей и в чем разница между ними?

  14. Что такое индексация? Какие типы индексов? Какой смысл их использовать?

  15. Что такое полнотекстовый поиск в MySQL? Как он реализуется?

  16. Что такое cursor в MySQL-процедурах?

  17. Расскажите о RabbitMQ или Gearman.

  18. Что знаете о Solr / ElasticSearch?

  19. Что такое deadlock MySQL?

  20. Влияет ли порядок JOIN на план выполнения MySQL-запроса?

Практические задания

  1. Вам нужно спарсить продукты и их цены с интернет-магазина. С помощью чего будете это делать и какие основные нюансы нужно учесть?

  2. Для сайта пользователей необходимо сделать механизм добавления и отображения аватарок. Как бы вы его реализовали?

  3. Какой результат выдаст такой код:

    class Test
    {
    		public $value;
    }
     
    $a = new Test;
    $a->value = 1;
     
    $b = $ a;
    $b->value = 2;
     
    echo $a->value;
  4. Какие модификаторы доступа допустимые в реализации метода getName

    abstract class Cls
    {
    		protected abstract function getName ();
    }
     
    class Child extends Cls
    {
    		(Public, protected, private) function getName () {}
    }
  5. Реализуйте очередь сообщений, используя MySQL для хранения данных. Как избежать ситуации, когда несколько воркеров получат в обработку одинаковое сообщение?

  6. Есть матрица с числами 3 × 3. Как найти числа, не имеющие парных / нечетных соседей?

  7. Есть мануал на API с курсом валют. Нужно найти минимумы-максимумы за 5 лет, а потом то же, но с разбивкой по месяцам.

  8. Сохраните свою библиотеку в БД. Нужно сохранить названия книг и имена авторов. Предложите структуру таблиц. Выведите отчет «книга - количество соавторов».

  9. Напишите архитектуру, которая основывается на базовой абстракции. Дочерние классы расширяются с помощью интерфейсов. Реализацию одинаковых методов выполните, используя трейты (реализовывать в абстракции).

  10. Напишите запрос, в результате выполнения которого выведется значение id и val, если значение столбца column> 5 => val = val1 иначе val2.

    id

    column

    val1

    val2

    1

    1

    a

    d

    2

    6

    b

    e

    3

    2

    c

    f