Этот хинт компилятору может к чертям на проде вам весь софт уронить. Не такой уж он безобидный. Да и используется довольно часто. Как минимум move конструкторы принято делать noexcept (и не спроста).
Адекватен ли такой работодатель?
Да, адекватен. Адекватен ли человек, заявляющий, что он С++ программист, но неспособный в функции из трёх строчек увидеть очевидную ошибку?
Скажем, мне в команде нафиг не нужен человек, не знающий язык) Спрашивать синтаксис дело-то может и последнее, но последнее оно потому, что я ожидаю, что человек языком пользуется и естественно может свободно читать код на нём)
Вот тут не надо выдумывать. Сеньйор на то и сеньйор что гарантированно самостоятельно выдаст рабочее решение
Каким образом и какого качество решение? Он загрузит в себя за пару месяцев что идет испытательный срок, все современные плюсы? Маловероятно. Скорее всего он очень долгое время будет выдавать код таким, каким его писали в 1995-м году, забив на все современные практики, рекомендованные в том же Core Guidelines.
Работать-то оно будет, вот только этот будет требовать немедленного рефакторинга + непонятно кто и как его будет поддерживать после него. Решив проблему он создаст две и будет продолжать это делать, пока не пройдёт через N итераций "опыта", обладать которым он уже обязан.
Иначе это не сеньйор, и пусть он хоть весь C++ назубок знает, это просто малополезная ходячая энциклопедия
Это правда, но это не отменяет того, что он должен и уметь грамотно код проектировать, и уметь хотя бы читать код на том языке, который мы используем. Я не просил ведь даже ни строчки написать на собесе, просто взглянуть на код и сказать где проблемы.
Согласен, что формулировка "координаты отрезка" некорректная, но вполне очевидно, что имелось ввиду координаты концов двух отрезков. Устраивать полемику в стиле "я не могу решить задачу из-за некорректной формулировки" - эт явно не будет плюсом в карму на собеседовании. А вот уточняющие вопросы по заданию всегда идут плюсиком в карму.
Хотя с учётом того, что код и тесты уже даны, все входы и выходы определены, можно бы и догадаться что имелось ввиду.
В свою очередь, он может развернуть стол на этом собесе и точно так же найти массу пробелов в ваших знаниях.
Конечно, всегда можно найти какой-то пробел, никто не может знать всё, но мы говорим о базовом синтаксисе языка, на котором этот разработчик собирается писать код. Это не какая-то малоизвестная "тонкость" или там закрученный ADL-трюк. Стал бы я брать на работу переводчика, если бы он не мог написать грамотно предложение используя simple tenses? Вряд ли.
Тут вопрос к коммятищему этот код. Он его вообще запускал?
Запускал. Он просто не попал в ту ветку кода, которая всё ломает. И вообще это вчерашний студент-джун, который только и делает, что косячит.
Да фиг с ним с джуном. Это собеседование :) Я даю рядовую задачу - провести код ревью. Тут нельзя отмазаться, мол задача нереалистичная и на работе не встречается. Или что это какое-то надрачивание на алгоритмы. Или задача требующая специфические бизнес знания. Это самая рядовая рутина, которой её придётся заниматься на регулярной основе. Я напрямую заинтересован, чтобы человек мог выполнять эту работу.
Гуглить ведь никто не запрещал) Могу понять, если геометрией вы никогда не увлекались (как я), то за всё то время, прошедшее со школьной скамьи, реально можно тупо забыть как находить уравнение прямой по координатам двух точек, и можно забыть какой из коэффициентов отвечает за угол наклона этой прямой.
В принципе, это достаточно очевидные вещи, до которых можно додуматься и самостоятельно без гугла, просто "поигравшись" с цифрами. Но в любом случае, даже если не получилось самому придумать решение (стресс, затуп, вообще не знал как это делать), ответ будет ведь по первой ссылке в гугле.
Кстати я видел код на C++ размером порядка пары миллионов строк, в котором я вообще не заметил исключений (скорее всего их там нет)
Ничего удивительного. Тот же Chromium собирается без них. В GCC/Clang даже флаг для этого есть, называется -fno-exceptions. И у нас есть драйвера на С++, которые собираются с этим флагом (а также еще десятком других).
Это вообще не является оправданием для того, чтобы не знать как исключения работают. Я даже более скажу, стандартом отключение исключений вообще не предусмотрено (т.к. в STL очень много на них завязано). Так что код с -fno-exceptions формально даже не является кодом на любом из стандартов С++.
Ну и человек, знающий за каким чёртом в С++ отключают исключения и какие проблемы это за собой несёт, определённо должен быть способен ответить что делает noexcept :)
Если человек работал лет десять с такой code base, он вполне может быть синьор, просто его экспертиза может быть в других местах.
В принципе, этого никто и не отрицал, но собеседование идет на вакансию С++ разработчика :) Очевидно экспертиза нужна в С++.
При этом я прекрасно знаю что люди типа вас (я сам такой) могут спросить про фичи C++
Ну, логично, что принимая на работу человека, который должен писать и читать код на С++17, я должен убедиться, что они понимает синтаксис языка. Особенно если он заявляет, что он senior. У программиста синтаксис его основного языка должен быть на уровне разговорного.
Можно не знать каких-то паттернов, можно не знать библиотечных функций, можно не понимать тонкостей работы компилятора, можно даже слегка подзабыть как работает линковщик.
Но синтаксис языка, на котором разработчик планирует писать и читать код, т.е. по сути алфавит, разработчик на конкретном языке обязан знать. Можно забыть как что-то на языке написать (синтаксис С++ довольно обширен и бывает сложно вспомнить как правильно писать шаблонный код), но уж прочитать (а задачка-то по сути на чтение) очевидно надо суметь.
P.S. Ну и да. Если человек был экспертом в С++ в 1995-м году, то сегодня он уже по сути не знает С++ и его знания где-то на уровне очень сообразительного джуна, потому как несмотря на весь опыт в разработке ПО (читай проектировании), выдать работающее решение без постоянного контроля со стороны он не способен (потому что не может написать хороший код).
Потому что в реальности это всё это особо не используется.
У нас вот используется и вполне активно. Ну и программист, не знающий noexcept, с вероятностью близкой к 100% понятия не имеет как писать код безопасный относительно исключений. А это тоже зачастую требуется.
Можно конечно спорить что надо.
Я конечно может чего-то не понимаю сейчас, но пропускать через ревью код, который гарантированно вызывает std::terminate - это вот 100% не то, что надо в вашей программе. И любой опытный С++ программист просто обязан это уметь замечать.
Если на условной "планёрке" не подумали о том, что пилу сотруднику надо точить и под это ему надо выделить время, то собссно какие претензии?
Пилу-то я всё равно буду точить, но хранить её будут дома, а на работе буду пилить старой :) Когда всем это надоест, возьму новую красивую заточенную пилу и пойду пилить в другом месте))
Я вот не так давно, где-то с год, дорос до того, что меня стали звать на собеседования. До сих пор удивляюсь тому, что люди могут годами работать и не знать каких-то даже базовых конструкций языка.
Причём я даже не прошу людей писать код. На собеседовании все задачки или просто на чтение/запуск программы с последующим разбором вывода, или на самый обычный code review, где мы вместе смотрим на код, в котором есть 4 слоя ошибок: проблемы с проектированием, проблемы для новичков, проблемы для матёрых, и неожиданные UB для самых хардкорных.
Так вот на код ревью люди часто вообще не видят какие-то ну совсем базовые проблемы. Например в noexcept-функции на 3 строчки (!) я бросаю исключение. Но оказывается каждый второй "сеньор на бумаге" не знает, что такое noexcept в C++.
А родители могут жить на пенсию и свои накопления, или чем они всю жизнь занимались, что ничего не заработали?
Молодость моих пришлась на 90-е, где парочка неудачных финансовых решений и других ошибок, вылилась череду переездов, долгов, и довольно бедных (а иногда и голодных) времён, вплоть годочков до 2010-х, т.к нас было трое детей.
Пенсия моей мамы сейчас порядка 12к рублей. Пенсия моего отца - где-то также, но он ещё работает хотя бы, мать по состоянию здоровья не может. Зарплата отца чёт в районе 65к (электрик на шахте).
Ну и да, живут они в целом-то на свои, у меня отказываются денег брать, но меня это не останавливает и я всё равно оч сильно помогаю. Ибо какая это жизнь на их доходы? Жилье - дряхлый дом, машина тоже старая. Медицина - лучше и не начинать.
Вы видимо совсем... Даже не знаю, какое бы слово подобрать, чтобы не забанили... Скажем, "неопытный", раз считаете, что бедности не существует, что 90-е были "нормальным временем", и что никого они на обочину жизни не выкинули.
Кому-то повезло, кому-то нет, кто-то нашел себя в новом времени, а кто-то нет. Не важно как люди оказались в ситуации, в которой они оказались, проблема существует прямо сейчас.
Как по мне, разницы между десктопом и вебом не так чтобы и очень много сегодня. Раньше страдали от поддержки нескольких ОС, сейчас страдают от поддержки нескольких браузеров.
Тулинг концептуально тот же самый, просто под другими названиями. Единственная разница - всё тормозит как не в себя. Но тут уж ничего не поделаешь.
А, ну и да, ввиду того, что переизобретают велосипеды каждый день, а также из-за очередного слоя абстракции в виде браузера, возникает 100500 дебильных проблем.
Этот хинт компилятору может к чертям на проде вам весь софт уронить. Не такой уж он безобидный. Да и используется довольно часто. Как минимум move конструкторы принято делать noexcept (и не спроста).
Да, адекватен. Адекватен ли человек, заявляющий, что он С++ программист, но неспособный в функции из трёх строчек увидеть очевидную ошибку?
Скажем, мне в команде нафиг не нужен человек, не знающий язык) Спрашивать синтаксис дело-то может и последнее, но последнее оно потому, что я ожидаю, что человек языком пользуется и естественно может свободно читать код на нём)
Каким образом и какого качество решение? Он загрузит в себя за пару месяцев что идет испытательный срок, все современные плюсы? Маловероятно. Скорее всего он очень долгое время будет выдавать код таким, каким его писали в 1995-м году, забив на все современные практики, рекомендованные в том же Core Guidelines.
Работать-то оно будет, вот только этот будет требовать немедленного рефакторинга + непонятно кто и как его будет поддерживать после него. Решив проблему он создаст две и будет продолжать это делать, пока не пройдёт через N итераций "опыта", обладать которым он уже обязан.
Это правда, но это не отменяет того, что он должен и уметь грамотно код проектировать, и уметь хотя бы читать код на том языке, который мы используем. Я не просил ведь даже ни строчки написать на собесе, просто взглянуть на код и сказать где проблемы.
Вы б точно не прошли собес :D
Согласен, что формулировка "координаты отрезка" некорректная, но вполне очевидно, что имелось ввиду координаты концов двух отрезков. Устраивать полемику в стиле "я не могу решить задачу из-за некорректной формулировки" - эт явно не будет плюсом в карму на собеседовании. А вот уточняющие вопросы по заданию всегда идут плюсиком в карму.
Хотя с учётом того, что код и тесты уже даны, все входы и выходы определены, можно бы и догадаться что имелось ввиду.
Конечно, всегда можно найти какой-то пробел, никто не может знать всё, но мы говорим о базовом синтаксисе языка, на котором этот разработчик собирается писать код. Это не какая-то малоизвестная "тонкость" или там закрученный ADL-трюк. Стал бы я брать на работу переводчика, если бы он не мог написать грамотно предложение используя simple tenses? Вряд ли.
Запускал. Он просто не попал в ту ветку кода, которая всё ломает. И вообще это вчерашний студент-джун, который только и делает, что косячит.
Да фиг с ним с джуном. Это собеседование :) Я даю рядовую задачу - провести код ревью. Тут нельзя отмазаться, мол задача нереалистичная и на работе не встречается. Или что это какое-то надрачивание на алгоритмы. Или задача требующая специфические бизнес знания. Это самая рядовая рутина, которой её придётся заниматься на регулярной основе. Я напрямую заинтересован, чтобы человек мог выполнять эту работу.
Гуглить ведь никто не запрещал) Могу понять, если геометрией вы никогда не увлекались (как я), то за всё то время, прошедшее со школьной скамьи, реально можно тупо забыть как находить уравнение прямой по координатам двух точек, и можно забыть какой из коэффициентов отвечает за угол наклона этой прямой.
В принципе, это достаточно очевидные вещи, до которых можно додуматься и самостоятельно без гугла, просто "поигравшись" с цифрами. Но в любом случае, даже если не получилось самому придумать решение (стресс, затуп, вообще не знал как это делать), ответ будет ведь по первой ссылке в гугле.
Ничего удивительного. Тот же Chromium собирается без них. В GCC/Clang даже флаг для этого есть, называется
-fno-exceptions. И у нас есть драйвера на С++, которые собираются с этим флагом (а также еще десятком других).Это вообще не является оправданием для того, чтобы не знать как исключения работают. Я даже более скажу, стандартом отключение исключений вообще не предусмотрено (т.к. в STL очень много на них завязано). Так что код с
-fno-exceptionsформально даже не является кодом на любом из стандартов С++.Ну и человек, знающий за каким чёртом в С++ отключают исключения и какие проблемы это за собой несёт, определённо должен быть способен ответить что делает
noexcept:)В принципе, этого никто и не отрицал, но собеседование идет на вакансию С++ разработчика :) Очевидно экспертиза нужна в С++.
Ну, логично, что принимая на работу человека, который должен писать и читать код на С++17, я должен убедиться, что они понимает синтаксис языка. Особенно если он заявляет, что он senior. У программиста синтаксис его основного языка должен быть на уровне разговорного.
Можно не знать каких-то паттернов, можно не знать библиотечных функций, можно не понимать тонкостей работы компилятора, можно даже слегка подзабыть как работает линковщик.
Но синтаксис языка, на котором разработчик планирует писать и читать код, т.е. по сути алфавит, разработчик на конкретном языке обязан знать. Можно забыть как что-то на языке написать (синтаксис С++ довольно обширен и бывает сложно вспомнить как правильно писать шаблонный код), но уж прочитать (а задачка-то по сути на чтение) очевидно надо суметь.
P.S.
Ну и да. Если человек был экспертом в С++ в 1995-м году, то сегодня он уже по сути не знает С++ и его знания где-то на уровне очень сообразительного джуна, потому как несмотря на весь опыт в разработке ПО (читай проектировании), выдать работающее решение без постоянного контроля со стороны он не способен (потому что не может написать хороший код).
У нас вот используется и вполне активно. Ну и программист, не знающий noexcept, с вероятностью близкой к 100% понятия не имеет как писать код безопасный относительно исключений. А это тоже зачастую требуется.
Я конечно может чего-то не понимаю сейчас, но пропускать через ревью код, который гарантированно вызывает
std::terminate- это вот 100% не то, что надо в вашей программе. И любой опытный С++ программист просто обязан это уметь замечать.То, что не могут решить деньги, не может решить даже сам господь Бог :) В общем, проблема не в деньгах, а в природе самой проблемы.
Все решаемые проблемы можно решить с помощью денег)
Клёво, буду знать)) Уже просто лет 7 пишу низкоуровневый код и с базами данных не работаю.
Силами SQL никак, т.к. запрос метаинформации о таблице - это БД-специфичная вещь. Подсчет столбцов на SQL тоже не написать, насколько я знаю.
Но будь у нас в распоряжении хотя бы python, задачу можно было бы решить .
Если на условной "планёрке" не подумали о том, что пилу сотруднику надо точить и под это ему надо выделить время, то собссно какие претензии?
Пилу-то я всё равно буду точить, но хранить её будут дома, а на работе буду пилить старой :) Когда всем это надоест, возьму новую красивую заточенную пилу и пойду пилить в другом месте))
Я вот не так давно, где-то с год, дорос до того, что меня стали звать на собеседования. До сих пор удивляюсь тому, что люди могут годами работать и не знать каких-то даже базовых конструкций языка.
Причём я даже не прошу людей писать код. На собеседовании все задачки или просто на чтение/запуск программы с последующим разбором вывода, или на самый обычный code review, где мы вместе смотрим на код, в котором есть 4 слоя ошибок: проблемы с проектированием, проблемы для новичков, проблемы для матёрых, и неожиданные UB для самых хардкорных.
Так вот на код ревью люди часто вообще не видят какие-то ну совсем базовые проблемы. Например в noexcept-функции на 3 строчки (!) я бросаю исключение. Но оказывается каждый второй "сеньор на бумаге" не знает, что такое noexcept в C++.
Ковид нам показал, что неважно сколько человек, для начала пандемии достаточно одного.
Для меня "работа на себя" оправдана только в одном случае - очень сильно хочется заниматься управлением, а не, соббсно, работой.
Это настолько ОС, что так-то уже хромбуки придумали)
Молодость моих пришлась на 90-е, где парочка неудачных финансовых решений и других ошибок, вылилась череду переездов, долгов, и довольно бедных (а иногда и голодных) времён, вплоть годочков до 2010-х, т.к нас было трое детей.
Пенсия моей мамы сейчас порядка 12к рублей. Пенсия моего отца - где-то также, но он ещё работает хотя бы, мать по состоянию здоровья не может. Зарплата отца чёт в районе 65к (электрик на шахте).
Ну и да, живут они в целом-то на свои, у меня отказываются денег брать, но меня это не останавливает и я всё равно оч сильно помогаю. Ибо какая это жизнь на их доходы? Жилье - дряхлый дом, машина тоже старая. Медицина - лучше и не начинать.
Вы видимо совсем... Даже не знаю, какое бы слово подобрать, чтобы не забанили... Скажем, "неопытный", раз считаете, что бедности не существует, что 90-е были "нормальным временем", и что никого они на обочину жизни не выкинули.
Кому-то повезло, кому-то нет, кто-то нашел себя в новом времени, а кто-то нет. Не важно как люди оказались в ситуации, в которой они оказались, проблема существует прямо сейчас.
Как по мне, разницы между десктопом и вебом не так чтобы и очень много сегодня. Раньше страдали от поддержки нескольких ОС, сейчас страдают от поддержки нескольких браузеров.
Тулинг концептуально тот же самый, просто под другими названиями. Единственная разница - всё тормозит как не в себя. Но тут уж ничего не поделаешь.
А, ну и да, ввиду того, что переизобретают велосипеды каждый день, а также из-за очередного слоя абстракции в виде браузера, возникает 100500 дебильных проблем.