PHP Интервью
41 subscribers
17 photos
1 video
8 files
34 links
Помогаем PHP-Джуниорам пройти собеседование и устроиться на работу.
Делимся о чем спрашивают на собеседованиях
Предварительное собеседование с автором канала
Советы как правильно составить резюме
Авторские статьи и видео-обзоры

Автор @fxdev
Download Telegram
Хотите получить работу?

Если среди вас кто-то закончил курсы программирования на PHP или проходил обучение самостоятельно, но пока не знает, что делать дальше. Возможно, вы предпринимали попытки пройти собеседование и устроиться на работу в IT-компанию, однако потерпели фиаско!

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

У меня большой опыт в программировании в целом и на PHP в частности. За последние 5 лет я провел не один десяток интервью с кандидатами на вакансию PHP-программист. Перечитал более сотни резюме и могу отличить шаблонное от не шаблонного.

🔹 Что я предлагаю
Я провожу с вами предварительное online-интервью. Определяю ваши сильные и слабые стороны. Создаю для вас персональную программу подготовки к реальному собеседованию. Если у вас отсутствуют выполненные проекты, я предоставлю список интересных и не сложных проектов, один из которых нужно будет выполнить.

Вы изучаете материал, который я вам предоставлю. Это будут книги, статьи и практические задачи. Спустя определённое время, которое полностью зависит от вас, мы проводим повторное интервью. Если я считаю, что вы готовы, то мы с вами находим несколько вакансий PHP-Junior, составляем резюме и отправляем.

В случаи успешного прохождения интервью по одной из этих вакансий, я добавляю вас в специальный чат по поддержке Джуниоров на этапе испытательного срока. За вас никто выполнять задачи, конечно же, не будет. Однако вы всегда сможете получить совет, как справиться с той или иной задачей. Какие технологии лучше использовать и многое другое.

🔹 Сколько это стоит
Данная услуга стоит 35 тыс. рублей. Пять тысяч вы платите сразу, остальное выплачиваете с каждой полученной зарплаты. То есть вы оплачиваете только по факту получения результата! Если оплата не произведена, вы теряете доступ к чату и ко мне.

Интересно
Пишите в личку 👇
@fxdev

P.S. Услугу чата с поддержкой можно приобрести отдельно по подписке.

P.S.S. Это не курсы и не обучение. Это подготовка к собеседованию!
📗 Веб-программирование начинается с интернета, а интернет начинается с протоколов TCP/IP.

Мало кто знаком с этими протоколами, которые играют жизненно важную роль в доставке информации по сетям Интернета.

Книга "TCP/IP — Сетевое администрирование" как раз об этом! Не обязательно читать её до конца, достаточно внимательно прочитать первые главы, в которых описывается основные принципы работы и взаимодействия компьютеров внутри сети.

Так же будет очень полезно почитать о таком понятии как RFC (Request for Comments).

👉 https://ru.wikipedia.org/wiki/RFC
PHP Интервью pinned «Хотите получить работу? Если среди вас кто-то закончил курсы программирования на PHP или проходил обучение самостоятельно, но пока не знает, что делать дальше. Возможно, вы предпринимали попытки пройти собеседование и устроиться на работу в IT-компанию, однако…»
Губительная сила CMS 😈

CMS губит программистов, может не всех, но многих. Вы работаете с CMS и делаете сайты один за другим, не замечая, что вы стоите на месте. Программированием тут и не пахнет, а большинство проектов типовые. По сути, вы становитесь не программистом, а «конфигурастом», который выполняет настройку уже готовой системы. И даже если вы временами пишете какой-то код, этого мало, чтобы поддерживать навык программирования и быть в рынке.

Я лично столкнулся с этой проблемой много лет назад работая в одной крупной Web-Студии и выполняя проекты различной сложности. Так продолжалось много лет, пока я не решил уйти из веб-студии и найти другое место работы, такое место, где можно по-настоящему программировать.

Когда я начал ходить по собеседованиям, я часто слышал что-то типа «ну, cms это хорошо, а программировать то вы умеете?». По началу я не понимал, на что они намекают и лишь позже понял, что те, кто работает постоянно с CMS практически полностью лишены настоящего программирования. Готовые модули, компоненты и плагины делают за нас всю работу и нам остается лишь всё это соединить и залить на сервер.

Я до сих пор встречаю эту проблему собеседуя кандидатов в нашу компанию. Приходят люди, которые последние несколько лет работали исключительно с CMS системами и когда начинаешься задавать им наводящие вопросы о паттернах, о более глубоком понимании ООП или о том, как и чем можно расширить стек в случаи необходимости, они пожимают плечами, мол не сталкивались, но, если надо разберемся. Может и разберутся, но сколько уйдет на это время?

--
Тренажер для программистов
👉 https://app.justcoding.ru/
Губительная сила CMS. Продолжение. 😈😈

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

Как минимум не унывать и не вздумать бежать увольняться. Ниже я привожу какие шаги можно предпринять, чтобы продолжать работать с CMS системами и при этом оставаться в рынке.

1. Участие в стартапах
Сейчас тема стартапов очень горячая и существует огромное количество команд, где требуется программист. Некоторые в команду ищут более опытного, а некоторые готовы взять и с меньшим опытом в расчете на экономию. Участвуйте в таких проектах безвозмездно или с хорошим дисконтом, так вы будете набираться опыта и развивать свои навыки.

2. Личные проекты
Придумывайте собственные проекты и доводите их до конца. Они не обязательно должны быть уникальные или супер технологичные. Можно создавать аналоги проектов, которые вам понравились. В качестве дизайна можно использовать готовые бесплатные шаблоны или работать с CSS фреймворками типа Bootstrap. Главное, что бы проект не использовал CMS. Как вариант, можно написать собственную CMS!

3. Изучение теории
Если нет времени на практику, то воспользуйтесь теорией. Ищите в интернете бестселлеры на тему программирования и читайте в свободное время. Почитайте про sqlite, redis, memcache, rabbitmq, docker и другие интересные технологии, которые помогают расширять стек.

4. Практические тренажеры
Если времени совсем нет, воспользуйтесь практическими тренажерами задач. Решайте по 1-2 задачи каждый день. Вот доступные ресурсы: codewars.com, app.justcoding.ru, leetcode.com.
Сегодня полностью обновился тренажер для PHP-программистов JustCoding.

🔹 Мы обновили главный интерфейс рабочей области;
🔹 Добавили новые интересные задачи;
🔹 Подключили песочницу для эксперементов с PHP-кодом;
🔹 Добавили отдельную страницу для каждой задачи со списком решений от разных пользователей;

Тренажер JustCoding прекрасно подойдет если вы учитесь программировать на PHP, а если вы уже знакомы с PHP, то сможете прокачать свои навыки!

👉 https://app.justcoding.ru/
Ремесло программиста. Практика написания хорошего кода

Сегодня я расскажу об одной очень интересной книге. Я бы рекомендовал эту книгу к прочтению всем программистам без исключения. Она не про PHP или JavaScript, она про этикет и хорошие манеры оформления исходного кода ваших будущих программ.

В книге рассматриваются вопросы позиции и отношения программиста, но это не учебник психологии. В число обсуждаемых тем входят:
Представление исходного кода
Технологии защитного кодирования
Эффективная отладка программ
Особенности работы в группе
Управление исходным кодом

Если планируете работать в крупных IT компаниях на позиции программиста, если хотите связать свое будущее с любым видом программирования или вы уже работаете в команде, то вам обязательно стоит прочитать эту книгу. Без вариантов!
👉🏽 Больше практики на https://app.justcoding.ru
Здоровье программиста 💔

Один мой друг, перед новым годом, решил себя побаловать и купил себе весьма удобное кресло для работы. Он программист. Это кресло марки «Aeron» средняя цена которого 150 000 рублей. Я не шучу, можете загуглить. Зачем же он это сделал?

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

Всё дело в статике или, другими словами, в малоподвижном образе жизни. Мы постоянно сидим, уставившись в монитор и не двигаемся. И так на протяжении 8-12 часов — каждый день. После работы многие продолжают находиться за компьютером и играть в игры, либо смотреть сериалы / youtube. Всё это усугубляет и без того плачевное положение. Последствия, как правило, дают о себе знать после 25 лет. Боли в сердце, искривленный позвоночник, одышка при различных активностях, головокружение при резких подъёмах и многое другое.

Я и мои друзья не раз сталкивались с этой проблемой и решение всегда было одинаково — спорт или регулярные физические нагрузки. Даже дорогущее кресло не решит проблему. Любой фитнес тренер скажет вам, что как бы удобно вы не сидели, губит вас не то положение, в котором вы находитесь, хотя оно тоже имеет влияние, губит неподвижность. За 150 тыс. рублей можно было купить абонемент в фитнес клуб на ~5 лет.

Что можно предпринять, чтобы остановить или предупредить недуг?

🔹Самый лучший, на мой взгляд, вариант — это фитнес клуб. Ближайший фитнес в вашем районе подойдет. Посещайте его регулярно 2-3 раза в неделю.

🔹 Если ближайший фитнес клуб далеко от вас, то поищите просто бассейн. Плавание тоже отлично помогает держать свое тело в тонусе.

🔹 Регулярные пробежки утром или вечером. Начните бегать и ваше здоровье скажет вам спасибо! Главное не переусердствовать. Начинать надо с маленьких дистанций и постепенно наращивать их.

🔹 Если же рядом нет фитнеса или бассейна, а также возможности бегать из-за погодных условий или иных причин, то остается старый и проверенный метод — гантели и турник у вас дома. Регулярно занимайтесь дома и вы будете в форме!

🔹А еще, не сидите дома в выходные. Где бы вы не находились, всегда есть рядом места, где можно просто погулять и подышать свежим воздухом. Если же город маленький или проблемы с экологией, то вспомните, что вы можете работать удалённо и жить в любом городе Мира!

Я, к примеру, родился в Ташкентской области, а живу сейчас в Сочи 🌞
🧨 Требования к кандидатам на позицию "PHP-Джуниор" по версии hh.ru
(было изучено более 50 вакансий)

Основное:
— Уверенное владение синтаксисом php 5.x и 7.x
— ООП и паттерны. Singleton, MVC, Facade и т.д.
— MySQL и сам SQL. Сложная выборка, джойны, подзапросы, отладка, оптимизация запросов, агрегирующие функции.
— Уверенное владение одним из фреймворков Yii2 / Symfony / Laravel
— Чтение чужого кода (Legacy Code).

А так же:
— Собственные проекты на github/bitbucket
— Уверенное владение GIT из командной строки
— Менеджер пакетов Composer
— Понимание html/css/js/jquery
— Различные протоколы: tcp/ip, http, dns, ssh, dns, sftp, RESTful API
— Сопутствующие сервисы и программы: Docker, RabbitMQ, Redis, Memcache, Sphinx или Elastic, x-Debug и другие.
— Модные слова: DRY, KISS, YAGNI
— Принципы SOLID
Планировщик задач — cron 🤔

Среди начинающих программистов мало кто знаком с Linux системами, а тех, кто слышал про cron и того меньше. Однако потребность в регулярном и автоматическом запуске определённых скриптов возникает крайне часто.

Вот далеко не полный перечень действий, которые обычно выполняет cron:
— Создание резервной копии сайта;
— Отправка e-mail с отчетом о работе сайта за сутки;
— Генерация обновлённой карты сайта;
— Генератор XML / YML файлов с товарами, к примеру, для Яндекс.Маркет’а;
— Регулярные уведомления или рассылки пользователям сайта;
— И многое другое;

Настройка задач Cron через панели управления хостингом.

Если вы пользуетесь обычным хостингом, то выполнить настройку задания можно через специальный web-интерфейс. Вам необходимо указать команду или скрипт для выполнения и обязательно указать периодичность.

Настройка задач Cron через ssh.

Если у вас не простой хостинг, а VPS/VDS или выделенный сервер то настройку планировщика придется делать средствами командной строки. Для работы с cron в Linux системах есть специальная утилита
crontab
. Она используется для просмотра текущих заданий, а также для добавления новых.

Просмотр текущих заданий:
crontab -l


Редактирование заданий:
crontab -e


--
Продолжение в следующем посте
Планировщик задач — cron. Продолжение 🤔

Для настройки задачи в cron нужно указать две вещи — команду и периодичность.

Формат следующий:
m h  dom mon dow   command


m — Минуты
h — Часы
dom — День месяца
mon — Месяц
dow — День недели

Описание параметров

минута
число от 0 до 59

час
число от 0 до 23

день месца
число от 1 до 31

месяц
число от 1 до 12 (можно 3 буквы из названия месяца: от jan до dec)

день недели
число от 0 до 6 (имейте ввиду, что 0 - это воскресение; можно также писать буквенное значение: от sun до sat)

--

Каждое из полей даты и времени может быть обозначено символом *, будет соответствовать любому возможному значению.

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

Каждую 45-ю минуту каждого часа в период с 5 утра до 9 вечера, каждый день
45 5-21 * * * /usr/bin/php -f ~/local/cron/create_modification.php


Один раз в минуту
*/1 * * * * /usr/bin/php -f ~/bitrix/modules/main/tools/cron_events.php


Каждый 30 минут в период с 5 утра до 9 вечера, каждый день
*/30 5-21 * * * /usr/bin/php -f ~/local/cron/create_yml.php > ~/upload/yandex.yml


Каждый день в 23:45
45 23 * * * /local/cron/create_backup.sh
PHP7 в Подлиннике 📗

Если вы решили программировать на PHP и настроены очень серьёзно. Если вы планируете досконально изучить PHP в доль и поперёк то советую начать вот с этой книги.

Ссылка на скачивание 👇
https://justcoding.ru/pdf/php_7_podlinnik.pdf
Будьте осторожны, PHP не выводится из организма))
Навигация по каналу
"PHP Интервью"

— Требования к Джуинорам https://t.me/phpinterview/6

— Протокол TCP/IP https://t.me/phpinterview/12

— Протокол DNS https://t.me/phpinterview/37

— Планировщик задач CRON https://t.me/phpinterview/60

— Термины KISS/DRY https://t.me/phpinterview/24

— Ваш e-mail адрес https://t.me/phpinterview/26

— Операционные системы https://t.me/phpinterview/27

— Важность приоритетов https://t.me/phpinterview/29

— Подготовка к собеседованию https://t.me/phpinterview/34

— Что делать с резюме https://t.me/phpinterview/36

— Рождение программиста https://t.me/phpinterview/38

— Декомпозиция https://t.me/phpinterview/39

— Про менторство https://t.me/phpinterview/42

— Губительная сила CMS https://t.me/phpinterview/52

— Сколько нужно учиться? https://t.me/phpinterview/46
​​Преждевременная оптимизация 😈

Дональд Кнут, автор творения «Искусство программирования» однажды сказал: «Настоящая проблема заключается в том, что программисты, не там, где нужно, и не тогда, когда нужно, тратят слишком много времени на заботу об эффективности. Преждевременная оптимизация — корень всех зол в программировании».

Оптимизировать программы по любому параметру стоит только после того, как станет понятно, нужна ли эта оптимизация. А понять, нужна ли оптимизация можно по определённым показателям.

Для бэкэнда один из самых важных показателей это временя генерации страницы. По-хорошему данный показатель не должен превышать 0.5 секунды, а Google ставит планку еще ниже — 0.3 секунды.

Еще один важный показатель — это потребление памяти. Если ваш скрипт съедает половину доступной памяти, то это повод задуматься о рефакторинге.

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

Просто пишите свой код и всё будет хорошо)
MySQL. Темы для изучения перед интервью

Утилиты командной строки:
mysql
mysqldump

Информация о базах, таблицах, ключах и индексах:
use databaseName;
show databases;
show tables;
show tables like '%table%';
desc tableName;
show indexes from tableName;
show keys from tableName;
show create table tableName;

Манипуляция структурой и данными
create table newTable like oldTable;
alter table tableName ... ;
drop table tablename;
drop database databasename;
truncate table tableName;

Выборка данных SELECT
— Изучить простой SELECT
— Изучить SELECT с псевдонимами: SELECT column_id as 'id', column_name as 'name' FROM tableName as t;
— Изучить SELECT c LIMIT
— Изучить SELECT c WHERE
— Изучить SELECT c WHERE columnName in (SELECT value FROM tableName)
— Изучить SELECT c WHERE columnName is null or columnName is not null
— Изучить SELECT c WHERE 'LIKE' vs '=' (понимать разницу)
— Изучить SELECT c ORDER
— Изучить SELECT c ORDER и RAND()
— Изучить SELECT c GROUP
— Изучить SELECT c агрегирующими функциями count(), max(), min(), sum() и т.д.
— Изучить SELECT c подзапросами FROM (SELECT * FROM tableName)
— Внимательно изучить SELECT c DISTINCT
— Внимательно изучить SELECT c EXPLAIN. Данная команда требует особого внимания!
— Что такое filesort в EXPLAIN

Выборка данных через SELECT с JOIN
— Изучить обычный JOIN
— Изучить LEFT JOIN
— Изучить RIGHT JOIN
ВНИМАНИЕ: Важно четко понимать разницу между джойнами. Это любимый вопрос на собеседовании.

Вставка данных
— Изучить INSERT с перечислением полей
— Изучить INSERT без перечисления полей
— Изучить INSERT c IGNORE
— Изучить INSERT c SELECT
— Изучить множественный INSERT

Обновление данных
— Изучить простой UPDATE
— Изучить UPDATE с LIMIT и WHERE

Индексы
— Для каких типов полей можно создать индекс?
— Какова длина индекса?
— Что такое составной индекс?
— Что такое уникальный индекс?
— Для типа TEXT можно ли создать индекс?
— Как определить используется ли в запросе индекс?

Движки и форки
— Найти полный список движков в MySQL и изучить.
— Почитать про основные различия между MyISAM и InnoDB
— ВАЖНО: Четко понимать, что такое "транзакция" и "блокировка".
— Почитать про MariaDB и Percona Server

🚫 Если вы не знаете хотя бы половину того, что описано выше, то вам стоит не спешить с собеседованием и подтянуть свои знания.
🤔Как ни крути, но получить хороший опыт можно лишь с реального проекта. Вариантов тут не много, либо начать что-то делать для себя, либо найти проект на фрилансе и выполнить его бесплатно, либо устроиться на работу по вакансии PHP-Джуниор.

1⃣Вариант начать что-то делать для себя выглядит, как самый перспективный, но на деле самый сложный. Очень сложно, каждый день, заставлять себя делать работу, которая в итоге не будет вознаграждена, даже осознавая, что вознаграждение есть полученный опыт.

2⃣ Взять проект на фрилансе, тоже вариант, но есть риск испортить себе репутацию в самом начале карьеры, потому что задача может оказаться не по зубам.

3⃣ Остается последний, на мой взгляд достаточно надежный вариант, найти вакансию PHP-Джуниора. Весь фокус в том, что компания, которая берет к себе на работу Джуниора — прекрасно понимает все риски и готова инвестировать в вас, хоть иногда и требуя взамен некую расписку, что вы не убежите, как только чему-то научитесь. Дополнительным бонус будет наличие наставника, который поможет ознакомиться с текущим проектом и будет помогать с будущими задачами.


Из опубликованного ранее