Что поспрашивать на позицию SWE на тему C++?
-
- Мистер Привет 2018
- Posts: 1853
- Joined: 03 Dec 2017 20:31
- Location: 3.14ter -> 1qver
Re: Что поспрашивать на позицию SWE на тему C++?
лет 15 назад мне задали такую задачку: есть 2 ведра: 3л и 5л, надо отмерить 4л. как вы это сделаете?
на интервью, я эту задачку сразу не решил, очень волновался. но когда ехал домой в скайтрейне решил ее 2-мя способами. один лучше другого.
может, конечно, и старперство и все знают ответы на этот вопрос, но мне тогда было интересно
на интервью, я эту задачку сразу не решил, очень волновался. но когда ехал домой в скайтрейне решил ее 2-мя способами. один лучше другого.
может, конечно, и старперство и все знают ответы на этот вопрос, но мне тогда было интересно
Гоша хороший, а Маша еще лучше
-
- Уже с Приветом
- Posts: 5283
- Joined: 27 Sep 2008 21:48
- Location: Moscow-Seattle-SFBA
Re: Что поспрашивать на позицию SWE на тему C++?
Я говорю исключительно за свою команду/орг (у нас тут в каждой избушки свои погремушки)Oleg-NY wrote: ↑17 Sep 2021 06:36Ну да, ну да... Расказывайте! )) то-то у нас периодически исчезают люди именно с таких гордых позиций и сами знаете куда!Херовимчик wrote: ↑17 Sep 2021 06:24У меня лично травма от кандидатов с гордым званием Staff/Principal. Один прям так и говорил «ну задачу я твою не решил, но я ж вон какой крутой, ты ж мне зачтёшь заслуги прошлого?». Причём нёс полную ахинею и не по теме. Вообщем, слишком гордые птицы… и очень обидчивые и ранимыOleg-NY wrote: ↑17 Sep 2021 06:20В плане подхода к интервью или вообще? ))Херовимчик wrote: ↑17 Sep 2021 06:01 Кстати очень забавно, что к аллегоритмам у вас душа не лежит, а вот о паттернах вы переживаете )))
Если вообще, то не то, чтобы не лежит, но уже давно не так интересно.
А если про интервью, то зависит от позиции. Если Senior/Staff/Principal или там Lead какой-нибудь будет уметь только "пуговицы пришивать", а за костюмчик пусть кто-то другой отвечает, то это как-то странно. Не находите?
Я, кстати, и сам иногда интервьюируюсь, чтобы кровь в жилах не застаивалась, так сказать. И всякий раз меня удивляет как с таким и другим подходом они собираются выяснить что я могу или не могу делать. При том, что про себя-то я все знаю, а также про ту позицию, куда подаюсь, но вот поставив себя на их место, мне совсем не хочется этим (интервьюированием) заниматься! ))
(Мы с улицы на такие уровни не берём практически, свои кадры растим. А нанимаем на место «выросших»)
А на место "выросших" тоже сманивают конечно, но это и к лучшему часто - здесь был так себе кодер, но с понтами, а у вас, глядишь, в синиорах ходит!
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Что поспрашивать на позицию SWE на тему C++?
Тем не менее стандартная библиотека содержит такой класс, рассматривает его как базовый, специализации которого являются наиболее употребительными строковыми типами, включая string.M. Ridcully wrote: ↑17 Sep 2021 03:57Кстати, еще раз почитал-подумал. Это _очень_ плохая задача. В том смысле, что умного кандидата бы насторожила и отпугнула, у него бы возгикли большие сомнения по поводу адекватности и профессионализма команды, куда он интервьюируется.Херовимчик wrote: ↑31 Aug 2021 04:38 Класс по работе со строкой (разворот строки, изменение поняла слов, и тд). Просто и эффективно, и очень наглядно что потом ожидать в плане качества кода. Очень эффективно в формате, а теперь давай добавим ещё вот этот метод (порядок выбирать так, чтобы требовалось сделать небольшой редактор уже имеющегося кода… если конечно кандидат до этого додумается и не начнёт копи-пастить)
"Класс строка" - это идиотизм. Все, что нужно для работы со строками - это функции, интерпретирующие так или этак куски памяти.
Более того, задача на написание простейшего "умного" указателя на массив букв может показать насколько соискатель понимает RAII, правило пяти и другие базовые понятия.
-
- Уже с Приветом
- Posts: 3207
- Joined: 08 Aug 1999 09:01
- Location: Tampa, FL
Re: Что поспрашивать на позицию SWE на тему C++?
Я часто использую такой подход ... даю кусок кода и прошу рассказать, что тут происходит. И что можно улучшить.
По этому простому тесту видно, как человек думает, понимает ли чужой код. Понимает ли, что оптимально, а что нет.
Sent from my SM-G988U using Tapatalk
По этому простому тесту видно, как человек думает, понимает ли чужой код. Понимает ли, что оптимально, а что нет.
Sent from my SM-G988U using Tapatalk
Ignorance is bliss
-
- Уже с Приветом
- Posts: 3207
- Joined: 08 Aug 1999 09:01
- Location: Tampa, FL
Re: Что поспрашивать на позицию SWE на тему C++?
Ещё можно попросить внести какое-то изменение, в связи с новыми требованиями.
Будет видно, как человек будет править ваш код, будет ли он думать, как решить данную КОНКРЕТНУЮ задачу, или внесёт изменения, которые потом будет легко расширять и/или сопровождать.
Sent from my SM-G988U using Tapatalk
Будет видно, как человек будет править ваш код, будет ли он думать, как решить данную КОНКРЕТНУЮ задачу, или внесёт изменения, которые потом будет легко расширять и/или сопровождать.
Sent from my SM-G988U using Tapatalk
Ignorance is bliss
-
- Уже с Приветом
- Posts: 31438
- Joined: 21 Nov 2004 05:12
- Location: камбуз на кампусе
Re: Что поспрашивать на позицию SWE на тему C++?
+1. Заодно свои задачи решаешь и новые идеи получаешь
Лучше переесть, чем недоспать! © Обратное тоже верно
-
- Уже с Приветом
- Posts: 64661
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Что поспрашивать на позицию SWE на тему C++?
достану из-за пазухи поллитру, вылакаю, а потом 8 раз ей отмеряю.Гоша Хороший wrote: ↑17 Sep 2021 06:40 лет 15 назад мне задали такую задачку: есть 2 ведра: 3л и 5л, надо отмерить 4л. как вы это сделаете?
на интервью, я эту задачку сразу не решил, очень волновался. но когда ехал домой в скайтрейне решил ее 2-мя способами. один лучше другого.
может, конечно, и старперство и все знают ответы на этот вопрос, но мне тогда было интересно
серьезно, люди, которые сходу решают (а скорее помнят задачу), редко оказываются годными кодерами.
-
- Уже с Приветом
- Posts: 8230
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
Re: Что поспрашивать на позицию SWE на тему C++?
Это простая задача, но те, кто сразу бросаются ее решать поступают неверно. Сначала нужно прояснить остальные требования как то, конечен ли источник воды, можно ли воду обратно в источник выливать и т.д.Гоша Хороший wrote: ↑17 Sep 2021 06:40 лет 15 назад мне задали такую задачку: есть 2 ведра: 3л и 5л, надо отмерить 4л. как вы это сделаете?
на интервью, я эту задачку сразу не решил, очень волновался. но когда ехал домой в скайтрейне решил ее 2-мя способами. один лучше другого.
может, конечно, и старперство и все знают ответы на этот вопрос, но мне тогда было интересно
То же самое если Вас просят нарисовать на листочке дом. Вы бросатесь чертить, а Вам через минуту добавляют - дом нужен для слепых слонов и летающих свиней.
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Что поспрашивать на позицию SWE на тему C++?
Ну вот простейший, но уже достаточный для обсуждения, пример класса со строкой:
struct MySmartPrt {
MySmartPrt (char *str): { ptr=new char(strlen(str)+1); strcpy(ptr,str); };
~MySmartPrt { delete ptr; }
private:
char *ptr;
}
-
- Уже с Приветом
- Posts: 1951
- Joined: 11 Mar 2015 01:12
Re: Что поспрашивать на позицию SWE на тему C++?
Кентавр какой-то. Ни указатель, ни массив, ни placement new.Мальчик-Одуванчик wrote: ↑25 Sep 2021 03:47 Ну вот простейший, но уже достаточный для обсуждения, пример класса со строкой:
struct MySmartPrt {
MySmartPrt (char *str): { ptr=new char(strlen(str)+1); strcpy(ptr,str); };
~MySmartPrt { delete ptr; }
private:
char *ptr;
}
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
-
- Уже с Приветом
- Posts: 5283
- Joined: 27 Sep 2008 21:48
- Location: Moscow-Seattle-SFBA
Re: Что поспрашивать на позицию SWE на тему C++?
Говорю вам, это шикарный вопрос для любого интервью, любого уровня. Всякий литкод отдыхает в сторонке
-
- Уже с Приветом
- Posts: 11999
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: Что поспрашивать на позицию SWE на тему C++?
Про placement new я не понял, если честно, где тут его нашли.Мальчик-Одуванчик wrote: ↑26 Sep 2021 01:11Вот и дадим соискателю возможность реализовать недостающий с его точки зрения функционал.
Заодно поинтересуемся - каким боком тут placement new нарисовался.
От junior-а я бы ожидал, по-минимуму, пофиксить квадратные скобочки (заменить круглые в new, добавить в delete - а то ведь один char аллоцируем) ну и чего-то сделать с автогенерируемыми конструкторами и операторами присваивания - ведь членом голый поинтер, еб№;%й стыд!
А от senior-а ожидал бы просто недоумения - нафига козе боян, чего хотим в итоге получить? Чем не подошли std::string, std::vector, ну или smart pointers на крайняк?
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Что поспрашивать на позицию SWE на тему C++?
Проверить как соискатель может самостоятельно реализовывать простейшие структуры данных: Вы правильно обратили внимание на правило пяти при отсутствующем конструкторе по-умолчанию.M. Ridcully wrote: ↑26 Sep 2021 06:28 А от senior-а ожидал бы просто недоумения - нафига козе боян, чего хотим в итоге получить? Чем не подошли std::string, std::vector, ну или smart pointers на крайняк?
(обычно все ограничивается квадратными скобками, причем только для оператора new)
Заодно спросить - что нужно поменять в структуре чтобы вектор, стандартная строка не подошли?
как можно обобщить эту структуру для работы с разными буквенными типами?
А если мы добавим в стуктуру адрес регистра порта, в который нужно выводить эту строку, с учетом его особенностей ?
(Мне, например в микропроцессоре ни вектор, ни строка сроду не уперлись из-за ограничений по памяти и нежелательности исключений)
-
- Уже с Приветом
- Posts: 15759
- Joined: 01 Mar 2008 15:14
Re: Что поспрашивать на позицию SWE на тему C++?
Мальчик-Одуванчик wrote: ↑25 Sep 2021 03:47Ну вот простейший, но уже достаточный для обсуждения, пример класса со строкой:
struct MySmartPrt {
MySmartPrt (char *str): { ptr=new char(strlen(str)+1); strcpy(ptr,str); };
~MySmartPrt { delete ptr; }
private:
char *ptr;
}
А по моему вопрос как раз дебильный
Откуда мне знать что у вас в голове и что вы хотите от меня услышать. Я бы ответил что если бы увидел такой код у вас в компании то просто бы уволился
Если по синтаксическим ошибкам то почему память аллоцируется в переменную char, а не массив
* планируется ли расширять класс и если да почему делит не виртуальный
* не помню как в си копируются строки может параметры и перепутаны
* почему стракт а не класс? В чем скрытый смысл не сделать класс и объявить конструктор/деструктор как паблик
* почему не const char *?
Что нахрен этот класс вообще делает? Принял строку, сохранил ее длину по модулю до 256 и.. что? Доступа к этим данным нет. Там перегрузить модификаторы доступа хотели или что?
Нахрена в плюсах городить операции со строками а не использовать std::wstring
Вообще что вы сцуко у меня проверить хотите хоть бы намекнули
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Что поспрашивать на позицию SWE на тему C++?
Пока что "дескриптор" владеет ресурсом и больше ничего, дальше можно рассуждать об исключительности этого владения.
Заодно хотелось бы услышать для чего подобные обертки вообще применяются и убедиться что соискатель понимает основопологающую идиому языка - RAII.
Как эту конструкцию расширить только для типов char и wchar и может быть услышать о концептах или их заменителях (ну хотя бы static assert).
Ну и потом - чисто по коду видно что этоn дескриптор по сути аналог "умного указателя", не предоставляющий доступа к ресурсу, а только его захватывающий и освобождающий; соответственно и нет смысла городить полиморфизм.
Разницы между структурой и классом ровно никакой, за исключением области видимости по-умолчанию - мне захотелось структуру.
Заодно хотелось бы услышать для чего подобные обертки вообще применяются и убедиться что соискатель понимает основопологающую идиому языка - RAII.
Как эту конструкцию расширить только для типов char и wchar и может быть услышать о концептах или их заменителях (ну хотя бы static assert).
Ну и потом - чисто по коду видно что этоn дескриптор по сути аналог "умного указателя", не предоставляющий доступа к ресурсу, а только его захватывающий и освобождающий; соответственно и нет смысла городить полиморфизм.
Разницы между структурой и классом ровно никакой, за исключением области видимости по-умолчанию - мне захотелось структуру.
-
- Уже с Приветом
- Posts: 15759
- Joined: 01 Mar 2008 15:14
Re: Что поспрашивать на позицию SWE на тему C++?
Ну и каким образом из вашего говнокода я должен догадаться что вы хотите что бы я вспомнил о темплейтах и static_assert?
Чем такие тесты на ошибки в коде и раздражают, что требуют угадывать мысли интервьюера. Сюрприз, но у разных людей разные представления о том, каков должен быть правильный код.
Семантически разницы между структурой и паблик классом да, никакой. Но принято использовать именно классы, на основании соглашения о стиле кода, и лепить структуру там где по смыслу класс - очередной признак говнокода. Опять же мое мнение, и мне похоже надо угадать, а думаете ли вы так же.
Чем такие тесты на ошибки в коде и раздражают, что требуют угадывать мысли интервьюера. Сюрприз, но у разных людей разные представления о том, каков должен быть правильный код.
Семантически разницы между структурой и паблик классом да, никакой. Но принято использовать именно классы, на основании соглашения о стиле кода, и лепить структуру там где по смыслу класс - очередной признак говнокода. Опять же мое мнение, и мне похоже надо угадать, а думаете ли вы так же.
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Что поспрашивать на позицию SWE на тему C++?
Неужели после вопроса как обобщить код до использования с разными типами не догадались бы?
А потом последовал бы вопрос как ограничить использование обобщенного варианта только определенными типами. Кстати смогли бы решить ?
Странно что Вам не удалось увидеть с первого раза пример классической RAII обертки над ресурсом (в данном случае массивом букв)
Возможно аналогичная обертка над мьютексом Вам бы показался более наглядной и позволила бы ответить на вопрос для чего такие штуки применяются.
-
- Уже с Приветом
- Posts: 15759
- Joined: 01 Mar 2008 15:14
Re: Что поспрашивать на позицию SWE на тему C++?
Что такое RAII никогда не знал
То что если объект создается в стеке, то деструктор вызывается на сворачивание стека и так очевидно, тоже не догадался что от меня хотя услышать именно это
static_assert не помню использовал ли, но я на плюсах давно не пишу, может это в новых спецификациях появилось. Такие вещи не считаю частью языка, они легко гуглятся. Ну по идее в случае с типами можно и средствами самого языка реализовать, типа какую нибуть private функцию написать с приведением типов, оно не будет компилироваться если типы не совпадают
То что если объект создается в стеке, то деструктор вызывается на сворачивание стека и так очевидно, тоже не догадался что от меня хотя услышать именно это
static_assert не помню использовал ли, но я на плюсах давно не пишу, может это в новых спецификациях появилось. Такие вещи не считаю частью языка, они легко гуглятся. Ну по идее в случае с типами можно и средствами самого языка реализовать, типа какую нибуть private функцию написать с приведением типов, оно не будет компилироваться если типы не совпадают
-
- Уже с Приветом
- Posts: 15759
- Joined: 01 Mar 2008 15:14
Re: Что поспрашивать на позицию SWE на тему C++?
Щаз немного подумал как выйти из сиутации со статик ассерт - если не знаешь что он есть.
Можно через #if сделать, на #else какую нибуть некомпилируемую фигню влепить - вот тебе и самодельный статик ассерт
Можно через #if сделать, на #else какую нибуть некомпилируемую фигню влепить - вот тебе и самодельный статик ассерт
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Что поспрашивать на позицию SWE на тему C++?
И где по смыслу класс, а где структура - вот это что к примеру?
Code: Select all
struct Book
{
Book( std::string title, std::vector<std::string> authors)
:_title(std::move(title)), _authors(std::move(authors))
{
}
std::string _title;
std::vector<std::string> _authors;
}
-
- Уже с Приветом
- Posts: 15759
- Joined: 01 Mar 2008 15:14
Re: Что поспрашивать на позицию SWE на тему C++?
Структуру используют в c-style коде, а плюсах - class
Я бы использовал еще структуру еще там, где она по смыслу близка к сишному пониманию. Ну т.е. объеденитить несколько публичных полей, без планов объединения с кодом, тем более наследования
Т.е. когда пишешь в коде struct ты как бы намекаешь другим что код тянется со времен си и где-то там требует совместимости и не планирует расширяться.. я бы это так воспринял
Я бы использовал еще структуру еще там, где она по смыслу близка к сишному пониманию. Ну т.е. объеденитить несколько публичных полей, без планов объединения с кодом, тем более наследования
Т.е. когда пишешь в коде struct ты как бы намекаешь другим что код тянется со времен си и где-то там требует совместимости и не планирует расширяться.. я бы это так воспринял
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Что поспрашивать на позицию SWE на тему C++?
C вводом С++11 видение поменялось, как и поменялись правила стиля. Если данные изменяются независимо друг от друга и все публичны то используются структуры.OtherSide wrote: ↑26 Sep 2021 14:17 Структуру используют в c-style коде, а плюсах - class
Я бы использовал еще структуру еще там, где она по смыслу близка к сишному пониманию. Ну т.е. объеденитить несколько публичных полей, без планов объединения с кодом, тем более наследования
Т.е. когда пишешь в коде struct ты как бы намекаешь другим что код тянется со времен си и где-то там требует совместимости и не планирует расширяться.. я бы это так воспринял
Это удобнее из-за появившейся возможности агрегатной инициализации структур.
-
- Уже с Приветом
- Posts: 15759
- Joined: 01 Mar 2008 15:14
Re: Что поспрашивать на позицию SWE на тему C++?
Не знаю как 11 поменял стандарты на оформление кода
Вернулись к тому, что мне мало понятно что от меня хотят на ревью вашего когда и я многое должен угадать
Вернулись к тому, что мне мало понятно что от меня хотят на ревью вашего когда и я многое должен угадать
-
- Уже с Приветом
- Posts: 18862
- Joined: 30 Aug 2001 09:01
- Location: 3rd planet
Re: Что поспрашивать на позицию SWE на тему C++?
Ну про тонкости и ограничения в embedded С++ знают либо те, кто с оным реально работал, либо люди с феноменальной памятью, где-то прочитавшие и запомнившие. А задачка - очень неплоха для начала разговора.Мальчик-Одуванчик wrote: ↑26 Sep 2021 07:58 (Мне, например в микропроцессоре ни вектор, ни строка сроду не уперлись из-за ограничений по памяти и нежелательности исключений)
Я люблю спрашивать про проверку linked list на зацикливание (просто, но народ регулярно чудит) и если человек толковый и вся остальная программа исчерпана - если замыкание есть - как найти элемент, на котором замыкается.
Тупизна как Энтропия. Неумолимо растет.