Восстание началось
Источник: IT-Комедия: Улётные Приколы
Карьера в IT. Системный аналитик, часть 9. Список тем для подготовки к собеседованию на позицию джуна. Часть 2
Продолжаем список тем и вопросов, ответы на которые нужно знать, чтобы пройти собеседование на позицию джуниора.
Еще небольшое предисловие - судя по комментариям к предыдущему посту, не все понимают, что не обязательно, что ВСЕ эти вопросы попадутся вам одновременно. Это наиболее вероятные вопросы, которые вам зададут ( по крайней мере актуально для ФинТех сферы). Ну и опять же, всё очень зависит от интервьюера, его опыта и тех целей, которые ему поставило руководство компании\проекта, на интервью.
Есть еще очень хороший подход к интервью, когда ты задаешь вопросы по каждой теме, и чем больше правильных ответов дает соискатель - тем глубже ты копаешь в эту тему, пока его знания по вопросу не иссякнут. Это позволяет не просто прогнать человека по заданным темам, которые нужны компании, но и в целом представить его уровень более детально (плюс так куда интересней для всех участников собеса).
Более техническая часть собеса:
Архитектурно-интеграционные вопросы:
Что такое клиент-серверная архитектура? Что такое тонкий и толстый клиент, чем они отличаются? (Тут никто не ждет прям уверенных технических знаний и деталей реализации того или иного подхода, но в общих чертах знать нужно).
Что такое HTTP? Какие основные методы HTTP вы знаете? Какие функции они выполняют? Расскажите про структуру HTTP-сообщений. (Если вы перечислите основные методы и скажете, что у сообщения есть заголовок, строка и тело - это уже, в целом, неплохо. Если знаете больше этого, вообще замечательно).
Что такое REST? Какие основные принципы у него есть? Какие методы есть в REST? В чем разница между GET и POST запросом?
В каких местах (четырех) мы можем передать атрибуты в запросе? (Path, Body, Query, Header).
Что вы знаете про концепцию CRUD?
Что такое идемпотентность? Какие методы являются идемпотентными?
Что такое синхронные и асинхронные интеграции? В чем между ними разницы? С помощью чего можно их реализовать?
Можно ли реализовать асинхронную интеграцию через REST? (Вряд ли этот вопрос будут задавать, если вы не ответите на предыдущие. Это скорее со звездочкой и не обязательный)
Что такое очередь сообщений? Как передаются сообщения через очередь? Какие очереди сообщений есть и в чем между ними разница? (Если расскажете про PUSH/PULL-стратегии - плюсик в карму обеспечен)
Что такое гарантированная доставка сообщений и какими механизмами ее можно обеспечить?
Какие вообще способы интеграции существуют? С какими из них приходилось работать? В чем их преимущества и недостатки? (Интеграция через обмен файлами, через общую БД, через веб-сервисы и обмен сообщениями)
Базы данных:
Что такое базы данных? Какими они бывают? С каким БД приходилось работать?
Что такое ER-диаграммы? Приходилось ли их проектировать?
На какой уровень оцениваете свой уровень владения SQL? С какими инструментами по работе с БД знакомы?
Ну тут могут конечно и про формы нормализации спросить, но уже лишнее, как по мне. Я обычно спрашиваю больше про опыт проектирования БД в целом. Приходилось ли проектировать базу в целом и под конкретные задачи в частности, каким образом это было сделано.
Различные задачки:
Тут вообще кто во что горазд в плане придумывания задач. В среднем, вам дадут умозрительное задание на проектирование какой-либо системы и попросят выделить основные классы этой системы (возможно, предварительно нужно будет собрать требования с интервьюера), спроектировать интеграцию между частями этой системы/интеграцию с внешними системами (плюс объяснить выбор технологии интеграции). Основной упор на ваши размышления, в основном именно в подобных вопросах можно понять уровень соискателя, потому что все остальные можно заучить. А тут проверяется именно понимание того, о чем вы рассказывали предыдущую часть собеседования.
Небольшие оффтопные вопросы:
Расскажите, что такое авторизация, аутентификация и идентификация? Чем они отличаются друг от друга? (почему-то один из самых любимых вопросов некоторых людей)
Чем верификация отличается от валидации?
Приходилось ли работать с JIRA\Confluence?
Конечно, так получается, что если вы знаете ответы на все эти вопросы, или больше 80-90%, то как будто бы вы уже не джун. Но чем лучше вы отвечаете, чем лучше вы соответственно подготовились - тем больше вам зададут вопросов (в нормальном интервью, а не шаблонном). Что очень сильно повысит ваши шансы получить оффер и выделиться среди других кандидатов.
Поэтому, конечно, можно, и зачастую нужно, пробовать собеседоваться, при наличии знаний, которые позволят ответить вам на половину из этих вопросов - шансы всё еще будут, плюс вы получите опыт прохождения собеседований (что само по себе очень важно) и определите те темы, про которые часто спрашивают, но в которых вы пока еще не сильны.
P.S.: По традиции - буду признателен за вопросы про карьеру\профессию\чему угодно связанному со сферой IT - постараюсь ответить на всё.
P.P.S.: Также веду телеграмм-канал, в котором делюсь разным про профессию и про свой путь в ней. Есть огромное количество постов на тему софт-,хард-скиллов и про карьеру в целом - см. закрепленный дайджест.
Посвящается всем, кто что-то у кого-то заказывает
Когда 23-летней девочке-дизайнеру родом из Питера и суровому 60-летнему технологу пищевого производства родом из станицы в Ростовской области поставили задачу сделать конфету в виде хрюшки.
Хз как так получается
А ведь четко сформулированное ХЗ зачастую дает отличный результат!
Попытка для интереса
Я как сраный старпер тупо в ит (22 года стаж, но нихера не знаю). Забейте на языки. Думайте о предоставлении данных. Язык программирования - херня, инструмент типа отвёртки. А от структуры данных зависит и платформа, и архитектура, и язык.Я что ща модно? Питон? Душите его. почитайте, бля, программной с дипломом.
Карьера в IT. Системный аналитик, часть 9. Список тем для подготовки к собеседованию на позицию джуна. Часть 1
Всем привет!
Вернулся из отпуска - готов продолжать свою деятельность дальше. Сегодня подытожу, немного, мою длинную серию постов и сведу ее в список тех тем (и тех вопросов), которые необходимо знать начинающему системному аналитику для того, чтобы успешно пройти технический собес.
Список тем и вопросов к ним:
Методологии разработки ПО и жизненный цикл разработки ПО.
Какие методологии разработки вы знаете? (Тут нужно рассказать про эджайл, водопад хотя бы. Можно и про остальные упомянуть, но обычно не требуется).
В чем отличия между ними? Какие у них есть особенности?
Расскажите про жизненный цикл разработки ПО. Какие этапы проходит задача\продукт до выхода в прод? (Лучше рассказывать своими словами, просто как понимаете)
Расскажите про состав команды разработки - какие есть позиции и какие функции выполняет каждая из них? Какую роль выполняет системный аналитик? (Кстати, очень "забавно", но когда собесил людей на стажировку СА и даже некоторых джунов - много кто не смог толком ответить на последний вопрос. Т.е. люди банально даже не погуглили хоть чуть-чуть и не проходили по первым ссылкам гугла, чтобы немного подготовиться к собесу и понять куда они вообще идут. Про какую уж тут позицию СА можно говорить - не надо так)
Требования.
Самый частый задаваемый вопрос для джунов (потому что, ну а что еще спрашивать?) - расскажите про виды требований, которые знаете. Приведите примеры таких требований.
Какие качества требований вы знаете? Приведите пример требования, которое удовлетворяет всем качествам.
Какие методологии сбора требований вы знаете? Какими из них пользовались?
Тут может быть еще любая кастомная задача на сбор требований. Т.е. интервьюер обрисовывает вам какую-то задачу и вам нужно у него собрать требования и их устно зафиксировать. Очень полезная, кстати, вещь для собеседований - тоже помогает хорошо понять то, насколько человек вообще ориентируется в теме, насколько он может применять теорию на практике и насколько хорошо он может формулировать вопросы (это важно даже для СА). Один из примеров, про шкаф, которые лично мне задавали на собеседовании, разбирал недавно в ТГ - ссылка на пост.
Вопрос со звездочкой. Как вы думаете, есть ли прямое влияние методологий разработки на требования? Какое? (Спойлер - есть)
Какими инструментами для фиксирования требований вы пользовались? Какие в принципе существуют? (Тут есть достаточное разнообразие инструментов - от ворда и согласований ТЗ по почте до связки asciidoc + git. Дефолт - это jira\confluence)
Как определить, что задача успешно вышла в прод? (Тут просто на рассуждение. Можно сказать, что признаки успешности - отсутствие инцидентов на проде, положительные фидбеки от пользователей, стабильность работы системы и вот это всё)
Как управлять требованиями? Что делать, если релиз уже распланирован и тут бизнес-заказчик прибегает с горящими глазами и требует внести срочную доработку в текущий релиз. Как бы вы отработали эту ситуацию?
Диаграммы.
Какие нотации вы знаете? (UML\BPMN\IDEF0 и вот это всё)
Какие виды UML-диаграмм вы знаете? Для чего они предназначены? (Тут тонкий момент, что если вас начнут спрашивать, а какие вы знаете типы стрелочек и когда какую применять - имхо это уже эребор и не нужно это знать наизусть. Я, например, не знаю, хотя регулярно это использую и обучаю - всегда можно за 30 секунду загуглить это. Но общую теорию по типам диаграмм надо знать)
Что вы знаете о BPMN, для чего эта нотация нужна? Приходилось ли использовать на практике?
В чем отличия между этими нотациями? Какие у них преимущества?
Могут показать, как вариант, какую-нибудь схему и спросить что на ней нарисовано. Такой подход мне нравится.
UC\US.
Что такое пользовательские истории? Приведите шаблон, по которому они составляются и пару произвольных примеров.
Что такое варианты использования, для чего нужны? Как их оформлять и какие шаблоны вы знаете?
Любые задачи, которые только можно придумать на сбор требования\моделирование каких-либо ситуаций\игра в аналитика-заказчика - насколько хватит фантазии и желания у интервьюера.
Почти на все эти вопросы вы можете найти ответы в этой серии постов.
Эта часть собеседования не требует от вас идеального зазубривания материала и того, чтобы вся теория отскакивала от зубов. Она по большей части вольная и вам главное показать то, что вы понимаете о чем вас спрашивают и можете сформулировать ответ своими словами.
А что еще важнее - если вы чего-то точно не знаете\не помните, то вы можете хотя бы порассуждать об этом (мне кажется, что нет более важного навыка для аналитика). Поэтому старайтесь размышлять над теми вопросами и кейсами которые вам задают, обычно в процессе этого будут задаваться наводящие вопросы и вполне неплохо можно на этом вырулить - это абсолютно точно лучше, чем молчать.
Тем более, что почти на все эти вопросы нет однозначного правильного ответа. По своему опыту могу сказать, что я скорее проголосую за человека, который не всё знает, но очень бодро отвечает, по делу рассуждает (важное уточнение, что именно по делу, а не просто засоряет эфир болтовней), чем за того, кто четко отвечает по любой теории, но теряется, если задать какой-то не стандартный вопрос.
Ну и стоит понимать, что каждый интервьюер за годы практики ведения собеседований выстраивает свою картину этого собеседования, свой список вопросов и задач. И как правило именно на этом, первом этапе собеседования, он составляет оценку вашим софт-скиллам в первую очередь.
В следующей части перейдем к списку вопросов уже по хард-скиллам.
P.S.: По традиции - буду признателен за вопросы про карьеру\профессию\чему угодно связанному со сферой IT - постараюсь ответить на всё.
P.P.S.: Также веду телеграмм-канал, в котором делюсь разным про профессию и про свой путь в ней. Есть и хардовая информация (асинхронные, синхронные интеграции, примеры ТЗ\шаблонов написания микросервисов), так и более софтовая - см. закрепленный дайджест.