Как стать автором
Обновить

Как проходит собеседование начинающего разработчика на С++: что нужно знать и как подготовиться

Время на прочтение 6 мин
Количество просмотров 33K
Всего голосов 46: ↑38 и ↓8 +30
Комментарии 39

Комментарии 39

Я составил список популярных алгоритмов, которые с большой вероятностью понадобятся на собеседовании.
А на практике они понадобятся?
С огромной вероятностью понадобятся. Может понадобится реализовать их модификацию или что-то еще додумать. Такие вещи уже зависят от команды и задачи.
С огромной вероятностью понадобятся


А вы можете показать ваши личные проекты и рассказать, где там эти алгоритмы применяются и в каких объёмах? Если, конечно, это не секрет.
могу от себя сказать так, что видел на практике использование следующих:
Обход в глубину, Обход в ширину и разные вариации с деревьями поиска. Но сфера софта была специфическая, в частности — визуализация и укладка графов. И разработчик — прям реализовывал это всё в коде со своими нюансами.
Так это понятно. Вряд ли кто-то хоть что-то да не использовал пусть даже пару-тройку раз в своей жизни. Но вот появилось давно уже у меня подозрение, что коль пошёл упор на шаблонные алгоритмы, то программист целиком никогда более-менее сложное приложение не создавал ни разу и не представляет, что там внутри кроме этих самых шаблонных алгоритмов. Вот тут ребята имитатор Союза делали. Думаю, ни единого шаблонного алгоритма не применили, но внутри их приложения модель движения вряд ли такая уж простая. Но даже они не представляют, с чем столкнутся, когда всё же решат перейти на упомянутый ими MFC с Builder ( всё же перейти на Qt будет сейчас им лучше).

[offtopic] А что это за ребята?

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А может не понадобятся, так что пусть все зубрят. Это я к тому, что все мои собеседования на плюсового разработчика напоминали трэш, угар и содомию, поэтому для меня плюсы это теперь исключительно язык для пэт проектов, я их даже на гитхаб теперь не выкладываю.
а как же задача про круглые люки?
Сын первоклассник был в восторге, особенно про монету: фигуры постоянной ширины :)
www.youtube.com/watch?v=WsX2pf5n4zM
Скажите, пожалуйста, где сейчас применяются связные списки кроме совсем низкоуровневых вещей вроде внутренней реализации хеш-таблиц или структур файловых систем.
Мне действительно интересно, без подвоха.
Как где? На собеседованиях в Яндекс ))
Хороший вопрос на джуна с++.
Ответ: Там где элементы контейнера не имеют (и не могут иметь) конструктора копирования и перемещения.
Я вообще не пишу на Си++ и почти не знаю этого языка.
Мне интересно в каких задачах они используются, а не при каких обстоятельствах. То есть без привязки к языку вообще.
Вот, к примеру, коллизии при вычислении хеш-функции можно разрешить добавив связный список к элементу целевого массива хеш-таблицы. Но это очень низкоуровневое и редкое применение. Кроме того, можно и массивом обойтись.
А где списки применяются для более практических задач?
В мире пост с++11 и до появления полиморфных аллокаторов из с++17, в 99% случаях оправдание для применения списка/дека было отсутствие необходимых конструкторов.

Полиморфные аллокаторы внесли смуту в выбор, но это пока что не частый кейс.

Всё остальное — довольно таки слишком специфические требования. Совместные владения объектами, контейнеры где часто не больше 1го элемента (и где SOO не отрабатывает), либо опять же особенности копирования объектов (с сайд эффектами и исключениями) которых необходимо избежать.
Мне кажется неплохой пример использования связных списков — это какие-нибудь кэши, где нужно помнить какой-нибудь итератор на старые данные, чтобы их быстро удалить. А вот быстро удалять это как раз про связные списки. Пример сформулировал совсем не строго, но надеюсь понятно, о чем я :)
Итерация по большому списку на х86 архитектуре 2 порядка медленнее, чем по непрерывному участку памяти.

Там где важна производительность односвязных и двусвязных списков в коде не будет.
Итерация — да, а вот вставка/удаление при том, что указатель где надо — сильно эффективнее по памяти в первую очередь.
Так что пример понятен, хотя и не до конца.

Мне недавно при реализации LRU кэша пришлось писать двусвязный список, чтобы алгоритм работал амортмзированно за O(1).
MSC Lock использует односвязные списки
При реализации какого-то ивент-лупа может понадобиться односвязный список
Это из того, что я за полгода могу вспомнить

Ну и сколько будет такое собеседование длиться? Одних вопросов часа на три.

Все алгоритмы и структурки никто на одном собеседовании не спросит, но что-то из них точно попадется. А собеседование такого типа длится около часа
О, жизненные мемы подъехали :)
Тут где-то была недавно статья о вкусе печенек в Яндексе. Так вот эта статья, похоже, некое ее логическое продолжение (если вы понимаете о чем я)
Печеньки, кстати, реально топовые. Если кто-то будет в Яндексе попробуйте те, которые прямоугольной формы с джемом. Мне ими и платят :)

*шутка юмора*
НЛО прилетело и опубликовало эту надпись здесь
А через дебри лезть не надо. Достаточно современного подмножества (да и то не все фичи оттуда нужно знать новичку).

А, то есть правило пяти, скажем — это не дебри? И что, на всех проектах используется "современное" подмножество (интересно, кстати, что под эти подразумевается) и со старым кодом не надо взаимодействовать?

Правило пяти это достаточно редкая штука. Сейчас в мете «правило ноля». И для него вообще ничего делать не надо — в этом и простота.
Где то 2-3 месяца коуча и на половину сениор с++ позиций можно пройти по теоретическим знаниям (Утверждаю как коуч ). Это если есть фундаментальные знания CS.
Там по современному языку всего то 3 книжки толковых и не сильно тяжелых.
Промышленное кодирование на современном с++ кратно проще того, что было 15 лет назад.

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

Зарегистрируйтесь на Хабре , чтобы оставить комментарий