ТОП 100 вопросов для интервью PHP JUNIOR

Общие вопросы

1. Что такое ссылки?

2. Каковы основные операции с использованием ссылок?

3. Назовите простые типы данных, поддерживаемые в РНР.

4. Что такое инкремент и декремент, в чем разница между префиксным и постфиксным инкрементом и декрементом?

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

6. В чем разница между =, == и ===?

7. Какие знаете принципы ООП?

8. Какая система типов используется в PHP? Опишите плюсы и минусы.

9. Чем отличаются ключевые слова: include и require, mysql_connect и mysql_pconnect?

10. Что такое интерфейсы? Используете ли вы их? Если да — расскажите об этом.

11. Что такое абстрактный класс и чем он отличается от интерфейса?

12. Может ли абстрактный класс содержать частный метод?

13. Какие модификаторы видимости есть в РНР?

14. Какие магические методы вы знаете и как их применяют?

15. Что такое генераторы и как их использовать?

16. Что делает оператор yield?

17. Что такое traits? Альтернативное решение? Приведите пример.

18. Опишите поведение при использовании traits с одинаковыми именами полей и / или методов.

19. Будут ли доступны частные методы trait в классе?

20. Можно ли компоновать traits в trait?

21. Расскажите об обработке ошибок и исключения (try catch, finaly и throw).

22. Что такое type hinting, как работает, зачем нужен?

23. Что такое namespace-ы и зачем они нужны?

24. Сравнение значений переменных в РНР и подводные камни? Приведение типов. Что изменилось в PHP 8 в этом контексте?

25. Как работает session в РНР, где хранится, как инициализируется?

26. Суперглобальные массивы. Какие знаете? Как использовали?

27. Сравните include vs required, include_once vs required_once.

28. Что означает сложность алгоритма?

29. Что такое замыкание в PHP? Приведите пример.

30. В чем разница между замыканием в PHP и JavaScript?

31. Что такое позднее связывание? Расскажите о поведении и применения static.

32. Как переопределить хранение сессий?

33. Расскажите о SPL-библиотеке (Reflection, autoload, структуры данных).

34. Расскажите о принципах SOLID.

35. Расскажите о шаблонах GRASP.

36. Расскажите о Dependency Injection: что такое DI-контейнеры? Какие есть варианты реализаций?

37. Что вам известно о MVC?

38. Что вам известно о шаблонах GoF?

39. Что вам известно о шаблонах, которые применяются в ORM?

40. Напишите на PHP пример реализации паттерна Singleton.

41. Что такое Docker? Каков принцип его работы?

42. Что такое LAMP / NAMP?

43. Расскажите о regexp.

44. Расскажите о SSH-протоколе.

45. Что такое PDO?

46. Что нового появилось в PHP 8?

47. Что такое PHP PEAR?

48. Какие версии PHP до сих пор поддерживаются?

49. В чем разница между GET и POST?

50. Чем отличаются операторы BREAK и CONTINUE?

51. Есть ли разница между одинарными и двойными кавычками?

52. Что такое Cookie и зачем они используются?

53. Что нельзя хранить в Cookie и почему?

54. Какую среду разработки предпочитаете и почему?

Git

55. Какой командой добавить изменения?

56. Какой командой зафиксировать изменения?

57. Какой командой отправить изменения в удаленный репозиторий?

Базы данных

58. Что такое транзакция?

59. Что такое нормализация?

60. Что такое денормализация? Для чего она нужна?

61. Какие есть типы связей в базе данных?

62. Что означает утверждение о том, что СУБД поддерживает контроль ссылочной целостности связей?

63. Если используемая вами СУБД не поддерживает каскадные удаления для поддержки ссылочной целостности связей, что можно сделать для достижения аналогичного результата?

64. Что такое первичный и внешний ключи?

65. В чем разница между первичным и уникальным ключами?

66. Какие есть типы JOIN и чем они отличаются?

67. Что такое курсоры в базах данных?

68. Что такое агрегатные функции SQL? Приведите несколько примеров.

69. Что такое миграции?

70. Расскажите о связи один к одному, один ко многим, многие ко многим.

71. Назовите и объясните три любых агрегирующих метода.

72. Зачем используют оператор группировки GROUP BY?

73. В чем разница между WHERE и HAVING? Приведите примеры.

74. В чем разница между операторами DISTINCT и GROUP BY?

75. Для чего нужны операторы UNION, INTERSECT, EXCEPT?

76. Опишите разницу типов данных DATETIME и TIMESTAMP.

77. Какие вы знаете движки таблиц и чем они отличаются?

78. Какие способы оптимизации производительности баз данных знаете?

79. Что такое партиционирование, репликация и шардинг?

80. Чем отличаются SQL от NoSQL базы данных?

81. Какие бывают NoSQL базы данных?

82. Какие типы данных есть в MySQL?

83. Разница между LEFT JOIN, RIGHT JOIN, INNER JOIN?

84. Разница между JOIN и UNION?

85. Что такое индексы? Как они влияют на время выполнения SELECT, INSERT?

86. Что такое хранимые процедуры, функции и триггеры в MySQL? Для чего они? Приведите примеры использования.

87. Как организовать сохранность вложенных категорий в MySQL?

Laravel

88. Какие есть связи и как они реализуются в Laravel?

89. Что такое полиморфные связи, как они работают?

90. Что такое middleware? Зачем это? На каком этапе выполняется?

Composer

91. Что такое Composer?

92. Чем отличается require от require-dev?

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

93. Спроектируйте базу данных для хранения информации о книгах и их авторах. Напишите запрос для выборки всех авторов и количества написанных ими книг.

94. Есть матрица 3×3. Посчитайте диагонали, только четные/нечетные числа в диагоналях.

95. Ваш приложение выдает 500 ошибку. Опишите последовательность поиска проблемы.

96. Напишите функцию, определяющую, является ли слово палиндромом.

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

        
            If (-1) print "True" else print "False"
        
    

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

        
            $a = 3; $b = 2;
            echo (int) $a / (int) $b;
        
    

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

        
            var_dump (array_merge ([2 => 'a'], [3 => 'b']));
        
    

100. Есть массив товаров в случайном порядке с указанием производителей. Напишите метод для его сортировки, чтобы максимальное количество первых товаров соответствовало такому критерию: каждый следующий товар должен иметь производителя, отличного от предыдущего.

101. Чему будет равняться $ x после выполнения выражения $ x = 1 + «1%» + «$ 1»?

102. Есть массив Integer. Напишите возможные способы, как увеличить каждый элемент на единицу (1).

103. Схематически реализовать структуру (классы) для задачи:

        
            Создать API для размещения постов в Facebook и Google.
            URL для размещения постов Google www.google.com/new-post?text=
            URL для размещения постов Google facebook.com/add-post?message=
        
    

106. Напишите цикл for так, чтобы аргумент цикла менялся в геометрической прогрессии.

107. Чему равны выражения:

        
            print (!! "false")

            print (!! true)

            print ((int) '125g7')

            print ((int) 'x52')
        
    

108. Каков результат выполнения функции? Как исправить результат?

        
            in_array (1, [0, '0', true])
        
    

109. Напишите класс с реализацией всех возможных способов строгой типизации данных с учетом возможностей PHP 7. 4.

Laravel:

110. Напишите метод для связи «многие ко многим». В методе добавьте условие для значения, которое сохранено в поле промежуточной таблицы. Например, есть студенты и курсы, на которые они записались. Запись студента на курс должна быть подтверждена. Подтверждение сохраняется в промежуточной таблице как is_approve. Для модели студентов должен быть метод approvedCourses.

111. Напишите запрос с использованием модели Query Builder, который будет соответствовать запросу:

        
            Select * from `users` where ( 'age'> 21 and ( 'has_education' == 1 or 'work_experience'> 2))
        
    

112. Напишите artisan-команду для создания модели и миграции для нее.

113. Напишите artisan-команду для очистки кэша фреймворка.