Что спрашивают на собеседованиях в компаниях на должности С++ разработчика

Что спрашивают на собеседованиях в компаниях на должности С++ разработчика?

Table of Contents:

Что должен знать каждый C++ программист или Как проводить собеседование

Что спрашивают на собеседованиях в компаниях на должности С++ разработчика?

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

Присутствуют представители от yandex, wargaming, ReSharper C++ и один из организаторов C++ moscow Александр.

Алгоритмы и структуры данных

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled.png

Алгоритмы спрашивают во всех компаниях.

Писать на бумажке код могут не все, главно рассуждать правильно.

Важно уметь определять вычислительную сложность - n logn n2 экспотенциальная.

Все стараются не спрашивать алгоритмы открыто. А прятать их за задачами.

Пример задачи: Представьте что у вас есть комплишн в ide и собрал миллион элементов, а показывает в подсказках первые 20. Как найти 20 самых подходящих (критерий самый подходящий это поле в самом элементе).

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

Важно знать как в stl реализованы контейнеры и сколько стоят вставки, доступ к элементам.

Из остылок почитать:

Из интересных задач: Есть утилита которая quick sort’ом сортирует данные. Как подобрать данные для наихудшего исхода.

Компиляторы

Знать глубоко как устроенны и работают компиляторы нужно только если вы его разрабатываете.

Знать как устроен, какие уровни есть будет большим плюсом.

Но куда важнее это то с каким компилятором вы работали, флаги тд, что ковыряли.

Какие оптимизации пробывали.

В каких средах.

С++

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%201.png

Из остылок почитать:

Hacker’s Delight (Алгоритмические трюки для программистов) - https://doc.lagout.org/security/Hackers Delight.pdf. На русском (но 1ая версия) - http://rsdn.org/res/book/prog/worren.xml.

В компании геймдева особо про современный с++ не спрашивают.

В ReSharper C++ спрашиваю, но тоже “выводя” на тему вопросами “Какие фичи современные языка С++ вам нравятся”? Интересно, что бы я ответил… Наверное optional, variant и дедуцирование шаблона из конструктора.

Из примеров задач: Напишите сигнатуру std move

Из вопросов:

  • Почему RTTI не работает
  • Почему exception такие как с ними жить
  • Как можно не жить с exception

Когда то я разберусь с семнатикой перемещения…

Стандартная библиотека С++

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%202.png

Если есть понимание как работает, как устроен внутри вектор (любой контейнер), как взаимодействует с кэшом - это большой плюс.

Шаблоны С++

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%203.png

Шаблоны спрашивают, но как часть языка.

Железо и ОС

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%204.png

Если человек осведомлен как всё перечисленной работает, хотя бы в “общем”, это не сомненный плюс. Но все эти темы скорее узкоспециализированы и нужны не всем.

Пример вопросов из решарпер:

  • Вот у тебя есть struct из bool и int. Каков ее sizeof?
  • Вот у нас есть квадратная матрица. Мы ее проходим по строкам или по столбцам. Какие у вас ожидания от быстродействия? Вопрос отсылка к кешам.

Многопоточность

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%205.png

Я удивлён, но никто из спикеров на собеседованиях не спрашивают об этом, если нет какой-то узкоспециализированной задачи.

Цитата:

Потому что никто и не знает как на самом деле работает mutex. И твоя задача понять откуда deadlock, а не как устроен mutex.

Сеть

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%206.png

Тоже цитата:

Книгу таненбаума стоит прочитать.

Если человек понимает как сет. стек работает - это большой плюс.

ООП

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%207.png

Я удивлен снова, но не просят глубоких знаний. Мне кажется спикеры просто устали уже.

Моё лично мнение - архитектура не менее алгоритмов важна, если не важнее. Т.к. спроектированый код - легче читается, легче для понимания и поддержки, расширения.

Инфраструктура

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%208.png

Подробно про это никто не спрашивают, просто уточняют что использовал, как, согласно проекту куда хантят.

Другие языки

/my_grimoire/images/posts_includes/every_cpp_dev_should_know/Untitled%209.png

Будет плюсом, но, цитата:

За 3 месяца можно выучить

Математика

Под специфичные задачи - могут спрашивать.

Но если человек будет jsonчики перекладывать, то нет.

Полезные материалы

comments powered by Disqus