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

Автор @fxdev
Download Telegram
​​🖥 Протокол DNS

Что такое DNS?
Прежде чем начать говорить о DNS-серверах, необходимо упомянуть о самой технологии DNS (Domain Name System). DNS — это технология, которая позволяет браузеру вроде Firefox, Chrome или Edge найти запрошенный пользователем сайт по его имени.

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

Так и с сайтом. Каждому имени сайта соответствует набор цифр формата 000.000.000.000. Этот набор называется IP-адресом, примером реального IP-адреса является 192.168.0.154 или 203.113.89.134. Когда пользователь вводит в адресной строке браузера имя сайта, например google.com, компьютер запрашивает IP-адрес этого сайта на специальном DNS-сервере и после получения корректного ответа открывает сам сайт.

Что такое DNS-зоны?
С одним доменным именем может быть связано несколько ресурсов — сайт и почтовый сервер. У этих ресурсов вполне могут быть разные IP-адреса, что дает возможность повысить надежность и эффективность работы сайта или почтовой системы. Есть у сайтов и поддомены, IP-адреса которых тоже могут быть разными.

Вся эта информация о связи сайта, поддоменов, почтовой системы хранится в специальном файле на DNS-сервере. Его содержимое называется DNS-зона. Файл содержит следующие типы записей:

А — адрес веб-ресурса, который привязан к конкретному имени домена.
MX — адрес почтового сервера.
CNAME — чаще всего этот тип записи используется для подключения поддомена.
NS — адрес DNS-сервера, который отвечает за содержимое других ресурсных записей.
TXT — любая текстовая информация о доменном имени.
SPF — данные с указанием списка серверов, которые входят в список доверенных для отправки писем от имени указанного домена.
SOA — исходная запись зоны, в которой указаны сведения о сервере и которая содержит шаблонную информацию о доменном имени.
​​🤰Рождение программиста.

Как вы думаете, в какой момент студент, который изучает язык программирования, становится программистом? Сколько должно пройти времени с момента начала его обучения? Можно ли это как-то ускорить? И как понять, что ты уже не студент, а программист?

Я долго пытался найти ответ на этот не простой вопрос. Обсуждал его со своими коллегами. Читал различную педагогическую литературу. Искал ответ в Интернете.

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

В итоге я сформулировал свою теорию, относительно рождения программиста. Звучит она следующим образом: «Программист рождается ровно в тот момент, когда он начинает осознанно решать задачи без посторонней помощи преподавателей или менторов. Не нуждаясь в ней и не ожидая её.»

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

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

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

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

3. Много неизвестных. Часто, чтобы решить задачу нам не достаёт информации, которую стоит найти и изучить. В одной более мелкой задаче гораздо меньше неизвестных.

4. Последовательный результат. Иногда нас просят показывать предварительный результат. Выполняя задачу или проект поэтапно, мы можем показывать выполненные этапы, тем самым демонстрируя, что работа кипит.

Выглядит очень неплохо, но на практике могут возникнуть сложности с разбиением на подзадачи или определением приоритета, какую из подзадач выполнить в первую очередь, а какую во вторую. Есть и другие нюансы. Чаще практикуйте декомпозицию, и вы научитесь делать это правильно!

--
Сборник задач на PHP https://app.justcoding.ru/
Forwarded from PHP Интервью
🧨 Требования к кандидатам на позицию "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
Forwarded from Physics.Math.Code
Media is too big
VIEW IN TELEGRAM
The Expert ( Русский дубляж ) 😎
​​😎 Менторство.

1. Менторство (Наставничество) – это эффективный способ передачи профессиональных знаний и умений от более опытного специалиста (ментора) менее опытному (протеже).

2. Это не обучение как таковое, а делёжка опытом и помощь в поиске решений для задач, с которыми сталкивается протеже.

3. Хороший ментор всегда покажет, где взять удочку, а не рыбу. Он не решает задачи за вас, а наводит вас на правильное решение.

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

5. Однако помните, программист рождается, когда начинает осознанно решать задачи без посторонней помощи. Это значит, что менторство помогает на первых порах, но потом становится «медвежьей услугой».
Попытки решить задачу.

1. Как часто вы сталкиваетесь в программировании со сложными задачами? Сколько попыток вы делаете, чтобы решить сложную задачу?

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

3. Сколько же стоит пытаться решить неподдающуюся решению задачу, чтобы сказать себе: «Эта задача мне не по зубам, я не буду больше пытаться её решить»

4. Правильный ответ — нисколько. Вы либо заранее понимаете, что задача не для вас либо беретесь за неё и решаете пока не добьетесь результата. Попытки считать не нужно, они не ограничены или, другими словами, бесконечны!

5. Помните, что любую сложную задачу можно декомпозировать, разбив её на мелкие подзадачи. Решать маленькие задачи гораздо проще, чем одну большую. А если в задачах есть незнакомые вам технологии или термины, вы легко сможете воспользоваться Google’ом!

P.S.
Нерешенных задач в мире становится всё меньше, а информация о решенных есть в Интернете.
Не упускайте теорию 📚

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

Так зачем же теория программисту, если ему только и надо, что код писáть

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

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

Это совсем не означает, что нужно удариться в чтение и перестать кодить.

Я лишь призываю вас не упускать теорию, ведь на собеседовании первый этап, это как правило теория и лишь пройдя её вы сможете блеснуть перед интервьюером своим прекрасным кодом!

--
Сборник задач https://app.justcoding.ru/
Forwarded from PHP Интервью
🔔 Однажды мы с коллегой поспорили, кто из нас круче, как программист! Конечно, это выглядело как ребячество, но тогда мы в серьёз задумались, как же это выяснить. И кое-что придумали.

Мы нашли в интернете несколько интересных задач, с которыми ни одни из нас еще не сталкивался и начали их решать одновременно.

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

Он тогда не знал, что я ночами на пролёт прокачивал свой навык решения задач, находя их в интернете, а через какое-то время появилось это:

👉 https://app.justcoding.ru/

Великолепный сервис с большим набором задач и автоматической проверкой решения. Решайте по 5-7 задач в неделю или больше. Так вы прокачаете не только навык решения задач но и ближе познакомитесь со стандартными функциями PHP.
Сколько нужно учиться? 🤔

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

Сейчас мне 34 года и программировать я начал с 14 лет. Примерно в 17 лет я уже активно работал над коммерческими проектами. Мне потребовалось 3 года, чтобы выучиться до уровня, при котором я бы не боялся брать на себя ответственность. Но сколько времени я уделял обучению?

Ответ прост, абсолютно всё свободное время! Я программировал, когда приходил со школы. Я программировал перед сном и часто ложился спать ближе к утру, потому что не мог оторваться от процесса. Я программировал в выходные и праздничные дни. Меня никто не заставлял, а на оборот, родители тревожились и старались ограничить мое пребывание за компьютером. Я программировал постоянно!

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

А теперь самое интересное. Математика!

По моим подсчетам, в среднем, я тратил 3-4 часа в день (каждый день) и лишь спустя 2-3 года я чувствовал себя уверенным и работал с коммерческими проектами. Конечно, в то время информации было меньше, видео роликов с обучением почти не было, обучаться было сложнее. И всё же, вот что получается.

Выведем вот такую формулу:
— Обучение 3-4 часа, каждый день = Программист через ~1,5-2 года!

— Обучение 1,5-2 часа, каждый день = Программист через ~3-4 года!

— Обучение менее 1,5 часа в день = Программист через ~7-8 лет или более!

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

А сколько времени на обучение уделяете Вы
​​Вы все можете сами!

Правда, вы можете больше, чем предполагаете. Любая задача, любой проект вам под силу. Вопрос лишь во времени. В чем фокус?

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

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

Операционная система — это комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем.

Применим декомпозицию и разобьём нашу задачу на подзадачи (очень грубо):

1⃣ Создание файловой системы;
2⃣ Создание ядра ОС;
3⃣ Взаимодействие между процессами;
4⃣ Механизмы для работы с потоками;
5⃣ Реализовать мультизадачность;
6⃣ Создать графический интерфейс системы;

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

Другой вопрос, что нашей жизни едва ли хватит, что бы в одиночку всё изучить и реализовать т.к. в создании Windows принимали участие большое количество программистов, но наша задача была не сделать быстро, а реализовать задачу в принципе.

Все мы можем, было бы желание и время! 😎
Хотите получить работу?

Если среди вас кто-то закончил курсы программирования на 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