Вы почти закончили универ или колледж? Вас пригласили на собеседования, но вы идете туда без подготовки? У вас нет образования (высшего), но хотите работать программистом или в сфере IT? Речь пойдёт по большей степени о поиске работы, я буду говорить лишь за свой город (Челябинск) т.к. искал работу именно здесь.

image

Когда начинал искать работу, будучи на втором курсе в колледже, я и не подозревал сколько различных компаний есть в нашем городе. От верстальщиков до Deep learning, от тех. поддержки bitrix до разработчика игр (мобильных, соц. сети, desktop).

Я был примерно на 8 собеседованиях (не считая онлайн). Все они были в разных направлениях. Верстка, десктоп разработка игр, веб-разработчик (c#+.net), веб разработчик (bitrix+php), front-end (js+react). От чего-то отказался сам, куда-то не взяли т.к. мало знаю.

Ближе к делу, ближе к коду


Хочется рассказать, что спрашивают на таких собеседованиях и для чего они это делают (объяснить используемые технологии).

Начнем с простого. Верстка


В большинстве случаев всем требовалась скорость верстки. Мне давали два таска (две разные компании). Первое это верстка карточек товаров на сайте. За один час мне нужно было сделать верстку как на картинке, которую мне предварительно скидывали. Ничего сложного в таске нет, но одно из условий это Pixel Perfect (пиксель в пиксель). У меня было пару ошибок: расхождение с макетом (неверное отображение окна оповещения и логика hover эффекта).

image

Второй таск был еще проще (pixel perfect не требовался). Есть ТЗ (Техническое задание) с правками и их нужно выполнить на сайте. Правки в отображение элементов, что-то под мобилки настроить, изменить отступы, цвет элементов.

Почему так? В наше время очень мало компаний, которая ищет именно верстальщиков, поэтому важна скорость работы. Меньше времени на работу больше заказов, а значит и больше прибыль у компании. На такую должность часто требуется еще препроцессоры (sass,pug) и сборщики проектов (gulp,webpack). А что касается ТЗ, вы будете получать его на любой работе, и следовать ему необходимо! ТЗ у всех разное, в большинстве случаев это текстовый документ со списком правок.

Веб программист (bitrix)


Было 3 попытки в разных компаниях. В одной мне лишь объяснили что придется делать. Поддержка корпоративных сайтов (разработка под нужды этих сайтов) + работа с сервером (настройка и развертывания сайтов). Ни единого вопроса что я могу и что знаю.

А вот на втором собеседовании только и спрашивали что я делал на прошлом месте работы, что могу в bitrix и что вообще изучал.

Ну и самое интересное, это последнее собеседование. Здесь были и вопросы о скиллах, и описание тасков компании, и задачи, которые нужно было выполнить на месте. Рассказать о себе, я надеюсь, вы сможете сами, а вот вопросами я готов поделиться. Предупрежу сразу, не было условия на каком языке нужно писать код, я выбрал JS. Вычислить факториал, что такое бинарное дерево и какие способы его обхода есть, алгоритмы сортировки, обращение к БД (простые запросы), что такое class.php в bitrix.

Вычислить факториал очень просто, не важно какой язык программирования. Реализуете это через рекурсию. Про бинарное дерево уже сложней… двоичное дерево (бинарное) = структура данных. Дерево используется для работы с большими объемами данных, не удивительно, что при приеме на работу с интернет магазинами спрашивают именно это. Сортировка тоже относится к работе с данными. Ну и обращение к БД, большинство сайтов в сети используют БД. Это вывод новостей сайта, товаров, список популярных статей и прочие элементы.

Самое интересное, попытка устроиться desktop разработчиком


image

Сразу отмечу общие темы: ООП и паттерны.

Зачем? Ну современная разработка без ООП… это очень странно, точно так же, как разработке без паттернов. Да, вы можете делать курсовую во время учебы и не использовать паттерны+ООП, но без минимального понимания, что такое класс, наследование и полиморфизм вас на работу не возьму. ООП позволяет делить программу на блоки, а паттерны, например SOLID, позволяет делить код на независимые блоки, чтобы в будущем можно было с легкостью дополнять их.

Все остальные вопросы были специфичные, смотря с чем работала компания. Например, если это разработчики игр, то требовалось написать тестовую игру используя их движок + документацию, которую они предоставляли по нему. Мне давали детскую 2Д игру (c# + XAML). Суть игры: есть два стакана, один пустой, а во втором лежат карандаши, когда игрок нажимает на ПКМ, то один карандаш перемещается в пустой стакан и на экране обновляет счетчик очков. Требовалось банально посчитать карандаши.

Так же был опыт собеседования и на Unity разработчика, здесь уже было сложней т.к. и игру давали 3Д, и за кодом следили, чтобы не было мусора в нем + присутствие паттернов, у меня даже на github’e все еще лежит этот проект.

Вернемся к компаниям, если это разработка back-end части (c#+.net) то вопросы были по .net платформе и ее подводным камням. Если это разработка приложений, то здесь нужно знать TDD (разработка через тестирование), SOLID, ООП.

Про ООП и паттерны я уже объяснил. Зачем спрашивают про TDD? Честно, я не знаю… сам не до конца понимаю преимущество данного подхода, да это используют некоторые компании, но мне приходилось писать код, таким образом, лишь один раз. SOLID — это 5 паттернов объединенных вместе, после того, как меня спрашивали на собеседовании об этом паттерне, я сразу же принялся за его изучение. Скажу вам честно, мне было сложно понять его, но по итогу получается очень стойкий код, который можно дополнять без вреда уже написанному приложению. Если вам интересен SOLID, то попробуйте написать калькулятор при помощи данного паттерна. Реализуйте сначала + и -, а потом добавьте и другие возможности калькулятору. Я, помнится, писал на c# (консольная программа).

Пожалуй, это все, что я могу вам рассказать о собеседование в своем городе. Да здесь есть и разработчики SPA (reactJS требуется в основном), и разработчики web игр (всё тот же react, в большинстве случаев, а иногда лишь нативный JS), и разработчики python, 1C, JAVA и прочие. Я был сильно удивлен разнообразию используемых технологий и языков. На этом у меня всё, пожалуй. До встречи.

Комментарии (18)


  1. nafgne
    17.11.2018 19:15

    Если вы начали с «var b», то на собеседование можно не идти.


    1. Zenitchik
      17.11.2018 19:26
      +1

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


    1. shiru8bit
      17.11.2018 19:37
      -1

      С var b начинается куча ECMA скриптов, например JS, который HTML5, или ранее мега-популярный AS3, ныне ещё живой в AIR-приложениях.


    1. EpicLegend_gg Автор
      17.11.2018 21:03

      Я начинал с с++. Под var b я подразумевал JS.


    1. roscomtheend
      19.11.2018 16:18

      А проводить их самому в свою компанию?


  1. dimka11
    17.11.2018 22:52

    Сейчас и в Java есть var.


  1. dimoff66
    18.11.2018 00:22
    -1

    Вычислить факториал очень просто, не важно какой язык программирования. Реализуете это через рекурсию.


    Через рекурсию слишком просто, нужно через классы и замыкания.


  1. ErnestMiller
    18.11.2018 10:18

    Вот так всегда бывает. На собеседованиях спрашивают про бинарные деревья, паттерны и чистоту кода, а когда начинаешь с ними работать и смотреть, что там делали до тебя — поседеешь. И потом все проекты срочные-срочные, выкладывай срочно, какие паттерны, git и прочее, лишь бы работало.


  1. StarTrinity_CEO
    18.11.2018 10:18

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


    1. EpicLegend_gg Автор
      18.11.2018 10:19

      Зарплаты от 25к и выше. Да, я нашел себе место.


  1. kostyabkb
    18.11.2018 12:20
    +4

    SOLID — не паттерн, скорее набор принципов


  1. Methos
    18.11.2018 14:17

    не «будите»

    а будете

    грамотеи, йля


  1. Error1024
    18.11.2018 14:56
    +1

    Про бинарное дерево уже сложней… двоичное дерево (бинарное) = структура данных. Дерево используется для работы с большими объемами данных, не удивительно, что при приеме на работу с интернет магазинами спрашивают именно это.

    Вот хоть убейте, не понимаю, нафига разработчику при создании очередного шаблонного интернет магазина, на уже готовом движке и БД может вдруг понадобится писать очередное бинарное дерево.
    Задача ради задачи, «у Гугла же требуют написание кода для обхода бинарного дерева на бумажке, чем мы хуже?»


    1. Whuthering
      18.11.2018 17:04

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


    1. Whuthering
      18.11.2018 19:41

      А что до "готового движка" — рано или поздно к готовому движку придётся привинчивать какие-то свои модули и расширения, и тогда это будет более чем актуально.


  1. Ascar
    18.11.2018 22:26

    Так и не сказали о каких паттернах спрашивают. SOLID более общее понятие, рандомный пример паттернов это фабрика, прототип, observer.


    1. EpicLegend_gg Автор
      19.11.2018 06:29

      Спрашивают общие вопросы по паттернам. Для чего они, какие вы знаете, а расскажите подробней о них. Конкретика была лишь по SOLID. Из-за этого и написал про него.


      1. Ascar
        19.11.2018 10:43

        Уж лучше конкретика чем «какие вы знаете».