Есть массив integer напишите возможные способы как увеличить каждый элемент на единицу 1

php logo

Хочешь знать больше о PHP?

Подпишись на наш канал с книгами о PHP в Telegram!

Подписаться

×

Перевод статьи «Співбесіда з PHP. 250+ запитань для Junior, Middle та Senior».

Сайт DOU.UA опубликовал статью со списком вопросов, которые задают 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=

104. Есть таблицы 2×3 и 3×2. Select * from a, b. Какова размерность результата?

В таблице есть запросы:

  • все пользователи из конкретного города
  • все удаленные пользователи;
  • все удаленные пользователи из конкретного города.

Какие индексы для таблицы лучше всего поставить?

105. Напишите запрос для увеличения значения column1 на 1 для id = 2

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-команду для очистки кэша фреймворка.

Middle

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

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

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

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

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. Что такое PuTTY?

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

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

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

Git

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

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

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

Базы данных

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

74. Что такое Дедлок MySQL?

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

Laravel

76. Как и какие запросы формируются при использовании метода with()?

77. Чем отличаются методы with() и load()?

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

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

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

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

class Test
{
public $ value;
}
 
$a = new Test;
$a->value = 1;
 
$b = $ a;
$b->value = 2;
 
echo $a->value;

81. Какие модификаторы доступа допустимы в реализации метода getName:

abstract class Cls
{
protected abstract function getName ();
}
 
class Child extends Cls
{
(Public, protected, private) function getName () {}
}

82. Реализуйте очередь сообщений, используя MySQL для хранения данных. Как избежать ситуации, когда несколько воркеров получат в обработку одинаковое сообщение?

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

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

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

86. Реализуйте простой роутинг, обеспечивающий работу Рауса по шаблону "/ {class_name} / {method_name} /"

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

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

89. Laravel: напишите расписание, которое будет выполняться по пятницам каждый час в 15 минут.

90. Напишите кастомную artisan-команду, которая будет выводить в консоль текущее время.

Senior

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

1. Как вы понимаете REST?

2. Что такое Copy-on-write?

3. Что такое позднее статическое связывание?

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

5. Что такое cohesion и coupling?

6. Как можно получить значение частного свойства класса в рантайме?

7. Как можно получить значение частного свойства класса в рантайме без использования рефлексии?

8. Стоит ли использовать в методах значение по умолчанию null? Если нет, то почему?

9. Стоит ли возвращать null из методов? Если нет, то почему и как писать код в таких случаях?

10. Стоит ли передавать null как параметр методов? Если нет, то почему и как писать код?

11. Как вы понимаете Special Case / Null Object и где его следует применять?

12. Какой подход следует применить во время тестирования кода, имеющего внешние зависимости (например, обращение к API Google)?

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

14. Что такое микросервисная архитектура?

15. Какие есть способы коммуникации между микросервисамы?

16. Расскажите о ReactPHP или Swoole.

17. Что такое фильтр Блума?

18. Что такое gap locks в MySQL?

19. Зачем нужно кэширование? Какую проблему оно решает?

20. Какие виды кеш-хранилищ вы знаете и применяли? Чем они отличаются?

21. Чем характеризуется эффективность кэширования?

22. Приведите сложный пример кэширования на практике.

23. Что такое sensitive данные? Как хранятся в базе? Как отражаются в логах?

24. Коротко расскажите об истории PHP. Что появлялось в каждой версии? Куда развивается PHP на ваш взгляд? Что нового в последней версии?

25. Как в PHP очистить память?

26. Что такое антипаттерны? Приведите несколько примеров.

27. Как сделать рефакторинг большого legacy-проекта? Как это аргументировать / продать PM-у, заказчику?

28. Чем отличается Dependency Injection от Service Locator?

29. Расскажите об утечке памяти в PHP. Приведите примеры. Как боролись?

30. Как работает Garbage Collector? Когда есть смысл вызвать?

31. По какому принципу будете выбирать архитектуру для своей будущей программы?

32. С какими видами архитектуры приложений сталкивались?

33. Структуры данных. Какие знаете, какие использовали на практике?

34. С какими еще видами API сталкивались? Какие были проблемы? Как решали?

35. Как вы понимаете Exception flow в контексте PHP?

36. Расскажите об автоматических анализаторах кода PHP (Roundcube т.д.).

37. Расскажите о Performance & профилировании PHP-кода (Xdebug, XHprof т.д.).

38. Расскажите, как бы вы реализовали систему, когда есть много источников данных, возвращающих в различных форматах данные о пользователе. Есть получатели данных, выбирающие, из каких источников они хотят принимать данные API.

39. Расскажите о проекте, которым по-настоящему гордитесь. Какие технологически необычные решения вы применили для его успешной реализации?

40. Как вы организуете тестирование кода? Когда покрытие тестами нерационально? Были ли у вас такие проекты?

Git

41. Как изменить только сообщение последнего коммита?

42. git rebase -i HEAD ~ 3 что делает эта команда и какие могут возникнуть проблемы при ее применении?

43. Зачем команда git bundle?

44. Какой командой можно влить коммит в текущую ветку?

45. Как выполнить склеивание коммитов?

Базы данных

46. Какие структуры данных поддерживает Redis?

47. Что подразумевается под понятием «триггер» в SQL?

48. Какая разница между реляционными и нереляционными СУБД?

49. Какие NoSQL СУБД знаете?

50. Что такое ACID Compliance?

51. Что такое Views? Какие преимущества и недостатки?

52. Что такое уровни изоляции транзакций?

53. Что такое concurrent query?

54. Что такое кластерные индексы?

55. Как построить социальную сеть, которая выдержит нагрузки в 100 000 посетителей в онлайне и сможет предлагать в друзья пользователям, например, из Нью-Йорка, людей, живущих в этом городе. Данных много, работать система должна быстро. Как все хранить? По какому принципу строить запросы?

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

56. Какой принцип нарушен в коде и как можно исправить код?

class Shape
{
            public $width;
            public $height;
 
            public function __construct($width, $height)
            {
                        $this->width = $width;
                        $this->height = $height;
            }
}
 
class Triangle
{
            public $radius;
 
            public function __construct($radius)
            {
                        $this->radius = $radius;
            }
}
 
class AreaCalculator
{
            public function calculate($shapes)
            {
                        foreach ($shapes as $shape) {
            if (is_a($shape, 'Square')) {
                                                $area[] = $shape->width * $shape->height;
            } else if (is_a($shape, 'Triangle')) {
                                                $area[] = $shape->radius * $shape->radius * pi();
                                    }
                        }
 
            return array_sum($area);
            }
}

57. Есть массив из 10 млн. уникальных строк. Программа получает новую строку, необходимо найти все строки из массива, удовлетворяющие критерию: расстояние Левенштейна до новой строки меньше 3 операций.

58. Нужно построить сервер отсылки емейлов. Какие классы / слои / абстракции вы бы выделили?

59. Как бы вы реализовали сокращалку урлов, сжиматель / разжиматель изображений, парсер последних сообщений форума, где упоминается определенный бренд, проверку цен на товары у конкурентов?

Формулировка задачи:

Заполнить массив из 10 элементов случайными числами из интервала от -10 до 10, вывести на экран, затем увеличить каждый элемент массива на 1 и повторно вывести на экран.

Код к задаче: «Увеличить каждый элемент массива на 1 и вывести на экран»

textual

randomize;
for i:=1 to 10 do
 begin
  a[i]:=-10+random(21);
  write(a[i]:4);
 end;
writeln;
for i:=1 to 10 do
 begin
  a[i]:=a[i]+1;
  write(a[i]:4);
 end;

Полезно ли:

5   голосов , оценка 4.000 из 5

Собрал список вопросов, по которым можно подготовиться к собеседованию или которые можно спросить у дипломированного PHP-разработчика. Конечно, список, не является исчерпывающим. Больше вопросов с кодом в нашем телеграм-канале @phpquiz. Погнали по вопросам!

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. Cуперглобальные массивы. Какие знаете? Как использовали?

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

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

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

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

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

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

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

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

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

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

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

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

  39. Напишите / расскажите на PHP пример реализации паттерна Singleton.

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

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

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

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

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

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

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

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

  48. Какие еще HTTP-методы знаете?

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

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

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

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

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

Git

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

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

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

Базы данных

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

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

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

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

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

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

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

  8. Какие различия между первичным и уникальным ключами?

  9. Какие типы JOIN и в чем различия?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  5. Какой результат выдаст такой код и почему: If (-1) print "True" else print "False"

  6. Какой результат выдаст такой код и почему:
    $a = 3;
     $b = 2;
     echo (int) $a / (int) $b;

  7. Какой результат выдаст такой код и почему: var_dump (array_merge ([2 => 'a'], [3 => 'b']));

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

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

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

  11. Есть таблица 2 × 3 и 3 × 2. Какая размерность результата даст запрос Select * from a, b?

  12. Напишите запрос для увеличения значения column1 на 1 для id = 2

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

  14. Что выведут выражения:
    print (!! "false")
    print (!! true)
    print ((int) '125g7')
    print ((int) 'x52')

  15. Результат выполнения функции? Как исправить результат?
    in_array (1, [0, '0', true])

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

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

Senior

Основы

  1. Как вы понимаете REST?

  2. Что такое Copy-on-write?

  3. Что такое позднее статическое связывание?

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

  5. Что такое cohesion и coupling?

  6. Как можно получить значение частной свойства класса в рантайме?

  7. Как можно получить значение частной свойства класса в рантайме без использования рефлексии?

  8. следует использовать в методах значение по умолчанию null. Если нет, то почему?

  9. Стоит ли возвращать null из методов. Если нет, то почему и как писать код в таких случаях?

  10. Стоит ли передавать null как параметр методов. Если нет, то почему и как писать код?

  11. Как вы понимаете Special Case / Null Object и где его следует применять?

  12. Какой подход следует применить во время тестирования кода, который имеет внешние зависимости (например, обращение к API Google)?

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

  14. Что такое микросервисная архитектура?

  15. Какие способы коммуникации между микросервисами?

  16. Расскажите о ReactPHP или Swoole.

  17. Что такое фильтр Блума?

  18. Что такое gap locks в MySQL?

  19. Зачем нужно кэширования? Какую проблему оно решает?

  20. Какие виды кеш-хранилищ знаете и применяли? Чем они отличаются?

  21. Чем характеризуется эффективность кэширования?

  22. Приведите сложный пример кэширования на практике.

  23. Что такое sensitive данные? Как хранятся в базе? Как отражаются в логах?

  24. Коротко расскажите об истории PHP. Что появлялось в каждой версии? Куда развивается PHP на ваш взгляд? Что нового в последней версии?

  25. Как в PHP очистить память?

  26. Что такое антипатерны? Приведите несколько примеров.

  27. Как сделать рефакторинг большого legacy-проекта. Как это аргументировать / продать PMу, заказчику?

  28. Чем отличается Dependency Injection от Service Locator?

  29. Расскажите о утечки памяти в PHP. Приведите примеры. Как боролись?

  30. Как работает Garbage Collector? Когда есть смысл вызвать?

  31. По какому принципу будете выбирать архитектуру для своей будущей программы?

  32. С какими видами архитектуры приложений сталкивались?

  33. Структуры данных. Какие знаете, какие использовали на практике?

  34. С какими еще видами API сталкивались? Какие были проблемы? Как решали?

  35. Как вы понимаете Exception flow в контексте PHP.

  36. Расскажите об автоматических анализаторы кода PHP (roundcube т.д.).

  37. Расскажите о Performance & профилирования PHP-кода (xdebug, xhprof т.д.).

  38. Расскажите, как бы вы реализовали систему, когда есть много источников данных, которые возвращают в различных форматах данные о пользователе. Есть получатели данных, которые выбирают, из каких источников они хотят принимать данные API.

  39. Расскажите о проект, которым по-настоящему гордитесь. Технологически необычные решения вы применили для его успешной реализации?

  40. Как вы организуете тестирование кода? Когда покрытие тестами нерациональное? Были ли у вас такие проекты?

Git

  1. Как изменить только сообщение последнего коммита?

  2. git rebase -i HEAD~3 что делает эта команда и какие могут возникнуть проблемы при ее применения?

  3. Зачем команда git bundle?

  4. Какой командой можно влить комит в текущую ветку?

  5. Как выполнить склеивания коммитов?

Базы данных

  1. ​​Какие структуры данных поддерживает Redis?

  2. Что подразумевается под понятием «триггер» в SQL?

  3. Какая разница между реляционными и нереляционные СУБД?

  4. Какие NoSQL СУБД знаете?

  5. Что такое ACID Compliance?

  6. Что такое Views? Какие преимущества и недостатки?

  7. Что такое уровни изоляции транзакций?

  8. Что такое concurrent query?

  9. Что такое кластерные индексы?

  10. Как построить социальную сеть, которая выдержит нагрузки в 100 000 посетителей в онлайне. И сможет предлагать пользователям, например, из Нью-Йорка, в друзья людей, которые живут в этом городе. Данных много, работать система быстро. Как все хранить? По какому принципу строить запросы?

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

  1. Какой принцип нарушен в коде и как код исправить?

    class Shape
    {
    		public $width;
        public $height;
     
        public function __construct($width, $height)
        {
    				$this->width = $width;
    				$this->height = $height;
    		}
    }
     
    class Triangle
    {
    		public $radius;
     
        public function __construct($radius)
        {
        		$this->radius = $radius;
    		}
    }
     
    class AreaCalculator
    {
    		public function calculate($shapes)
    		{
    				foreach ($shapes as $shape) {
    						if (is_a($shape, 'Square')) {
                		$area[] = $shape->width * $shape->height;
                } else if (is_a($shape, 'Triangle')) {
                    $area[] = $shape->radius * $shape->radius * pi();
                }
            }
     
            return array_sum($area);
    		}
    }
  2. Есть массив из 10 млн уникальных строк. Программа получает новую строку, необходимо найти все строки из массива, удовлетворяющих критерий: расстояние Левенштейна к новой строке менее 3 операции.

  3. Нужно построить сервер ссылки емейл. Какие бы классы / слои / абстракции вы выделили?

  4. Как бы вы реализовали укорачиватель ссылок , сжиматель/разжиматель изображений, парсер последних сообщений форума, где упоминается определенный бренд, проверку цен на товары у конкурентов?

Given the array, the task is to increment each element of the array by 1. Complete traversal is required for incrementing all the elements of an array. An optimized way to complete a given task is having time complexity as O(N).

Examples:

Input : arr1[] = {50, 25, 32, 12, 6, 10, 100, 150}
Output: arr1[] = {51, 25, 33, 13, 7, 11, 101, 151}

Input : arr2[] = {3, 6, 8, 12, 45}
Output: arr2[] = {4, 7, 9, 13, 46}

1. with pre-defined values:

First, Initializing the array arr[] with pre-defined values, and after that, the length of the array should be calculated. Then use a loop, to perform the operation that is to increment the values one by one with the help of for loop. After that, the resultant of the above operation will get stored into the array and then the output will be shown with the help of for loop one by one.

Java

public class Increment {

    public static void main(String[] args)

    {

        int[] arr = { 50, 25, 32, 12, 6, 10, 100, 150 };

        int n = arr.length;

        System.out.println(

            "******* BEFORE INCREMENT *******");

        for (int i = 0; i < n; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

        for (int i = 0; i < n; i++) {

            arr[i] = arr[i] + 1;

        }

        System.out.println(" ");

        System.out.println(

            "******* AFTER INCREMENT *******");

        for (int i = 0; i < n; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

    }

}

Output

******* BEFORE INCREMENT *******
50 25 32 12 6 10 100 150  
******* AFTER INCREMENT *******
51 26 33 13 7 11 101 151 

Time Complexity: O(N), Where N is the size of an array

2. with user-defined values:

Initializing the array arr[] with user-defined values i.e. the values of the array will be given by the user, and after that, the length of the array should be calculated. Then use a loop, to perform the operation that is to increment the values one by one with the help of for loop. After that, the resultant of the above operation will get stored into the array and then the output will be shown with the help of for loop one by one.

Java

import java.util.Scanner;

public class Increment2 {

    public static void main(String[] args)

    {

        System.out.println(

            "Enter the length of the array: ");

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        int[] arr = new int[n];

        int l = arr.length;

        System.out.println(

            "Enter the values you want to insert in array: ");

        for (int i = 0; i < l; i++) {

            arr[i] = sc.nextInt();

        }

        System.out.println(

            "******* BEFORE INCREMENT *******");

        for (int i = 0; i < l; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

        for (int i = 0; i < l; i++) {

            arr[i] = arr[i] + 1;

        }

        System.out.println(" ");

        System.out.println(

            "******* AFTER INCREMENT *******");

        for (int i = 0; i < l; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

    }

}

Output:

Time Complexity: O(N), where N is the size of an array

Given the array, the task is to increment each element of the array by 1. Complete traversal is required for incrementing all the elements of an array. An optimized way to complete a given task is having time complexity as O(N).

Examples:

Input : arr1[] = {50, 25, 32, 12, 6, 10, 100, 150}
Output: arr1[] = {51, 25, 33, 13, 7, 11, 101, 151}

Input : arr2[] = {3, 6, 8, 12, 45}
Output: arr2[] = {4, 7, 9, 13, 46}

1. with pre-defined values:

First, Initializing the array arr[] with pre-defined values, and after that, the length of the array should be calculated. Then use a loop, to perform the operation that is to increment the values one by one with the help of for loop. After that, the resultant of the above operation will get stored into the array and then the output will be shown with the help of for loop one by one.

Java

public class Increment {

    public static void main(String[] args)

    {

        int[] arr = { 50, 25, 32, 12, 6, 10, 100, 150 };

        int n = arr.length;

        System.out.println(

            "******* BEFORE INCREMENT *******");

        for (int i = 0; i < n; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

        for (int i = 0; i < n; i++) {

            arr[i] = arr[i] + 1;

        }

        System.out.println(" ");

        System.out.println(

            "******* AFTER INCREMENT *******");

        for (int i = 0; i < n; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

    }

}

Output

******* BEFORE INCREMENT *******
50 25 32 12 6 10 100 150  
******* AFTER INCREMENT *******
51 26 33 13 7 11 101 151 

Time Complexity: O(N), Where N is the size of an array

2. with user-defined values:

Initializing the array arr[] with user-defined values i.e. the values of the array will be given by the user, and after that, the length of the array should be calculated. Then use a loop, to perform the operation that is to increment the values one by one with the help of for loop. After that, the resultant of the above operation will get stored into the array and then the output will be shown with the help of for loop one by one.

Java

import java.util.Scanner;

public class Increment2 {

    public static void main(String[] args)

    {

        System.out.println(

            "Enter the length of the array: ");

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        int[] arr = new int[n];

        int l = arr.length;

        System.out.println(

            "Enter the values you want to insert in array: ");

        for (int i = 0; i < l; i++) {

            arr[i] = sc.nextInt();

        }

        System.out.println(

            "******* BEFORE INCREMENT *******");

        for (int i = 0; i < l; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

        for (int i = 0; i < l; i++) {

            arr[i] = arr[i] + 1;

        }

        System.out.println(" ");

        System.out.println(

            "******* AFTER INCREMENT *******");

        for (int i = 0; i < l; i++) {

            System.out.print(arr[i]);

            System.out.print(" ");

        }

    }

}

Output:

Time Complexity: O(N), where N is the size of an array

Пусть у нас дан вот такой массив с числами:

<?php
$arr = [1, 2, 3, 4, 5];
?>

Давайте увеличим каждый элемент этого массива
в два раза:

<?php
$arr = [1, 2, 3, 4, 5];

$arr[0] = $arr[0] * 2;
$arr[1] = $arr[1] * 2;
$arr[2] = $arr[2] * 2;
$arr[3] = $arr[3] * 2;
$arr[4] = $arr[4] * 2;

var_dump($arr); // выведет [2, 4, 6, 8, 10]
?>

Давайте теперь то же самое выполним в цикле:

<?php
$arr = [1, 2, 3, 4, 5];
$length = count($arr);

for ($i = 0; $i < $length; $i++) {
$arr[$i] = $arr[$i] * 2;
}

var_dump($arr); // выведет [2, 4, 6, 8, 10]
?>

Дан массив с числами. Переберите этот массив
циклом и возведите каждый элемент этого массива
в квадрат.

Сокращенные операции

При изменениях массивов можно использовать
сокращенные операции, применяя их прямо к
элементу массива (то есть к $arr[i]).
Давайте для примера увеличим каждый элемент
массива на единицу, используя операцию ++:

<?php
$arr = [1, 2, 3, 4, 5];
$length = count($arr);

for ($i = 0; $i < $length; $i++) {
$arr[$i]++;
}

var_dump($arr); // выведет [2, 3, 4, 5, 6]
?>

А теперь увеличим каждый элемент массива
на 5, используя операцию +=:

<?php
$arr = [1, 2, 3, 4, 5];
$length = count($arr);

for ($i = 0; $i < $length; $i++) {
$arr[$i] += 5;
}

var_dump($arr); // выведет [6, 7, 8, 9, 10]
?>

Дан массив с числами. Переберите этот массив
циклом и отнимите от каждого элемента единицу.

Дан массив с числами. Переберите этот массив
циклом и прибавьте к каждому элементу 10.

Предлагаем список вопросов, шпаргалка, которые задают разработчикам на технических собеседованиях с PHP7 или PHP8. Конечно, он не является исчерпывающим: cформирован специалистами, проводящими интервью в разных компаниях.

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=
104. Имеются таблицы 2×3 и 3×2. Select * from a, b. Какова размерность результата?

Order
iduser_idmoney
User
idemail
К таблице есть запросы: - все пользователи из конкретного города; - все удаленные пользователи; - все удаленные пользователи из конкретного города. Какие индексы для таблицы лучше всего поставить?
User
city_iddeleted (bool)

105. Напишите запрос для увеличения значения column1 на +1 для id = 2

id column1
1 1
2 2

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-команду для очищения кэша фреймворка.

Middle
Общее
1. Как передаются переменные (по значению или по ссылке)?
2. Какие процессы происходят, когда пользователь вводит URL в браузере?
3. Что такое вариативная функция или splat-оператор?
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. Что такое PuTTY?
50. У нас есть важный PHP-файл, его нужно запускать каждые 20 секунд, как бы вы это сделали?
51. Как расшифровать 644 в правах на файл в Linux?
52. Что такое Opcode?

Git
53. В чем разница между merge и rebase?
54. Какой командой можно произвести ресет изменений, не потеряв их?
55. Что такое stash и для чего он нужен?

Базы данных
56. Какая разница между MyISAM и InnoDB? В каких вариантах и что лучше использовать?
57. Как найти и оптимизировать «трудные» запросы?
58. Какие типы индексов?
59. Как сохранять координаты точки на карте в БД?
60. Какие типы индексов бывают у RDBMS?
61. Какое свойство полей БД следует учитывать при выборе типа индекса?
62. Когда следует использовать индексы, какие преимущества и недостатки?
63. Что такое ACID?
64. Что такое план выполнения запроса и как его узнать?
65. В чем разница между типами данных CHAR и VARCHAR в SQL?
66. Какое предназначение транзакций? Расскажите о принципе работы.
67. Назовите 3–4 нормальных формы реляционных БД.
68. Какое предназначение репликации? Какие типы связей и в чем разница между ними?
69. Что такое индексация? Какие типы индексов? Каков смысл их использовать?
70. Что такое полнотекстовый поиск в MySQL? Как он реализуется?
71. Что такое cursor в MySQL-процедурах?
72. Расскажите о RabbitMQ или Gearman.
73. Что знаете о Solr/ElasticSearch?
74. Что такое дедлоки MySQL?
75. Влияет ли порядок JOIN на план выполнения MySQL-запроса?

Laravel
76. Как и какие формируются запросы при использовании метода with()?
77. Чем отличаются методы with() и load()?

Практические задачи
78. Вам нужно спарсить продукты и их цены из интернет-магазина. С помощью чего это будете делать и какие основные нюансы нужно учесть?
79. Для сайта пользователей необходимо сделать механизм добавления и отображения аватарок. Как бы вы его реализовали?
80. Какой результат выдаст такой код:

class Test
{
public $ value;
}
 
$a = new Test;
$a->value = 1;
 
$b = $ a;
$b->value = 2;
 
echo $a->value;

81. Какие модификаторы доступа допустимы в реализации метода getName:

abstract class Cls
{
protected abstract function getName ();
}
 
class Child extends Cls
{
(Public, protected, private) function getName () {}
}

82. Реализуйте очередь сообщений, используя MySQL для хранения данных. Как избежать ситуации, когда несколько воркеров получат в обработку одинаковое сообщение?
83. Есть матрица с числами 3×3. Как найти числа, не имеющие четных/нечетных соседей?
84. Есть мануал на API от Европейского центрального банка с курсом валют. Нужно найти минимумы-максимумы за 5 лет, а затем то же, но с разбивкой по месяцам.
85. Сохраните свою библиотеку в БД. Следует сохранить названия книг и имена авторов. Предложите структуру таблиц. Выведите отчет «книга – количество соавторов».
86.Реализуйте примитивный роутинг, который обеспечивает работу Рауса по шаблону "/{class_name}/{method_name}/"
87. Напишите архитектуру, основанную на базовой абстракции. Дочерние классы расширяются при помощи интерфейсов. Реализацию одинаковых методов выполните, используя трейты (реализовывать в абстракции).
88. Напишите запрос, в результате выполнения которого выведется значение «id» и «val», если значение столбца column> 5 => val = val1 или val2.

idcolumnval1val2
11‘a’‘d’
26‘b’‘e’
32‘c’‘f’

89. Laravel: напишите расписание, которое будет выполняться каждую пятницу каждый час в 15 минут.
90. Напишите кастомную artisan-команду, которая в консоль будет выводить текущее время.

Senior
Общее
1. Как вы понимаете REST?
2. Что такое Copy-on-write?
3. Что такое позднее статическое связывание?
4. Что такое CQRS?
5. Что такое cohesion и coupling?
6. Как можно получить значение частного свойства класса в рантайме?
7. Как можно получить значение частного свойства класса в рантайме без использования рефлексии?
8. Следует ли использовать в методах значение по умолчанию null. Если нет, то почему?
9. Стоит ли возвращать null из методов. Если нет, почему и как писать код в таких случаях?
10. Следует ли передавать null как параметр методов. Если нет, то почему и как писать код?
11. Как вы понимаете Special Case/Null Object и где его следует применять?
12. Какой подход следует применять при тестировании кода, имеющего внешние зависимости (например, обращение к API Google)?
13. Что такое DDD?
14. Что такое микросервисная архитектура?
15. Какие способы коммуникации между микросервисами?
16. Расскажите о ReactPHP или Swoole.
17. Что такое фильтр Блума?
18. Что такое gap locks в MySQL?
19. Зачем нужно кэширование? Какую проблему оно решает?
20. Какие виды кэшхранилищ знаете и применяли? Чем они отличаются?
21. Чем характеризуется эффективность кэширования?
22. Приведите самый сложный пример кэширования из практики.
23. Что такое sensitive данные? Как хранятся в базе? Как отображаются в логах?
24. Кратко расскажите об истории PHP. Что появлялось в каждой версии? Куда развивается PHP на ваш взгляд? Что нового в последней версии?
25. Как в PHP очистить память?
26. Что такое антипаттерны? Приведите несколько примеров.
27. Как произвести рефакторинг большого legacy-проекта. Как это аргументировать/продать PM'у, заказчику?
28. Чем отличается Dependency Injection от Service Locator?
29. Расскажите об истоках памяти в PHP. Приведите примеры. Как боролись?
30. Как работает Garbage Collector? Когда есть смысл вызвать?
31. По какому принципу будете выбирать архитектуру своей будущей программы?
32. С какими видами архитектуры приложений сталкивались?
33. Структуры данных. Какие знаете, какие использовали на практике?
34. С какими еще видами API сталкивались? Какие были проблемы? Как решали?
35. Как вы понимаете Exception flow в контексте PHP.
36. Расскажите об автоматических анализаторах кода PHP (Roundcube и т.п.).
37. Расскажите о Performance & профилировании PHP-кода (Xdebug, XHprof и т.д.).
38. Расскажите, как бы вы реализовали систему, когда есть много источников данных, возвращающих в разных форматах данные о пользователе. Есть получатели данных, которые выбирают из каких источников они хотят принимать данные API.
39. Расскажите о проекте, которым по-настоящему гордитесь. Какие технологически необычные решения вы применили для его успешной реализации?
40. Как вы организуете тестирование кода? Когда покрытие тестами нерационально? Были ли у вас такие проекты?

Git
41. Как изменить только сообщение последнего комита?
42. git rebase -i HEAD~3 что делает эта команда и какие могут возникнуть проблемы при ее применении?
43. Зачем команда git bundle?
44. Какой командой можно влить комит в текущую ветвь?
45. Как выполнить склеивание комитов?

Базы данных
46. Какие структуры данных поддерживает Redis?
47. Что подразумевается под понятием «триггер» в SQL?
48. Какая разница между реляционными и нереляционными СУБД?
49. Какие NoSQL СУБД знаете?
50. Что такое ACID Compliance?
51. Что такое Views? Какие преимущества и недостатки?
52. Что такое уровни изоляции транзакций?
53. Что такое concurrent query?
54. Что такое кластерные индексы?
55. Как построить социальную сеть, которая выдержит нагрузку в 100 тысяч посетителей в онлайне. И сможет предлагать пользователям, например из Нью-Йорка, в друзья людей, живущих в этом городе. Данных много, работать система быстро. Как все хранить? По какому принципу строить запросы?

Понравилась статья? Поделить с друзьями:
  • Есть капитан как пишется
  • Есть к чему стремиться как пишется
  • Есть досыта как пишется
  • Есть до отвала как пишется
  • Если таковые имеются как пишется