Что спрашивают на собеседовании frontend
Техническое собеседование на фронтенд разработчика
Успешное техническое собеседование на фронтенд разработчика – это прежде всего подготовка. Вот список материалов и советов, которые помогут.
Вопросы и темы
В этом разделе собраны темы и вопросы, ответы на которые облегчат техническое собеседование на фронтенд разработчика. Обратите внимание, что фронтенд-фреймворк и сопутствующие технологии (здесь – React.js/Redux) могут быть любыми другими, главное – как вы будете отвечать на общие вопросы.
Возможные вопросы:
Техническое собеседование на фронтенд разработчика: советы
Старайтесь не гуглить готовые решения
Трудно помнить все тонкости конкретного API и языка, поэтому если во время тестового задания на собеседовании вы будете пользоваться Гуглом, вряд ли кто-то будет против. Но если вы что-то забыли, лучше обратиться напрямую к документации: ваш собеседник это оценит. Намного хуже, если вы возьмете готовое решение со Stack Overflow и не сможете его правильно адаптировать.
Уточняйте
Не стесняйтесь переспрашивать, уточнять, задавать вопросы во время решения тестового задания. Если вам что-то непонятно, или вам кажется, что решение должно быть иным – уточните. Это намного лучше, чем если вы сделаете все так, как вам кажется верным, в то время как собеседник будет ожидать другого решения.
Разбирайтесь с ошибками
Баги в процессе написания кода всегда неизбежны. Старайтесь не запускать ошибки даже во время тестового задания, разбирайтесь с ними по мере их появления. Даже, казалось бы, незначительное изменение решения может повлиять на вашу оценку не в лучшую сторону.
Освежите знание языка перед собеседованием
Даже если вы пишете код каждый день, могут быть вещи, которые вы упускаете из виду, и которые могут оказаться на собеседовании. Потратьте лишнее время на документацию. К примеру, повторите про array.map, array.filter и array.reduce, чтобы не переборщить с циклами в решении.
Не забывайте о тестировании
Даже если вы не занимаетесь тестами для собственного кода, в работе вам наверняка придется это делать. Вы должны иметь хотя бы общее представление о тестировании кода: ознакомьтесь с юнит-тестированием и интеграционными тестами.
Короче – не всегда лучше
Краткость – сестра таланта только до тех пор, пока код остается читабельным. Производительность и чистота кода важны, но не увлекайтесь слишком сокращениями, иначе код превратится в плохо читаемый набор методов.
Материалы для подготовки к собеседованию
Вам могут пригодиться наши материалы для подготовки к собеседованиям:
Задачи с собеседований (front-end)
Так получилось, что за свою карьеру front-end разработчика, я побывала на многих собеседованиях. Тема прохождения интервью не теряет своей актуальности, а в комментариях, когда речь заходит о собеседованиях, начинают ломаться копья. Хочу тоже внести свой вклад и поделиться накопившейся коллекцией вопросов. Прошу.
Лирическое отступление
На собеседования меня приглашают охотно, не знаю, виной этому симпатичная фоточка в резюме или его содержание. Если о резюме, то для описания технологий, используемых на каждой текущей работе, я трачу часа два, три. Порой просматриваю в чужие, как они оформлены, да и вдруг найду что-то полезное для себя…
Задачи
Для начала что-нибудь полегче.
1. Есть некоторая строка (var str = ‘fgfggg’;), что будет, если мы возьмем str[0]?
2. Реализовать методы, которые в процессе выполнения строки (2).plus(3).minus(1) дали бы на выходе 4.
Поскольку, мы работаем с числами, надо расширить прототип Number новыми методами.
Число два будет доступно через this в функции plus. Из нее мы возвращаем результат сложения числа, на которое указывает this и числа, переданного в качестве аргумента. Аналогично для minus.
3. Сейчас уже редко, но до сих еще спрашивают: «Почему плохо писать прямо в прототипы базовых типов?»
4. Дана функция, она принимает в качестве аргументов строки ‘*’, ‘1’, ‘b’, ‘1c’, реализуйте ее так, что бы она вернула строку ‘1*b*1c’
Ее можно решать прямо в лоб, перебирая в цикле все аргументы, но мы поступим умнее.
5. Дано дерево, надо найти сумму всех вершин.
Я решила задачу рекурсией, потом мы упростили решение, а затем переписали на очередь.
6. Можно ли из js менять значения в before, after?
Давайте, что-нибудь для разгрузки мозга, вопрос на верстку.
7. Вместить три блока 20X20px в ряд, в блок шириной 60px, при этом у блоков должны быть границы.
8. Как применяются скругленные углы для элементов и стили для текста(шрифт, тип шрифта, цветащте и тд)?
9. Что такое ресет стилей?
10. Требуется сверстать попап по центру, его размеры нам известны, но мы не хотим что бы он прокручивался вместе со страницей, причем по высоте может и не влезать в высоту экрана.
11. Нарисовать стилями полукруг.
12. Есть массив в котором лежат объекты с датами, отсортировать по датам.
13. Есть несколько слов, определить состоят ли они из одних и тех же букв(‘кот’, ‘ток’, ‘окт’)
Про промисы
В последнее время часто стали задавать вопросы про promse, что это такое, какие методы обработки ошибок, можно ли обойтись без них.(14, 15, 16)
Начну издалека, так как js-асинхронен, то в результате отслеживания завершения определенного когда в качестве аргументов передавались callback-функции, которые и вызывались по мере готовности. Цепочка ассинхронных методов росла, что приводило к Callback Hell, что затрудныло работу с кодом, отлаживание ошибок и им на смену пришли промисы.
Несколько промисов можно объединить и получить разом ответ от них
17. И конечно вопрос на засыпку: «Каким образом можно обойтись без промисов?».
18. Еще вспомнился вопрос про обработку ошибок в промисах. У нас есть три запроса к серверу, один возвращает нам имя пользователя, второй его данные, а третий изображение для аватарки, мы для каждого запроса используем по промису, объединяя их в цепочку, что будет если в одном из запросов произойдет ошибка, довыполнится ли цепочка?
Промисы все разрастаются и на смену Callback Hell приходит Promise Hell. Что же делать?
(19)Вот еще один примерчик на асинхронность. Объяснить в какой последовательности выведутся цифры и почему так.
Достаточно популярный, надо сказать. Вот мне он и достался в очередной раз. Уже отработано начала отвечать: «1, 3, 2. Так как хоть js и асинхронен, но внутри его есть очередь выполнения и setTimeout и setInterval, если им указан 0, помещают вызов функции в конец очереди.»
Тут надо сказать ребята зафейлились, заявив, что я ответила правильно, про 132, но не объяснила почему.
(20)Вообще вопросы на setTimeout и setInterval весьма актуальны.Меня спрашивали: «Какое минимальное время можно задать?»
Куда же без замыканий
Не давно выделили целую статью для этого примера(тут), читатели в комментариях расписывали всевозможные способы решения, от традиционных до фантастических. Вот о которых я обычно рассказывала на собеседованиях.
21. Что будет выведено в консоль, как можно модифицировать пример что бы он возвращал правильный результат(назовите как можно больше способов)?
Самый распространенный, обернуть в замыкание
Не все обращали внимание, что в i можно передать не только контекст
Так же методам setInterval и setTimeout можно передать аргументы, которые будут прокинуты в качестве аргументов калбек-функции
Одна из возможностей es6, в данном случае сработает несколько неожиданно, let не в блоке <>.
Давайте что-нибудь похардкорнее.
22. Надо написать функцию, которая вернет «hello world», но при этом в теле функции нельзя использовать ни цифры, ни буквы, а циклы, массивы, объекты можно, но без цифр.
Увы, эти интересные люде не сказали мне как ее решать, поэтому, подумав дома, я могу только предположить.
Так я получила букву H, но это изврат еще тот, осталось сделать оставшиеся 10 знаков…
(23) От них же. Числа от 1 до 100 лежат в массиве, они хаотично перемешанные, от туда изъяли одно число, надо найти, что это за число. алгоритм не должен превышать O(n^2) сложности.
Пройти массив циклом и сложить все имеющиеся там цифры и вычесть из числа, полученного по формуле (n + 1) / (n / 2).
Мне пришло в голову более экзотическое решение. Детям и слабонервным лучше не смотреть.
Просто мне вспомнилось, что когда-то спрашивали: «Как быстрее всего найти сумму элементов массива?»
Вот на тот момент вспомнилось и не пришло ни чего лучше.
(24) Вот еще фейл-задача. Приведу дословно, те напишу как написали мне.
Меня сбила эта строчка function Foo(Book, ‘Учебник javascript’, ‘Петр Сергеев’). Только я вижу, что здесь что-то не так? Мне предложили решать через Object.create(), но я не согласна. Свойства и методы, записаные в саму функцию-конструктор, не будут «скопированы» Object.create.
Конечно меня не взяли, а на последок посоветовали лучше учить теорию. Хнык-хнык.
В любом случае, я бы предпочла решать так.
Хочу посоветовать чувакам лучше готовиться к собеседованиям.
Задача про палиндром
(25) Да, до сих пор ее задают. Причем она попалась мне несколько раз. В первый раз я стала решать циклом, вроде бы получилось, только оставалась проблема с разными символами, писать для каждого символа replace — это не вариант, а в регулярках я не сильна, да и сработает он до первого подходящего вхождения. Я не привыкла оставлять за спиной что-то непонятное, поэтому разобралась как реализовать функцию.
Красиво, просто, изящно.
Забавно, но где-то через год мне попался этот же вопрос. Я обрадовалась: «Свезло». Как оказалось, нет. Требовалось решить с помощью цикла, а регулярку можно было использовать только для одного символа. Собеседник мотивировал это тем, что replace с регуляркой по всей строке — слишком ресурсоемко.
Подумав дома, у меня получилось вот так:
26. Как подключить js, css? Плюсы, минусы разных способов?
Можно с помощью тегов
прямо на странице или
В date подпихнуть вут такую строчку
За место данных можно вернуть какой-то код, который закроет вызов функции и выполнится у пользователя.
Сейчас уже исправили, но раньше наблюдалась критическая уязвимость в json-е, с помощью символа переноса строки он подламывался.
32. Ускорение загрузки страницы.
1 минимизировать и склеить в один все js-файлы
2 то же и с css
3 собрать изображения в спрайты
4 кеширование
а) файлы js и css кешируются навсегда( или на длительный период, к примеру на год), когда в них вносятся какие-то изменения, в результате разработки, меняется номер версии, браузер считает, что это новые файлы и закачивает их. Время кеширование содержится в заголовке expires.
б) файл кешируется до тех пор, пока в нем не произошли изменения. Когда пользователь в первый раз заходит на сайт, у него еще нет кеша, файлы закачиваются и в следующий раз, когда происходит обмен заголовками происходит анализ ETag(хеш суммы содержимого содержимого файла или хеш последнего времени изменения, или номер версии) Если он изменился, то закачивается, в противном случае, берется из хеша.
Так же можно брать заголовки с датой последней модификации(Last_Modifed), но это менее надежно.
в) можно сжать данные перед отправкой, решается настройкой конфига в nginx. Пример. Content-Encoding: gzip
г) можно разбить js на модули и на разных страницах подключать по мере необходимости.
Можно найти еще несколько, но они менее популярны или устарели.
33. CommonJS и AMD или модульность?
Один принцип архетектры асинхронен, а второй синхронен. В качестве примера можно привести RequaerJs, по одному его виду можно сказать, что он асинхронен
define — фактически простая функция, все, что написано за ее приделами будет выполняться без оглядки на то, что происходит в define, поэтому одним аргументом идет callbeck-функция. Как только подгрузятся все зависимости, перечисленные в массиве, так они станут доступны внутри через аргументы callbeck-функции.
Система модулей в Node.Js наоборот синхронна. Мы пишем:
и сразу ниже с mod можно работать, все останавливается, пока модуль не загрузится
На собеседование я начала решать так:
Аналогично пишутся функции для five, minus, two. Уже дома, поразмышляв в спокойной обстановке, появилось такое решение
35. Сортировка пузырьком.
Да, да, ее еще спрашивают.
36. Обратная польская нотация.
Основной принцип. Дана строчка 23+1-, начинаем двигаться по ней, как только доходим до первого арифметического знака, берем две цифры перед ним и на их место, записываем результат вычисления. Получится 51-. Начинаем все с начала.
Кому интересно, вот статья wikipedia
37. Есть div, в нем другой div, у второго задан padding 50%, как это все будет выглядеть?
Собеседник предложил мне посмотреть дома как оно сработает, хотя мне стало очень интересно.
Как вы считаете, правильно ли на собеседование отвечать самому на вопрос, если кандидат с ним не справился?
38. Есть строка, состоящая из разных скобок, проверить закрыты ли все. Пример строки: «())(<>><()][]["
Если бы передавались строки из скобок ‘<', '[', ']', '>‘
39. Напишите код, который при клике на любой div внутри root будет выводить в консоль его id.
40. Напишите код, который сделает из массива объект
// на входе массив
41. Что выведется в результате?
[18, 16], так как за счет функции
создает замыкание, var i = i — уже принадлежат областям видимости в замыканиях.
в начале поищет в своей области видимости i, не найдя, подымется на уровень выше и там найдет его. Из функции вернется сумма, которая будет положена в массив последним элементом.
42. Есть функция и объект. Напишите все известные вам способы, чтобы вывести в консоли значение x из объекта используя функцию
Что вернет метод?
а) ошибку, т.к. метод объявлен позже, чем создание экземпляра
б) вернется ‘FOO’
44. В js переменные объявленные следующим образом:
a=3; b=«hello»;
Укажите правильные утверждения.
а) создаются в локальном контексте
б) создаются в глобальном контексте
в) создание переменной без ключевого слова var — синтаксическая ошибка.
45. Что вернёт этот код — typeof (function()<>)()
а) callback
б) method
в) undefined
г) function
47. Почему 0.1 + 0.2 даст 0.30000000000000004
48. Моему коллеге на должность php-разраба, предложили такую
Есть два блока, второй скрытый, если в первом нет дочерних элементов, то показать второй.
Конечно это не все задания, которые мне довелось решать, какие-то я благополучно забыла, какие-то слишком банальные, масса вопросов, просто на теорию, остались за кадром.
Прочее
Вот еще парочка вопросов, они на прямую не касаются фронта, но, наверно не лишне знать.
Идеальный интерфейс в вашем представление?
Как вы бы сделали отказоустойчивый сайт?
Какие типы уязвимостей знаете?
Собеседование для фронтенд-разработчика на JavaScript: самые лучшие вопросы
Недавно мне довелось побывать на встрече участников проекта FreeCodeCamp в Сан-Франциско. Если кто не знает, Free Code Camp — это сообщество, нацеленное на изучение JavaScript и веб-программирования. Там один человек, который готовился к собеседованиям на позицию фронтенд-разработчика, попросил меня подсказать, какие вопросы по JavaScript стоит проработать. Я немного погуглил, но не смог найти подходящего списка вопросов, на который я бы мог дать ссылку и сказать: «Разбери эти вопросы и работа твоя». Некоторые списки были близки к тому, что мне хотелось найти, некоторые выглядели очень уж простыми, но все они были либо неполными, либо содержали вопросы, которые вряд ли кто станет задавать на реальном собеседовании.
В итоге я решил составить собственный список. В него входят и те вопросы, которые задавали мне, когда я искал работу, и те, которые задавал я, когда искал сотрудников на позиции фронтенд-разработчиков. Обратите внимание на то, что некоторые компании (вроде Google) уделяют особое внимание таким вещам, как проектирование эффективных алгоритмов. Поэтому, если вы хотите в подобной компании работать, в дополнение к приведённым тут вопросам, порешайте задачки с соревнований CodeJam.
Я буду добавлять и редактировать ответы на эти вопросы здесь. Если у вас возникнет желание что-нибудь дополнить или улучшить — буду рад вашим пулл-реквестам.
Вопросы разбиты на несколько разделов:
Теория
Интервьюируемый должен обладать чётким пониманием концепций, которые затрагивают вопросы из этого раздела, должен уметь всё это объяснить. Программирование тут не требуется.
Программирование
Ответы на эти вопросы предполагают реализацию функций на JavaScript. За каждым вопросом следуют тесты, которые должно успешно проходить решение.
▍Простые задания
Способны ли вы добиться того, чтобы функция решала задачу за время O(N)? Подсказка: есть одна хорошая формула, которой вы можете воспользоваться.
▍Задания средней сложности
▍Сложные задания
Некоторые задания из этой группы связаны с созданием структур данных. Не нужно запоминать все тонкости их функционирования, достаточно понимания их устройство, при этом сведения о предоставляемом ими интерфейсе можно найти в интернете. Далее, нужно знать, для чего эти структуры данных используются, каковы их ограничения в сравнении с другими структурами данных.
Отладка
При ответе на следующие вопросы сначала постарайтесь понять, почему представленный код не работает. Объясните причину ошибки. Затем предложите пару вариантов исправления проблемы и перепишите код, реализуя один из предложенных вариантов. В итоге программа должна работать правильно.
Проектирование систем
Если вы не уверены, что знаете, что такое «проектирование систем», сначала почитайте это.
1. Расскажите о реализации виджета автозавершения вводимого пользователем текста. Данные для автозавершения загружаются с сервера. Рассмотрите клиентскую и серверную части системы.
Итоги
Надеемся, эти вопросы пригодятся и тем, кто собирается на собеседования, и тем, кто их проводит. А если вы не относитесь ни к тем, ни к другим, полагаем, вопросы помогут вам поддерживать себя в хорошей программистской форме.
Вот, кстати, ещё несколько мест, куда можно заглянуть, если вам хочется попрактиковаться: The Algorithm Design Manual, задачи с соревнований CodeJam, репозиторий keon/algorithms. А вот — несколько ресурсов, которые будут полезны JS-разработчикам: JavaScript Allonge, You Don’t Know JS, Effective JavaScript.
Уважаемые читатели! Если у вас есть на примете вопросы, которые, по вашему мнению, стоит добавить в этот список (или если вы обнаружите ошибку) — расскажите нам и напишите автору этого материала.
Как проходит собеседование Junior фронтенд-разработчика
Меня зовут Максим Чеченёв, я фронтенд-разработчик уже почти девять лет. Работаю в компании MessageBird в Амстердаме и наставником на курсе «Веб-разработчик» в Яндекс.Практикуме. Ещё я веду канал в телеграме «Сеньор Разработчик».
Прежде чем стать сеньором и начать собеседовать кандидатов, я прошёл через десятки собственных собеседований. В этой статье я расскажу, из чего обычно состоит собеседование Junior фронтенд-разработчика, и дам несколько советов по подготовке.
Из чего состоит собеседование
Собеседование фронтенд-разработчика на начальных этапах мало чем отличается от любого другого.
Обычно собеседование можно разбить на три части:
Знакомство
Самая приятная часть. Здесь вы рассказываете о себе, а интервьюеры — о компании, продукте, позиции и должностных обязательствах. На этом этапе нет задачек и правильных ответов — беседа будет идти про ваш опыт, образование, увлечения.
Хотя в этой части и нет правильных ответов, к ней всё равно нужно готовиться. Этот этап так же важен, как и техническая часть. Здесь проверяют ваши софт-скиллы, и иногда вам могут отказать в работе, даже если вы блестяще показали себя с технической стороны.
Рассказ о себе
Представьте, вы пришли на собеседование в компанию, о которой мечтали. Рекрутер предложил вам чашечку кофе, спросил, как вы добрались, а после попросил рассказать немного о себе. Такой простой вопрос застал вас врасплох: «С чего начать, стоит ли рассказывать о своём образовании, хобби или рекрутеру важен только мой опыт?»
Здесь нет правильного ответа и чёткой схемы. Но есть несколько советов, на что стоит обратить внимание.
«Почему вы хотите работать у нас?»
Как не стоит отвечать: «Потому что вы большая компания, у которой много интересных задач».
Какой ответ понравится. Познакомьтесь с продуктом и компанией получше, найдите, что вам нравится, а что нет. Расскажите про это на собеседовании.
Будьте честны, но не наглейте. Недавно я собеседовал кандидата из Бразилии, который на вопрос: «Почему ты хочешь у нас работать?» ответил: «В Европе платят больше, чем в Бразилии». Несмотря на то, что это максимально честный ответ, это показывает, что ему всё равно, где работать и чем заниматься.
«Почему вам интересен фронтенд?»
Я лично люблю задавать такой вопрос: «Почему вам интересен фронтенд? Почему не бекенд, например?» — он отлично показывает заинтересованность и страсть кандидата.
Как не стоит отвечать: «Да я просто попробовал, вроде интересно».
Какой ответ понравится: «Мне нравится создавать удобные интерфейсы» или «Мне нравится дизайн и программирование, и фронтенд — это как раз то, что мне нужно».
«Сработаемся ли мы вместе?»
Компании обращают внимание на разные качества кандидата. Некоторым важно ваше умение работать в команде, другим — желание обучаться, а третьим — всё и сразу. Но обычно компании ищут такого человека, который будет с командой на одной волне. Чтобы это понять, я задаю уточняющие вопросы:
Такие вопросы помогают узнать вас лучше: о чём вы мечтаете и чем интересуетесь. Они могут показаться вам немного личными, это нормально. Но отвечая на эти вопросы честно, вы почувствуете, как обстановка разряжается, и вот вы уже готовы к следующему этапу — техническому интервью.
Техническое собеседование
Техническая часть в каждой компании отличается. К сожалению, нет универсального набора вопросов, которые используют все. Но обычно этот этап состоит из вопросов на понимание базовых терминов, идей о фронтенде и небольших заданий. Кто-то может дать небольшую задачку, а кто-то попросит прокомментировать куски кода.
Прежде всего внимательно изучите вакансию и требуемые технологии, которые в ней указаны. Если указан React — будьте готовы к вопросам об этой библиотеке. Если написано «Мы используем Vue», то React уже не так нужен.
Теоретические вопросы
Блок с теоретическими вопросами можно условно разделить на два: вопросы на знание основ JS, CSS и других инструментов и вопросы о том, как вы привыкли работать с кодом.
Вопросы на знание инструментов
Чтобы подготовиться к первому блоку, не лишним будет освежить в памяти базовую теорию JavaScript, к примеру:
Будьте готовы к уточняющим вопросам, поэтому не говорите того, в чём не уверены, или того, что вы знаете поверхностно. Пройдитесь в теории по тем моментам, которые кажутся наименее понятными.
Когда я собеседую кандидатов, люблю задавать вопросы на понимание технологий:
Вопросы о привычках в работе
Кроме вопросов на знание технологий вас могут спросить о том, как вы работаете, к примеру:
Вас обязательно спросят: «Сколько бы времени у вас заняла эта задача?» Важно помнить, здесь нет правильного ответа. От вас не ждут точного ответа, но ждут адекватного. Ответ вроде «Сделаю за пару часов» покажет, что, возможно, вы переоцениваете себя.
Задание: что выполнит данный код?
Очень популярный вид задач на собеседованиях. Вам показывают слайды с разным кодом и просят сказать, что выведет функция, чему будет равна переменная и так далее.
Такие задания проверяют, как вы понимаете основы JS или CSS. Например, как работают переменные и как они друг на друга ссылаются.
Вариантов таких задач множество, и ко всем подготовиться невозможно. Но если вы знаете основы, у вас не будет проблем.
Задачи
Компании любят давать небольшую задачку (уровень “Easy” на LeetCode — например, вот такую), которую надо решить во время интервью. Чаще всего это небольшой алгоритм. Например, про работу со строками или с массивами.
Самое главное: не спешите решать задачу, а сначала немного подумайте. Задайте собеседующему вопросы по условию: какие данные здесь могут быть, какие есть ограничения.
Рассуждайте вслух. Вас оценивают не только по тому, смогли вы решить задачу или нет, но и по тому, как вы принимаете решения и воспринимаете обратную связь.
Как готовиться к таким задачам?
Посмотрите задачи уровня “Easy” на leetcode.com, hackerrank.com или codewars.com. Не пытайтесь решить их все разом за один вечер. Делайте это по чуть-чуть — по одной-две задачи в день.
Вам сразу может показаться, что в таких задачах нет смысла и в работе вы их не встретите. Я советую воспринимать их как экзамен, сдав который, вы попадёте в хорошую компанию. Это как поступление в университет: чтобы его добиться, нужно следовать правилам и сдать экзамены, о которых вы в будущем и не вспомните.
Ваши вопросы
Всегда, абсолютно всегда, готовьте вопросы. Помните, что не только вас собеседуют, но и вы собесeдуете компанию. Вам здесь работать и проводить минимум треть дня — спросите всё, что вам интересно.
Вас обязательно спросят: «Какие вопросы у вас есть к нам?»
Как не стоит отвечать: «Никаких». Возможно, вы хотите скорее закончить собеседование и уйти домой, но самая тяжёлая часть уже позади, вам лишь надо проявить интерес и узнать всё, что вас волнует.
Какой ответ понравится: «Над чем я буду работать, если вы меня наймёте?» Слушайте ответ и задавайте уточняющие вопросы. Узнайте про команду, как устроен процесс работы, есть ли код-ревью, будет ли кто-то обучать вас. Спросите про планы компании: какие проекты запускают? Какие сложности и вызовы есть сейчас?
Не стесняйтесь задавать вопросы, от вас только и ждут искреннего интереса к работе.
Общие советы
После собеседования
Вас пригласили на работу
В случае успеха всё просто: вы обсуждаете зарплату, дату начала работы и празднуете.
В случае отказа нужно сохранять спокойствие. Да, это обидно, но примите отказ гордо и спокойно. Не стоит писать в ответ: «Это вы так себе компания, и вопросы у вас глупые, вообще я просто так зашёл к вам по пути в магазин». IT — слишком маленький мир, и вы никогда не знаете, с кем столкнётесь в будущем. Вместо этого попросите детальный отзыв, над чем вам следует поработать. Ведь всегда можно попробовать устроиться в эту компанию ещё раз через полгода–год.
Если компания даст вам обратную связь, обработайте её внимательно. Найдите ответы на вопросы и решите задачи, с которыми не удалось справиться на собеседовании. Только обучаясь на своих ошибках, можно стать хорошим разработчиком.
Не бойтесь ходить на собеседования. Это важный опыт, который помогает узнать свои слабые стороны и прокачать их. К тому же худшее, что может случиться, — отказ, но так ли это страшно?