Звучит так, как будто, если компания первого человека на должность разработчика спрашивала/тестировала/испытавала (нужное подчеркнуть) по такому-то сценарию, что ей уже никогда в жизни нельзя его менять/улучшать/менять_вопросы/задачи/задания/и.т.д.
А если можно, то опять таки: начиная с такого числа у нас этот вопрос обязательный для ответа и все кандидаты будут на него отвечать.
Законным основанием для отказа в приеме на работу является отсутствие у претендента необходимых деловых качеств. Трудовой кодекс РФ не дает толкование такому понятию как деловые качества работника.
Пленум Верховного Суда Российской Федерации в Постановлении от 17 марта 2004 года N 2 «О применении судами Российской Федерации Трудового кодекса Российской Федерации»*(10) попытался ответить на вопрос, что следует понимать под деловыми качествами(п. 10). Дать исчерпывающее определение деловых качеств невозможно, так как это оценочная категория.
Вроде как из этого постановления ВС можно сделать вывод, что оценку деловых качеств делает сама компания, и она может оценить как недостачные.
Несколько вопросов:
1) data.remove_if(...) хоть кто-то из кандидатов предложил?
1.1) если предлагают такое решение или даже через data.erase(std::remove_if(...), data.end()); вы засчитываете такое или просите всё-таки сделать на итераторах?
2) как часто рассказывают о мифической std::erase?
3) если кандидат говорит, что-то типа «давно не работал с STL, в последнее время работаю в основном с YYY» позволяете ли решить задачу в терминах его YYY, например для Qt'шного QLinkedList или для шарпового LinkedList?
Может мне тогда тоже начать сыпать вопросами нонстоп?
А как же. Это нормально, когда и кандидат спрашивает, что его интересует, и про процессы, и про задачи, и даже просит рабочие места и другую инфраструктуру (комнаты отдыха, кухню, туалеты) показать. Меня один кандидат однажды больше часа выспрашивал разные детали, хотя перед этим я его больше получаса сам рассказывал про компанию в общем и про разработку в частности.
Я C++ взял, так как думаю, что больше людей его понимают.
Хорошо, пусть будет C#. Вам это уйти от вопроса всё равно не позволит.
Сам вопрос:
А если он переопределит метод без слов virtual/override, будет ли это значить, что он их не знает/не умеет использовать?
Тестовое задание может много что сказать о человеке. Например были случаи, когда «сениоры» писали классы, с глобальными переменными, были случаи, когда другие «сениоры» копипастили код со stackoverflow, который содержал ошибки (ну что можно сказать о человеке, который не смог сам реализовать strnstr, когда она ему понадобилась, а после этого ещё и не проверил тот код, что нашёл на просторах интернета). Были случаи, когда код присылали полностью рабочий, но абсолютно не читаемый, что в нём эксперты не могли за полчаса разобраться. Или что код вроде даже читаемый, но абсолютно не структурирован, т.е. в случае необходимости его расширить/дополнить он на 80% пойдёт в мусорку.
Мы однажды пробовали такое, человек к нам на 2 недели выходил. В итоге так и не взяли. Собственно, сразу были сомнения, но парень уговорил нас на такую схему — типа покажу вам, как я круто могу. Не показал. И да, так уже накладно по деньгам выходит, да и не многие на такие условия согласятся даже если им предложат оплатить потраченное время.
Если на вопрос «Приведите пример переопределения метода в наследнике» человек напишет код со словом «virtual», значит он знает, зачем оно нужно, даже если его нет в вопросе.
Возьмём для примера C++. А если он переопределит метод без слова virtual, будет ли это значить, что он его не знает/не умеет использовать?
Тема старая, но всё-таки напишу. Я в январе смотрел как работает динамическое повышение приоритета потоков на серверных операционках на примере 2008 R2. Так вот, после WaitForSingleObject приоритет реально как минимум на 1 квант повышается при ожидании евентов и waitable таймера.
Объясняю. Есть N продуктов. Пусть даже и связанных. Но часть идёт как x86 онли (старое), часть как и x86, так и x64 (потребности по памяти в x64). А что-то, например, утилиты некоторые, вообще нужны под x64 из-за своих особенностей. + некоторые либы сторонние есть только x64 (тот же Caffe) поэтому даже во вроде бы полностью x86 продуктах, приходится делать отдельные приложения, которые работают под x64.
Согласен, что на уровне домашних поделок, студенческих поделок, и даже разовой работы на клиента две версии qt одновременно не нужно, это на личном опыте подтверждаю (один раз только клиенту потребовалась библиотека, которую я делал и под x86 и под x64, но там без Qt обошлось). А вот при работе с большими коммерческими продуктами в этом уже есть необходимость.
Тот же буст, например, пусть за 2 итерации, но можно собрать и x86 и x64 в разные stage но на одних исходниках, не надо в репозитории для third-party sdk 2 буста иметь.
Чтение статей в вашем блоге показывает, что на понимание диагностик PVS-Studio и принятие решения о правки (или отключении предупреждения) требуется время от 5 минут до получаса.
Замечу, что это высказывание показывает, что Jef239 не работал с PVS. На самом деле такое может быть при работе с незнакомым кодом. При работе со своим кодом, например при инкрементальной компиляции, обычно требуется несколько секунд, чтобы понять, что ты тут налажал, ну и до 30 секунд, чтобы понять, что тут реально ложняк. И тонких ошибок в своём коде как таковых нет, само это понятие, думаю применяется, в смысле «что-то не очень понятное с первого взгляда незнакомому человеку, но на пол взгляда разработчику этого кода».
P.S. Ценник на самом деле высоковат :-(. Никак не удаётся через руководство протащить :-(. Здесь, наверное, просится 2 прайса, один в евро, второй в рублях, и чтобы в рублях он был адекватен к российским реалиям.
Предупреждение PVS-Studio: V665 Possibly, the usage of '#pragma warning(default: X)' is incorrect in this context. The '#pragma warning(push/pop)' should be used instead. Check lines: 2610, 2628. mmreg.h 2628
Если быть педантичным, то mmreg.h к «Visual C++ 2017 Libraries» отношения не имеет никакого. mmreg.h — это часть Windows SDK. Этот файл доступен любому компилятору (хоть gcc, хоть C++ builder).
Объект типа CString создаётся и инициализируется, но нигде не используется. Не знаю, догадается ли компилятор выбросить лишний код для создания и копирования строки.
Открою секрет. CString, как и QString, как и std::string в GCC < 5.0* не копируют строку при присваивании. Там везде COW (Copy-On-Write). И все студийные компиляторы от 2005 в релизе эту переменную типа CString убирают, я специально ещё N лет назад проверял. Но неиспользуемую переменную, конечно, удалить в любом случае всё равно надо.
*Только C++11 потребовал чтобы для std::string было нормальное поведение. Поэтому в gcc 5 std::string сделали как везде.
Вопрос: не планируется ли наконец сделать, чтобы можно было собрать qt сразу одновременно и под x86 и под x64? Надоело уже держать 2 версии qt для этого. Проблема ещё в том, что приходится патчи и туда и туда заливать, иногда забываешь…
А если можно, то опять таки: начиная с такого числа у нас этот вопрос обязательный для ответа и все кандидаты будут на него отвечать.
Вроде как из этого постановления ВС можно сделать вывод, что оценку деловых качеств делает сама компания, и она может оценить как недостачные.
Хотя и скрыты имена, но про Тропмана народ всё узнал.
1) data.remove_if(...) хоть кто-то из кандидатов предложил?
1.1) если предлагают такое решение или даже через data.erase(std::remove_if(...), data.end()); вы засчитываете такое или просите всё-таки сделать на итераторах?
2) как часто рассказывают о мифической std::erase?
3) если кандидат говорит, что-то типа «давно не работал с STL, в последнее время работаю в основном с YYY» позволяете ли решить задачу в терминах его YYY, например для Qt'шного QLinkedList или для шарпового LinkedList?
А как же. Это нормально, когда и кандидат спрашивает, что его интересует, и про процессы, и про задачи, и даже просит рабочие места и другую инфраструктуру (комнаты отдыха, кухню, туалеты) показать. Меня один кандидат однажды больше часа выспрашивал разные детали, хотя перед этим я его больше получаса сам рассказывал про компанию в общем и про разработку в частности.
Хорошо, пусть будет C#. Вам это уйти от вопроса всё равно не позволит.
Сам вопрос:
А если он переопределит метод без слов virtual/override, будет ли это значить, что он их не знает/не умеет использовать?
Возьмём для примера C++. А если он переопределит метод без слова virtual, будет ли это значить, что он его не знает/не умеет использовать?
Это до сих пор не работает в MSVS 2017. clang на это выдаёт в принципе справедливое предупреждение про неопределенный порядок вычисления аргументов
Согласен, что на уровне домашних поделок, студенческих поделок, и даже разовой работы на клиента две версии qt одновременно не нужно, это на личном опыте подтверждаю (один раз только клиенту потребовалась библиотека, которую я делал и под x86 и под x64, но там без Qt обошлось). А вот при работе с большими коммерческими продуктами в этом уже есть необходимость.
Тот же буст, например, пусть за 2 итерации, но можно собрать и x86 и x64 в разные stage но на одних исходниках, не надо в репозитории для third-party sdk 2 буста иметь.
Замечу, что это высказывание показывает, что Jef239 не работал с PVS. На самом деле такое может быть при работе с незнакомым кодом. При работе со своим кодом, например при инкрементальной компиляции, обычно требуется несколько секунд, чтобы понять, что ты тут налажал, ну и до 30 секунд, чтобы понять, что тут реально ложняк. И тонких ошибок в своём коде как таковых нет, само это понятие, думаю применяется, в смысле «что-то не очень понятное с первого взгляда незнакомому человеку, но на пол взгляда разработчику этого кода».
P.S. Ценник на самом деле высоковат :-(. Никак не удаётся через руководство протащить :-(. Здесь, наверное, просится 2 прайса, один в евро, второй в рублях, и чтобы в рублях он был адекватен к российским реалиям.
Если быть педантичным, то mmreg.h к «Visual C++ 2017 Libraries» отношения не имеет никакого. mmreg.h — это часть Windows SDK. Этот файл доступен любому компилятору (хоть gcc, хоть C++ builder).
Открою секрет. CString, как и QString, как и std::string в GCC < 5.0* не копируют строку при присваивании. Там везде COW (Copy-On-Write). И все студийные компиляторы от 2005 в релизе эту переменную типа CString убирают, я специально ещё N лет назад проверял. Но неиспользуемую переменную, конечно, удалить в любом случае всё равно надо.
*Только C++11 потребовал чтобы для std::string было нормальное поведение. Поэтому в gcc 5 std::string сделали как везде.
Часть кода просто уже ими размечена…