Так сложилось, что одно собеседование похоже на другое. Поэтому мы решили собрать лучшие теоретические практики по PHP & JS. В одном месте.
Каждый пост подробным ответом на один вопрос. Так же будем делиться советами, как строить карьеру в IT, как проходить собеседования и отвечать на вопросы про то, кем вы себя видите через 5 лет.
Каждый пост подробным ответом на один вопрос. Так же будем делиться советами, как строить карьеру в IT, как проходить собеседования и отвечать на вопросы про то, кем вы себя видите через 5 лет.
Что такое cherry pick в git?
По русски говоря это «поиск вишенок». Когда мы берем отдельный коммит из соседней ветки. И используем в текущей
Синтаксис простой
А cherry-pick main – перенесет последний коммит из main.
Полный гайд.
По русски говоря это «поиск вишенок». Когда мы берем отдельный коммит из соседней ветки. И используем в текущей
Синтаксис простой
git cherry-pick e43a6Где
e43a6— ваш коммит, который вы хотите взять в текущую ветку.
А cherry-pick main – перенесет последний коммит из main.
Полный гайд.
👍7
— Какой результат работы данного кода?
* Вопрос от нашего тим-лида Петра
Почему так?
self — реализация функции позднее статическое связывание. self содержит ссылку на вызываемый класс, в данном примере метод calc находится в контексте класса Test, а значит self будет содержать ссылку на класс Test. Подробный гайд.
* Вопрос от нашего тим-лида Петра
<?phpОтвет: будет выведено 2
class Test {
public function calc() {
return self::plus();
}
public static function plus () {
return (1 + 1);
}
}
class Test2 extends Test {
public static function plus () {
return (1 + 2);
}
}
$class = new Test2();
echo $class->calc(); // что выведет
?>
Почему так?
self — реализация функции позднее статическое связывание. self содержит ссылку на вызываемый класс, в данном примере метод calc находится в контексте класса Test, а значит self будет содержать ссылку на класс Test. Подробный гайд.
👍9
Одна из наших рубрик #несогласен, где мы публикуем комментарии наших читателей и сотрудников. Сегодня пишет наш сотрудник Никита.
Пишет вам Никита, по поводу позднего статистического связывания и недавнего поста https://t.me/necommit/6. Если честно то я пребываю в недоумении: доколе такие примеры кода можно подавать на серьезных щах! Позднее статическое связывание это конечно хорошо, но вспоминается старый позднесоветский антисемитский анекдот (напомню, что в позднем СССР антисемитизм был вполне себе государственной идеологией). Автор поста категорически негативно относится к любым деструктивным "анти". И так анекдот, на злобу дня.
Одесса. Забор. На заборе надпись: "Бей жидов — спасай Россию!"
Мимо забора идет Мыкола, читает и произносит в слух
- Ідея гарна, но цiль смущаэ
Вот так и тут. Идея с поздним статическим связыванием и главное, необходимостью его понимать, хороша, но пример её использования просто запредельный. Это же надо настолько не любить тех, кто потом с этим кодом будет работать чтобы подобные вещи писать в продакшен. Да среднестатистический джун и добрая половина мидлов дебажить подобное будут c неистовым матом. А если подобные вещи не писать в продакшен, то зачем их учить?
Нет, грязные хаки это конечно хорошо, сам грешу подобным, вот давеча по указателю переменную в коллбэк засунул чтобы второй раз не итерировать массив. Пример можно посмотреть на скриншоте в следующем посте.
Вполне безобидное решение, вместо того чтобы писать второй дополнительный foreach, в очередном отчете по статистике, в очередной админке. Сделал такой вот грязный хак, мне он понравился (тут суть именно в указателе, попробуйте подобное без него сделать и с ним), я показал код своим знакомым мидл+/сеньерам и получил, ровно то же самое что получил бы джун на ревью у мидло-сеньера. Порцию занудства в которой самое полезное было это аргумент что я использую грязную функцию и делать этого не стоит.
Сначала вы на собеседованиях задаете каверзные вопросы с подобными примерами кода, потом люди это все выучивают, а как до дела доходит и эти же люди начинают применять «пограничные» знания (пограничные между стандартным набившим оскомину типичным CRUD-кодом и грязными хаками) и получают свое «Ататата» на код-ревью.
Пишет вам Никита, по поводу позднего статистического связывания и недавнего поста https://t.me/necommit/6. Если честно то я пребываю в недоумении: доколе такие примеры кода можно подавать на серьезных щах! Позднее статическое связывание это конечно хорошо, но вспоминается старый позднесоветский антисемитский анекдот (напомню, что в позднем СССР антисемитизм был вполне себе государственной идеологией). Автор поста категорически негативно относится к любым деструктивным "анти". И так анекдот, на злобу дня.
Одесса. Забор. На заборе надпись: "Бей жидов — спасай Россию!"
Мимо забора идет Мыкола, читает и произносит в слух
- Ідея гарна, но цiль смущаэ
Вот так и тут. Идея с поздним статическим связыванием и главное, необходимостью его понимать, хороша, но пример её использования просто запредельный. Это же надо настолько не любить тех, кто потом с этим кодом будет работать чтобы подобные вещи писать в продакшен. Да среднестатистический джун и добрая половина мидлов дебажить подобное будут c неистовым матом. А если подобные вещи не писать в продакшен, то зачем их учить?
Нет, грязные хаки это конечно хорошо, сам грешу подобным, вот давеча по указателю переменную в коллбэк засунул чтобы второй раз не итерировать массив. Пример можно посмотреть на скриншоте в следующем посте.
Вполне безобидное решение, вместо того чтобы писать второй дополнительный foreach, в очередном отчете по статистике, в очередной админке. Сделал такой вот грязный хак, мне он понравился (тут суть именно в указателе, попробуйте подобное без него сделать и с ним), я показал код своим знакомым мидл+/сеньерам и получил, ровно то же самое что получил бы джун на ревью у мидло-сеньера. Порцию занудства в которой самое полезное было это аргумент что я использую грязную функцию и делать этого не стоит.
Сначала вы на собеседованиях задаете каверзные вопросы с подобными примерами кода, потом люди это все выучивают, а как до дела доходит и эти же люди начинают применять «пограничные» знания (пограничные между стандартным набившим оскомину типичным CRUD-кодом и грязными хаками) и получают свое «Ататата» на код-ревью.
Telegram
Хорошее коммить, плохое не коммить
— Какой результат работы данного кода?
* Вопрос от нашего тим-лида Петра
<?php
class Test {
public function calc() {
return self::plus();
}
public static function plus () {
return (1 + 1);
}
}
class Test2 extends Test {…
* Вопрос от нашего тим-лида Петра
<?php
class Test {
public function calc() {
return self::plus();
}
public static function plus () {
return (1 + 1);
}
}
class Test2 extends Test {…
👍3🔥1
«Что такое тернарный оператор?»
Тернарный оператор — условный оператор, который работает почти так же как и if.
Синтаксис
{условие} ? {действие true} : {действие false}
Если необходимо изменить значение переменной, если значение проверяемой переменной не равно true, то c версии PHP 5.3 доступен следующий синтаксис:
$var = $value ?: "Другое значение";
Тоже самое что
$var = $value ? $value : "Другое значение";
В PHP 7 возможен вариант использование синтаксиса "??":
$var = $value ?? "Другое значение";
Тоже самое что:
$var = isset($value) ? $value : "Другое значение";
Тернарный оператор — условный оператор, который работает почти так же как и if.
Синтаксис
{условие} ? {действие true} : {действие false}
Если необходимо изменить значение переменной, если значение проверяемой переменной не равно true, то c версии PHP 5.3 доступен следующий синтаксис:
$var = $value ?: "Другое значение";
Тоже самое что
$var = $value ? $value : "Другое значение";
В PHP 7 возможен вариант использование синтаксиса "??":
$var = $value ?? "Другое значение";
Тоже самое что:
$var = isset($value) ? $value : "Другое значение";
👍5
Бывает, что в удаленный репозиторий отправлены не нужные изменения и в таких ситуациях на помощь приходит git push --force.
Флаг --force указывает на принудительную публикацию, что даст возможность переписать историю коммитов в удаленном репозитории.
Но есть и риски, например вы можете затереть работу других людей.
Используйте в крайней необходимости, например, если вы почти сразу внесли изменения коммита с помощью git commit —amend (объединение изменений текущего коммита и предыдущего) и запушили до того, как кто-то сделал git pull.
Флаг --force указывает на принудительную публикацию, что даст возможность переписать историю коммитов в удаленном репозитории.
Но есть и риски, например вы можете затереть работу других людей.
Используйте в крайней необходимости, например, если вы почти сразу внесли изменения коммита с помощью git commit —amend (объединение изменений текущего коммита и предыдущего) и запушили до того, как кто-то сделал git pull.
👍2
#cvhacks
Меня зовут Даша и я занимаюсь поиском разработчиков в Alto.
Спустя тысячи просмотренных резюме, мне есть чем с вами поделиться.
В этой рубрике будем обсуждать фишки для составления информативного CV и как активно получать приглашения на собесы. Итак, погнали!
1. Имя Фамилия
Неочевидно, но факт. Компании сохраняют резюме соискателей в свою базу данных. Безымянные резюме с большей вероятностью затеряются среди других карточек кандидатов. Рекомендую указать. К тому же, HR приятнее звонить соискателю, чье имя известно заранее :)
2. Контактная информация
Два момента на которые стоит обратить внимание.
Первое: блокировка звонков от неизвестных номеров снизит ваш шанс на диалог с работодателем. Второе: скрытый номер в телеграме снизит ваш шанс на диалог с работодателем x2. Если вы действительно заинтересовали компанию, то увеличивается шанс получить сообщение даже в direct инстаграма или ВК, но так происходит редко.
В следующем посте внутри данной рубрики обсудим, что стоит добавить в раздел «информация о себе» и «опыт работы». Желаю вам конструктива в создании резюме и пусть у вас с работодателем случится match✨
Меня зовут Даша и я занимаюсь поиском разработчиков в Alto.
Спустя тысячи просмотренных резюме, мне есть чем с вами поделиться.
В этой рубрике будем обсуждать фишки для составления информативного CV и как активно получать приглашения на собесы. Итак, погнали!
1. Имя Фамилия
Неочевидно, но факт. Компании сохраняют резюме соискателей в свою базу данных. Безымянные резюме с большей вероятностью затеряются среди других карточек кандидатов. Рекомендую указать. К тому же, HR приятнее звонить соискателю, чье имя известно заранее :)
2. Контактная информация
Два момента на которые стоит обратить внимание.
Первое: блокировка звонков от неизвестных номеров снизит ваш шанс на диалог с работодателем. Второе: скрытый номер в телеграме снизит ваш шанс на диалог с работодателем x2. Если вы действительно заинтересовали компанию, то увеличивается шанс получить сообщение даже в direct инстаграма или ВК, но так происходит редко.
В следующем посте внутри данной рубрики обсудим, что стоит добавить в раздел «информация о себе» и «опыт работы». Желаю вам конструктива в создании резюме и пусть у вас с работодателем случится match✨
👍10
Надеюсь, вы уже знакомы с композером, если нет, то скорее смотрите этот чудесный менеджер зависимостей
В Composer есть 2 основных файла, которые управляют его поведением:
1. composer.json — конфигурационный файл Composer, который помимо разных мета-данных содержит правила, по которым будут устанавливаться пакеты, данный файл задействуется при выполнении команды composer update.
2. composer.lock — служит для фиксации информации об версиях установленных пакетов, данный файл может обеспечить стабильную работу пакетов при развертывании проекта.
При выполнении команды composer update, Composer берет информацию из composer.json и согласно установленным в нем правилам скачивает и устанавливает пакеты.
Результатом работы команды будет сгенерированный файл composer.lock, в котором будет храниться информация об установленных пакетах и их версиях.
При выполнении команды composer install первым делом Composer ищет файл composer.lock,
и в случае отсутствия файла будут выполнены действия команды composer update.
В Composer есть 2 основных файла, которые управляют его поведением:
1. composer.json — конфигурационный файл Composer, который помимо разных мета-данных содержит правила, по которым будут устанавливаться пакеты, данный файл задействуется при выполнении команды composer update.
2. composer.lock — служит для фиксации информации об версиях установленных пакетов, данный файл может обеспечить стабильную работу пакетов при развертывании проекта.
При выполнении команды composer update, Composer берет информацию из composer.json и согласно установленным в нем правилам скачивает и устанавливает пакеты.
Результатом работы команды будет сгенерированный файл composer.lock, в котором будет храниться информация об установленных пакетах и их версиях.
При выполнении команды composer install первым делом Composer ищет файл composer.lock,
и в случае отсутствия файла будут выполнены действия команды composer update.
👍9
В прошедшую субботу прошел дебют — наш технический директор выступил с рассказом о том, как джуниор разработчику пройти техническое собеседование.
Петр собрал популярные ошибки, которые допускают новички на собеседованиях и показал, как можно действовать в неоднозначных ситуациях. Например, если не знаешь ответа. Или задачу решаешь долго. В общем все самое интересное в видео — https://www.youtube.com/watch?v=QAFyrFKl7e0
Петр собрал популярные ошибки, которые допускают новички на собеседованиях и показал, как можно действовать в неоднозначных ситуациях. Например, если не знаешь ответа. Или задачу решаешь долго. В общем все самое интересное в видео — https://www.youtube.com/watch?v=QAFyrFKl7e0
YouTube
Как разработчику пройти собеседование у технического директора
Петр, технический директор digital-продакшена alto.codes, рассказал о том, на что стоит обращать внимание при прохождении собеседования у техдира.
По каким признакам он отбирает кандидатов.
Выступление прошло в рамках IT-конференции «TOP», которая проходила…
По каким признакам он отбирает кандидатов.
Выступление прошло в рамках IT-конференции «TOP», которая проходила…
👍6🔥1
Повторим основы теории, какие типы данных бывают в PHP.
4 скалярных типа:
— bool
— int
— float (число с плавающей точкой)
— string
4 смешанных типа:
— array
— object
— callable
— iterable
2 специальных типа:
— resource
— NULL
В основном все понятны, вопросы больше вызывают iterable и resource
iterable — данный псевдотип появился в php7.1, он часто используется в строгой типизации, когда нужно быть уверенным что переданный параметр, или возвращаемы будут либо массивом, либо объектом, который реализует интерфейс Traversable.
resource — Ресурс, это ссылка на внешние данные, например база данных, изображение, просто файл. Работа с ресурсом осуществляется через специальные функции.
Признавайтесь, знали про iterable и resource?
4 скалярных типа:
— bool
— int
— float (число с плавающей точкой)
— string
4 смешанных типа:
— array
— object
— callable
— iterable
2 специальных типа:
— resource
— NULL
В основном все понятны, вопросы больше вызывают iterable и resource
iterable — данный псевдотип появился в php7.1, он часто используется в строгой типизации, когда нужно быть уверенным что переданный параметр, или возвращаемы будут либо массивом, либо объектом, который реализует интерфейс Traversable.
resource — Ресурс, это ссылка на внешние данные, например база данных, изображение, просто файл. Работа с ресурсом осуществляется через специальные функции.
Признавайтесь, знали про iterable и resource?
👍8