Здравствуйте, sergey2b, Вы писали:
S>http://files.rsdn.org/56990/resume.doc
S>стоит ли оставить только последнии 10 лет
Да, и нужно выкинуть все лишнее. Очень много ненужных деталей.
>> "experience of simultaneous work on several projects and in multinational teams"
Я бы наверное убрал общие фразы и сосредоточился на результатах, а не на процессах. Не надо писать очевидные вещи, понятно что у вас в конторах в США были со всего света люди.
"06/2006 – 09/2007 Software Developer, GMSI (Johannesburg, South Africa)"
"ViewDetail: Added a new functionality to the application to get information about the MDElements specified by the user."
Такой уровень детализации точно не нужен в резюме. Напишите лучше, что разработали модуль для "mining CAD system" который позволил увеличить прибыль компании на 5%, если бы не вы, этого бы не случилось и использовали для этого такие-то технологии или там круто зарулили команду разработчиков.
n.b. В душе не чаю, что такое MDElements и думаю, 99% кто будет читать ваше резюме.
>> Familiarity STL, Boost, MFC, Poco and REST API.
Что за Familiarity? Вы его знаете или нет? Если знаете, то зачем familiarity. Так студенты делают, когда выписывают названия всех технологий, с которыми сталкивались. Вы видно, что очень опытный разработчик.
Зачем про MFC пишете? Хотите на нем работать? Я так понимаю, это скорее всего support копролитов мамонта будет. Плюс сразу видно, что вы не молодой, извините )
Что такое Poco? Первый раз слышу.
"and REST API" — есть такой класс тестов на IQ — исключите лишнее слово из группы слов.
Резюме нужно, чтобы на вас обратили внимание из общего потока репликантов апликантов, а не для того, чтобы дать почасовой отчет о вашей деятельности за последние 20 лет.
Сосредоточтесь на результатах.
Выделите свои сильные стороны.
Пишите резюме под конкретную вакансию, безжалостно выкините все, не относящееся к делу.
Гм. У тебя linkedin профиля нету?
Я надеюсь что это черновик, потому что оформление неряшливое: очепятки, разные шрифты, одни слова болдом другие, рядом стоящие — нет, и тп.
Оформление конечно мог и конвертор попортить, потому как в свойствах документа видно его оригинальное название (дада, с фамилией) и там docx.
Касательно содержимого уже ioctl всё правильно отписал. Я пожалуй комментировать не стану, а то ты раньше обижался на прямую речь.
Через HR пробиться должно хватить, я считаю, хотя основная масса перечисленного не сильно популярные штуки. Продавать C++, да ещё и когда постоянно MSVS фигурирует геморно.
То что ты годы опыта отрезал я считаю странным, но вроде ты говорил что так лучше, так что ХЗ.
Единственное что там плохо, но это никак не исправить — имена компаний в которых ты работал. Уже большой дядя с кучей опыта, а там почти одни Рога-и-Копыта. Это я к тому, что на твоём месте я бы напрягся и сделал следующим местом работы компанию с громким именем.
еще не понятно стоит ли писать такой опыт
коллега сделал модели и обучнеие на yolo
написал прототип на python
у меня была задача переложить его код на С++
в процессе переписывания стало понятно, что надо работу с YOLO делать иначе
потом оказалось что если анализировать каждый кадр все работает очень медленно
я поэксперементировал с алгоритмами обработки видео + поразному с YOLO в результате скорость обработки стала заметно выше
вроде бы хорошая история, но в результате если подойти к вопросу формально
я не специалист в ML и алгоритмах видео, а просто решил частную задачу
S>вроде бы хорошая история, но в результате если подойти к вопросу формально S>я не специалист в ML и алгоритмах видео, а просто решил частную задачу
Так эта история и не про ML. Я отчасти этим же занимаюсь, пишу в резюме что-то типа "Выводу и оптимизирую ML в продакшн". Сейчас всё больше народа только Питон умеют, напишут, а потом оно тормозит. Поэтому такой навык хороший и востребованный. Но есть одно но: к нему уже должно прилагаться знание библиотек CUDA, TensorRT, OpenVINO и другого. Типа экосистема уже более менее сложилась не только в обучении нейросеток, но и для инференса. Ну и на мобиле полезно уметь это выводить тоже.
S>стоит ли оставить только последнии 10 лет S>http://files.rsdn.org/56990/resume.doc
1. Резюме должно быть на одну страницу, на то оно и резюме. Можно написать CV на всякий случай, но вероятность, что его будут читать близка нулю.
2. Копи-пестерство надо изживать.
Здравствуйте, CreatorCray, Вы писали:
CC>Оформление конечно мог и конвертор попортить, потому как в свойствах документа видно его оригинальное название (дада, с фамилией) и там docx.
Здравствуйте, kaa.python, Вы писали:
KP>Единственное что там плохо, но это никак не исправить — имена компаний в которых ты работал. Уже большой дядя с кучей опыта, а там почти одни Рога-и-Копыта. Это я к тому, что на твоём месте я бы напрягся и сделал следующим местом работы компанию с громким именем.
А чо в смысле? Все в faang'ах должны поработать што ле?
Здравствуйте, UVV, Вы писали:
UVV>А чо в смысле? Все в faang'ах должны поработать што ле?
Почему сразу в faang'ах? sergey2b декларирует что прется по безопасности, а в послужном списке ничего известного из этой области нет.
Да и не должны, но искать что-то новое имея громкое имя в резюме всяко проще чем без него. Так что, это дело добровольное, но зачем себе жизнь усложнять.
Здравствуйте, kaa.python, Вы писали:
KP>Единственное что там плохо, но это никак не исправить — имена компаний в которых ты работал. Уже большой дядя с кучей опыта, а там почти одни Рога-и-Копыта.
Там ещё и интервалы смены работы ИМХО стремноваты.
Здравствуйте, kaa.python, Вы писали: KP>Почему сразу в faang'ах? sergey2b декларирует что прется по безопасности, а в послужном списке ничего известного из этой области нет.
в принципе, да. на самом деле в любой области есть свои топовые конторы. я в свое время выбрал как раз контору из-за имени при наличии другого предложения с з.п. на 30% больше и отлично сработало.
если я правильно понимаю менталитет людей, то они действительно скорее смотрят на то, куда человека тянет и зачем,\ а не на конкретно, что он там какие-то элементы куда-то переложил. например, международную клиентоориентированную контору может сильно заинтерсовать опыт человека в проживании и знании менталитетов в разных странах и именно это надо выставлять как плюс. кто-то смотрит, работал ли человека в стартапах или свою контору имел. кого-то обратит внимание на высокую должность типа Vice president, банки смотрят работал ли человек с банками. кто-то обратит внимание на наличие публкаций, а кто-то увидев название универа возьмет, хотя это могут быть просто дополнительные курсы. короче, при желании всегда можно повернуть куда надо и по уму для каждого работодателя писать свое резюме. ну и конечно же не неряшливо. с неряшливыми людьми никому неохота работать, кроме, не знаю, может, производителя конопли
Я бы посоветовал попытаться избавиться кучи однотипных фраз и слов паразитов.
• Designed, developed, and maintained
• Designed and developed a
Свои резюме, я обычно писал. Чем свежее опыт, тем подробнее. Описывать так подробно как ты работал над CAD системой 15 лет назад, это перебор. Выкидывать опыт не нужно, нужно просто сокращать все что было лет 10 назад, до двух, трех фраз. Технологии, какая доменная область была.
Ну, и обычно должна быть отдельная секция с keywords по технологиям.
Сейчас посоветую суровый путь, но ведущий к 100% успеху. Критерий успеха — если ваше резюме попадает к HR в FAANG, то его откладывают в стопку для проведения телефонного скрининга.
Ваше резюме из 90-х годов и по форме, и по содержанию (у самого было подобное). Его нужно просто выкинуть.
Возьмите эту книгу (могу и выслать ПДФ лично, если надо), потратьте несколько уикендов (по прошлым сообщениям я знаю, что у вас трудности с наличием свободного времени по будням) на внимательное изучение.
Потом потратьте день-другой на написание резюме с нуля.
На выходе у вас будет хорошее резюме в PDF-формате (это единственный нормальный формат на сегодня), с которым вы пройдете через HR-фильтры даже в FAANG.
У тебя получается, что 4ая, 5ая и 6ая работа описаны в мельчайших деталях, а про текущую кот наплакал.
Должно быть наоборот. Текущая — с самым подробным описанием достижений, предыдущая — чуть менее подробно. А про каждую более раннюю работу надо писать максимально лаконично, буквально одной фразой.
Никто не станет читать, что ты делал на 5-м по счете работодателе. Но полностью выкидывать тоже нельзя, ведь ты сразу стаж себе занижаешь, а это и не полезно, и подозрительно.
большое спасибо за отзыв
могли бы вы пожалуйста дать pdf (email в моем профили действующий)
A>На выходе у вас будет хорошее резюме в PDF-формате (это единственный нормальный формат на сегодня), с которым вы пройдете через HR-фильтры даже в FAANG.
FAANG пишет и предлагают собеседования (на это недели например FB and amazon)
но я думаю не очень хорош в массажировании гномиков на доске, хотя алгоритмы я изучал и немного их знаю
G>У тебя получается, что 4ая, 5ая и 6ая работа описаны в мельчайших деталях, а про текущую кот наплакал. G>Должно быть наоборот. Текущая — с самым подробным описанием достижений, предыдущая — чуть менее подробно. А про каждую более раннюю работу надо писать максимально лаконично, буквально одной фразой. G>Никто не станет читать, что ты делал на 5-м по счете работодателе. Но полностью выкидывать тоже нельзя, ведь ты сразу стаж себе занижаешь, а это и не полезно, и подозрительно.
я подумаю что с этим можно сделать
но к сожалению я больше горжусь тем что сделал раньше чем последнии 10 лет
Здравствуйте, Anonymous123, Вы писали:
A>Сейчас посоветую суровый путь, но ведущий к 100% успеху. Критерий успеха — если ваше резюме попадает к HR в FAANG, то его откладывают в стопку для проведения телефонного скрининга.
В эту стопку попадают вообще все хоть слегка подходящие, кто находится в регионе где ведётся найм.
A>Ваше резюме из 90-х годов и по форме, и по содержанию (у самого было подобное). Его нужно просто выкинуть. A>Возьмите эту книгу (могу и выслать ПДФ лично, если надо), потратьте несколько уикендов (по прошлым сообщениям я знаю, что у вас трудности с наличием свободного времени по будням) на внимательное изучение.
Ты же не в серьёз предлагаешь читать книгу только для того что-бы написать резюме?
Здравствуйте, sergey2b, Вы писали:
S>я подумаю что с этим можно сделать S>но к сожалению я больше горжусь тем что сделал раньше чем последнии 10 лет
Понимаю.
У меня тоже схожие сложности.
Я сильно горжусь тем что сделал на предыдущей работе, я был тимлидом и прямо вот активно тащил. Много есть чего рассказать. А на текущей — так, работу работал...
Недавно прошел несколько интервью, и несколько терялся при простом вопросе "расскажите о своих достижениях на последнем месте работы". Изворачивался, говорил, что на последнем делал вот это, но горжусь проектом с другой работы, давайте я лучше про него расскажу.
В общем, ход хоть и возможный, но не очень сильный.
Понятно, надо что-то менять.
Преувеличивать и привирать, какой ты крутой на последней работе — плохо, да и раскусят. Подтасовать факты, перетащив проект, которым гордишься, из одной компании в другую — скорее всего не раскусят, но тоже как-то нехорошо...
В общем, тут простор для раздумий.
скажи пожалуйста как бы ты оценил в плане карьеры
я для тренировки пошел на собеседование в mongoDB
с одной стороны это известная компания, они клянуться что нанимают под написание нового кода и задачки должны быть интерестные, не тупо вызывать функции видеокодека
с другой стороны все dev группа 26+ человек и на Си пишут только 2-3
те это значит опять будет маленькая по сути компания у которой явно большая база старого кода
Да, с таким резюме в FAANG не возьмут: слишком много знаний для конвейера. Режет глаза неаккуратность; в чём проблема исправить хотя бы то, что подсвечено Вордом?
Здравствуйте, sergey2b, Вы писали:
S>с другой стороны все dev группа 26+ человек и на Си пишут только 2-3
Экосистема где монго- это облака, микросервисы, докер, java. Ядро лишь малая часть в общей сумме что монге нужно, наверное, самые прокачанные технари там.
Здравствуйте, kaa.python, Вы писали:
KP>То что ты годы опыта отрезал я считаю странным, но вроде ты говорил что так лучше, так что ХЗ.
Год назад мой агент настойчиво рекомендовал сократить опыт до ~10 лет; я сократил до 15 (было >30).
Советовал так же подчистить и LinkedIn. И убрать год из Education
Все это помогает только на этапе screening, т.к. при встрече это все становится очевидным...
Несколько лет назад я хвастался, что начал программировать не перфокартах. Теперь перестал.
У нас как то за обедом зашёл разговор об увольнениях
Я воздержался от высказываний а коллеги сказали
Что при увольнении как правило дают зарплату за полгода и они обычно отдыхают два месяца а потом ищут работу
Говорят что отпуска короткометражной
А вот такой перерыв это возможность съездить в путешествие
Здравствуйте, sergey2b, Вы писали:
S>скажи пожалуйста как бы ты оценил в плане карьеры S>я для тренировки пошел на собеседование в mongoDB
Ну вообще это круто, я считаю, это годное имя и задачи там могут быть интересные. Так же там больше 2К сотрудников и компания АйТишная, так что там должен быть простор для маневра.
Здравствуйте, VladFein, Вы писали:
VF>Год назад мой агент настойчиво рекомендовал сократить опыт до ~10 лет; я сократил до 15 (было >30). VF>Советовал так же подчистить и LinkedIn. И убрать год из Education
Слушай, ну у тебя очень впечатляющий послужной список, конечно, не много кто может подобным похвастаться. Так что возникает вопрос, а что, пока ты не подрезал его снизу были сложности?
VF>Все это помогает только на этапе screening, т.к. при встрече это все становится очевидным... VF>Несколько лет назад я хвастался, что начал программировать не перфокартах. Теперь перестал.
Сильно меньше предложений стало? Хотя твоя текущая компания очень хороша, и если предложений и мало, но такого уровня, то не пофигу ли?
Здравствуйте, kaa.python, Вы писали:
VF>>Год назад мой агент настойчиво рекомендовал сократить опыт до ~10 лет; я сократил до 15 (было >30). VF>>Советовал так же подчистить и LinkedIn. И убрать год из Education
KP>Слушай, ну у тебя очень впечатляющий послужной список, конечно, не много кто может подобным похвастаться. Так что возникает вопрос, а что, пока ты не подрезал его снизу были сложности?
Трудно сказать; нужен контрольный экземпляр
До последнего предложения, искал сам полгода, без результата.
VF>>Все это помогает только на этапе screening, т.к. при встрече это все становится очевидным... VF>>Несколько лет назад я хвастался, что начал программировать не перфокартах. Теперь перестал.
KP>Сильно меньше предложений стало? Хотя твоя текущая компания очень хороша, и если предложений и мало, но такого уровня, то не пофигу ли?
Опять же — не с чем сравнивать...
А так да — отсюда на пенсию
Здравствуйте, kaa.python, Вы писали:
KP>Меня очень редко спрашивают почему я пол года нигде не работал, я говорил что устал и отдыхал. Обычно завидуют и всё, собственно
Разве ты не над своим проектом работал, как инвестицию в технический стек?
Согласись, если чел имеет привычку увольняться, или его увольняют, то это повод поглубже порасспросить о причинах, т.е. red flag.
Здравствуйте, Тёмчик, Вы писали:
Тё>Разве ты не над своим проектом работал, как инвестицию в технический стек? Тё>Согласись, если чел имеет привычку увольняться, или его увольняют, то это повод поглубже порасспросить о причинах, т.е. red flag.
я на собеседовании в первый день работы честно сказал что буду фиксить баги но не 100% времени
компания наняла 4 студентов на меня слило весь баг фикс, через 5 месяцев у меня начал ехать крыша
а студенты пилят новую версию в облаках имея блок схемы и
проверянные алгоритмы
последней точкой было дали 1.5 G+ исходников
не строчки документаций
за час чел показал как запускать софт и то только частично
и начальник говорит хочу что бы через 4 дня было сделанно то то и то
я культурно ему сказал что он оптимист, он начал бычить
я отключил митинг и пошел рассылать резюме
большенство американских компаний это реальная скотобаза
по хорошему они не понимают я же пили им как стахановиц перевыполняя план, а они меня слили еще и в рожу плюют
думаешь при таких вводных я должен дальше на них работать
KP>>Сильно меньше предложений стало? Хотя твоя текущая компания очень хороша, и если предложений и мало, но такого уровня, то не пофигу ли? VF>Опять же — не с чем сравнивать... VF>А так да — отсюда на пенсию
у меня похожий опыт
пока парень с рсдн не посоветовал урезать опыт до 10 лет на собеседования не приглашали
теперь стали
ну сейчас модно бороться за равенство, может перестанут дескриминировать по возрасту
хотя в этом плане здесь несомненно лучше чем в РФ
Здравствуйте, sergey2b, Вы писали:
S>у меня похожий опыт S>пока парень с рсдн не посоветовал урезать опыт до 10 лет на собеседования не приглашали S>теперь стали
У меня 17 лет опыта заявлено в LI; на этой неделе предлагали обсудить Senior Staff Engineer в Zendesk, но меня от карет пока что прёт. Таки больше 10 лет опыта не стоит прятать
Здравствуйте, Тёмчик, Вы писали:
Тё>Разве ты не над своим проектом работал, как инвестицию в технический стек? Тё>Согласись, если чел имеет привычку увольняться, или его увольняют, то это повод поглубже порасспросить о причинах, т.е. red flag.
Кроме всего прочего — да. Но я не скрыаю что в первую очередь это был саббатикл. И как выдастся возможность я ещё один на пол года устрою.
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, Anonymous123, Вы писали:
A>>Сейчас посоветую суровый путь, но ведущий к 100% успеху. Критерий успеха — если ваше резюме попадает к HR в FAANG, то его откладывают в стопку для проведения телефонного скрининга.
KP>В эту стопку попадают вообще все хоть слегка подходящие, кто находится в регионе где ведётся найм.
A>>Ваше резюме из 90-х годов и по форме, и по содержанию (у самого было подобное). Его нужно просто выкинуть. A>>Возьмите эту книгу (могу и выслать ПДФ лично, если надо), потратьте несколько уикендов (по прошлым сообщениям я знаю, что у вас трудности с наличием свободного времени по будням) на внимательное изучение.
KP>Ты же не в серьёз предлагаешь читать книгу только для того что-бы написать резюме?
Всерьез. Для меня это была инвестиция в свое будущее (не денежная, а временная, но время — деньги). Как люди платят большие деньги за курсы всякие, за репетиции интервью, вылизывание резюме. Я вместо этого сел и переработал все резюме с нуля по книге.
Здравствуйте, sergey2b, Вы писали:
S>компания наняла 4 студентов на меня слило весь баг фикс, через 5 месяцев у меня начал ехать крыша
Но ведь тебя наняли за знание старых вещей, о которых твоё резюме говорит, и ты принял оффер. Сделай новое резюме такое, которое кричит "облака" и подавайся на другую роль.
CC>>Ездят на тех, кто везёт. М>А где та тонкая грань, когда на тебе не ездят, но и не считают бесполезным/ленивым и повышают в долнжости/доверяют ответственную работу и т.д.?
Здравствуйте, Михaил, Вы писали:
М>А где та тонкая грань, когда на тебе не ездят, но и не считают бесполезным/ленивым и повышают в долнжости/доверяют ответственную работу и т.д.?
Когда за сделанное требуют полагающиеся ништяки а не молча сглатывают и пашут дальше.
Здравствуйте, CreatorCray, Вы писали:
М>>А где та тонкая грань, когда на тебе не ездят, но и не считают бесполезным/ленивым и повышают в долнжости/доверяют ответственную работу и т.д.? CC>Когда за сделанное требуют полагающиеся ништяки а не молча сглатывают и пашут дальше.
Здравствуйте, Sharov, Вы писали:
М>>>А где та тонкая грань, когда на тебе не ездят, но и не считают бесполезным/ленивым и повышают в долнжости/доверяют ответственную работу и т.д.? CC>>Когда за сделанное требуют полагающиеся ништяки а не молча сглатывают и пашут дальше. S>Зп не ништяк?
Бонус, RSU grant, promotion — ништяки
Base pay в неизменном виде — не ништяк.
Здравствуйте, sergey2b, Вы писали:
S>Но для этого надо уметь работать в облаках S>Просто прочитать книгу недостаточно нужна реальная практика
Хе-хе, интересное заблуждение. У меня коллега разработчик в Автодеске устал писать под десктопы и совершенно самостоятельно получил пару сертификаций типа AWS и CNCF и стал архитектором. Облачным. Короче ещё дальше шагнул. Но да, чувак талантливый и целеустремлённый, т.е. он не жаловался на отсутствие реальной практики, а просто сделал. Но тебе же прикольнее осциллографы, так что ой
Здравствуйте, sergey2b, Вы писали:
S>Но для этого надо уметь работать в облаках S>Просто прочитать книгу недостаточно нужна реальная практика
Ну кучи народа как то переползают же в облака. Сделай промежуточный шаг, найди в своем опыте хоть что то приближенное к облакам ( ты занимался чем то связанным с сетями, почтой итп, любой клиент серверный опыт, многопоточка в копилку), приукрась в резюме. Ищи позиции где есть облака но и твой опыт пригодится — не только девы но и конторы отчаянно пытаются туда пролезть, у них есть приносящий деньги софт который надо портировать итп. Еще раз постучись в Матворкс — сильные плюсовики им нужны, и позиции с железяками там почти всегда есть, команд там много и неудача с одной никак не блокирует попытку в другой, а в каждой команде могут быть свои критерии, это не Гугл/ФБ где всех под одну гребенку.
На ФААНГи забей, я в бостонском AWS в 37 лет один из самых старых разработчиков, учить новое тут надо молниеносно и навыки общения нужны сильные. И тут надо ещё больше софт скиллс применять чтоб на тебя сплошной багфикс не повесили. Короче, тебе не понравится упороться чтоб туда попасть а потом через год уйти / быть уволенным — ни разу не прикольно. Видел таких.... Я рад что не затянул с фаангами, лет через 5 уже не потянул бы наверное. По крайне мере желания готовиться несколько месяцев точно уже не будет. А пока прикольно, темп тяну, кучу нового учу, код пишу и молодежь наставляю
Подумай что не так с общением. Америка не рай, но даже в рогах и копытах в среднем нормальные люди работают. Только у тебя постоянно жёсткач...
Нет, все это ваше. зачем удалять. потом спросят, а вы уже не помните. все равно пишется в хронологическом порядке. не захотят не будут читать дальше.
зато поймут что боец опытный.
А вообще,
Здравствуйте, Тёмчик, Вы писали:
KP>>Меня очень редко спрашивают почему я пол года нигде не работал, я говорил что устал и отдыхал. Обычно завидуют и всё, собственно
Тё>Разве ты не над своим проектом работал, как инвестицию в технический стек? Тё>Согласись, если чел имеет привычку увольняться, или его увольняют, то это повод поглубже порасспросить о причинах, т.е. red flag.
Поражает лицемерие кадровиков -- вот уж кто кочевой народ.
Здравствуйте, sergey2b, Вы писали:
S>большенство американских компаний это реальная скотобаза S>по хорошему они не понимают я же пили им как стахановиц перевыполняя план, а они меня слили еще и в рожу плюют
Здравствуйте, sergey2b, Вы писали:
S>ну сейчас модно бороться за равенство, может перестанут дескриминировать по возрасту
Не-а: в случае проверки любая контора продемонстрирует, что процент пожилых в пределах нормы. Другое дело, что это всё вице-президенты. А вот негров будут брать, да.
S>хотя в этом плане здесь несомненно лучше чем в РФ
Здравствуйте, Михaил, Вы писали:
CC>>Ездят на тех, кто везёт.
М>А где та тонкая грань, когда на тебе не ездят, но и не считают бесполезным/ленивым и повышают в долнжости/доверяют ответственную работу и т.д.?
1. Зачем куда-то продвигать того, кто прекрасно справляется со своими текущими обязанностями?
2. Как избавиться от того, кого нет возможности уволить?
Здравствуйте, Faland, Вы писали:
F>На ФААНГи забей, я в бостонском AWS в 37 лет один из самых старых разработчиков, учить новое тут надо молниеносно и навыки общения нужны сильные. И тут надо ещё больше софт скиллс применять чтоб на тебя сплошной багфикс не повесили. Короче, тебе не понравится упороться чтоб туда попасть а потом через год уйти / быть уволенным — ни разу не прикольно. Видел таких.... Я рад что не затянул с фаангами, лет через 5 уже не потянул бы наверное. По крайне мере желания готовиться несколько месяцев точно уже не будет. А пока прикольно, темп тяну, кучу нового учу, код пишу и молодежь наставляю
Зря ты свой опыт на все FAANGи проецируешь. Я в Гугл (в Shopping Ads) пришел в 43, и не чувствую себя стариком, хотя, большая часть коллег моложе, конечно. Реально тяжело было только во время GTI, ибо там реально за 2.5 недели нужно было успеть прослушать вагон лекций, много всего прочитать, изучить новые инструменты, и еще и командный проект успеть хоть как-то сделать. После него все довольно спокойно, пока по крайней мере (почти год уже).
Здравствуйте, Faland, Вы писали:
F>На ФААНГи забей, я в бостонском AWS в 37 лет один из самых старых разработчиков, учить новое тут надо молниеносно и навыки общения нужны сильные. И тут надо ещё больше софт скиллс применять чтоб на тебя сплошной багфикс не повесили.
Неужели у лучших из лучших багов, как из-под простых смертных?
F>Короче, тебе не понравится упороться чтоб туда попасть а потом через год уйти / быть уволенным — ни разу не прикольно. Видел таких.... Я рад что не затянул с фаангами, лет через 5 уже не потянул бы наверное. По крайне мере желания готовиться несколько месяцев точно уже не будет. А пока прикольно, темп тяну, кучу нового учу, код пишу и молодежь наставляю
А интервью проводите? Отдел кадров поставляет соискателей 40+?
F>Подумай что не так с общением. Америка не рай, но даже в рогах и копытах в среднем нормальные люди работают. Только у тебя постоянно жёсткач...
Не все жалуются, многие боятся результата "Да ты лузер, а вот я в шоколаде!11". У меня такая же ситуация, только другое отношение к происходящему: я понимаю, что меня нанимают именно для разгребания конюшен, ибо другие не хотят или не могут. Дискриминация по возрасту процветает, а я не дон Кихот, чтобы с ней сражаться.
Здравствуйте, baxton_ulf, Вы писали:
_>тебя ж никто прям завтра не тянет на интервью. забей стрелку на через пару месяцев и подготовься. там хорошо кормят
Я так понимаю это был ответ для sergey2b?
Здравствуйте, mgu, Вы писали:
Тё>>Согласись, если чел имеет привычку увольняться, или его увольняют, то это повод поглубже порасспросить о причинах, т.е. red flag.
mgu>Поражает лицемерие кадровиков -- вот уж кто кочевой народ.
Если человек вдруг вспыхивает на поручение и уходит из компании. Или перессорился с коллегами. Даже если всё замечательно, но через год чел уходит, после того, как он вошёл в курс и на него стали рассчитывать в роадмапе продукта- срочно искать замену?
Такое может случаться, главное, чтобы не случалось 10 прошлых работ подряд.
1) Стоит переработать так, чтобы было по-короче. Так, описание старых проектов — сократить до минимума.
2) Не уверен, стоит ли упоминать какую-нибудь проприетарную экзотику (типа Bentley Micro Station). Многим ли это интересно?
3) Если нет жалания копаться в древних багах, зачем пишешь про MFC? Также подумай — насколько теперь актуален boost...
4) Вполне возможно, имеет смысл подтянуть Qt. Тогда твой скиллсет C/C++ засияет новыми яркими оттенками.
5) Также — ИМХО стоит как-то раскрыть применение инструментария подходящего для кросс-платформенной (Windows/Linux) разработки.
P.S. Возможно, имеет смысл поддерживать хотя бы пару версий документа (по выраженной специфике работ):
например:
— embedded
— network
или:
— database
— CAD
Здесь правильнее изучить предложения, на том рынке, куда будешь продвигаться.
Здравствуйте, Lexey, Вы писали:
L>Зря ты свой опыт на все FAANGи проецируешь. Я в Гугл (в Shopping Ads) пришел в 43, и не чувствую себя стариком, хотя, большая часть коллег моложе, конечно. Реально тяжело было только во время GTI, ибо там реально за 2.5 недели нужно было успеть прослушать вагон лекций, много всего прочитать, изучить новые инструменты, и еще и командный проект успеть хоть как-то сделать. После него все довольно спокойно, пока по крайней мере (почти год уже).
Ну понятно что там везде ИМХО. Мы все оперируем только своими знаниями и опытом А мой показывает что возрастной русскоязычный девелопер со средненьким английским, плохими софт скиллами и нерелевантными хардскиллами, в динамичной среде среди молодежи натасканной на мэйнстрим — скорее всего будет страдать. Обратное скорее исключения, либо одно из условий не выполняется (наверняка у тебя либо с софтскиллами все отлично и/или хардскиллы хорошо матчились под позицию). Ну и да, бывают команды где народ постарше и поспокойнее и в фаангах, но если целиться именно туда — шансов пробиться еще меньше.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, baxton_ulf, Вы писали:
_>>тебя ж никто прям завтра не тянет на интервью. забей стрелку на через пару месяцев и подготовься. там хорошо кормят CC>Я так понимаю это был ответ для sergey2b?
Здравствуйте, Тёмчик, Вы писали:
Тё>Если человек вдруг вспыхивает на поручение и уходит из компании. Или перессорился с коллегами. Даже если всё замечательно, но через год чел уходит, после того, как он вошёл в курс и на него стали рассчитывать в роадмапе продукта- срочно искать замену? Тё>Такое может случаться, главное, чтобы не случалось 10 прошлых работ подряд.
я на собеседовании сразу сказал, что я могу делать maintenance но 100% времени
через 3 месяца баг фикса я очень культурно и без наездов попросил дать хотя бы 20% разработки,
мне пообещали дать но за 2 месяца не дали не одной задачи
при этом я узнал что у студентов 100% разработка
их отправляли на курсы и оплачивали их, мне даже книгу не купили
для выполнения срочной задачи я попросил документацию мне отказали
попросил что бы человек делавший севрер объяснил мне, выделили 2 часа его времени
мы час только обрудование к компу подключали
перед собранием я узнаю что автор сервера несколько дней возился с студентами и объяснял им
уже на этом эжтапе у меня начала теь крыша от разрыва шаблона
начинаеться собрание и мне говорят
1) ты должен выполнить задачу до понедельника, неизестно компилируються ли исходники и точно известно что оборудование не может комуницировать с среврером (почему автор сервера не ъочет делать он же 100% эксперт)
2) говорят что я должен научить студента компилировать эти исходники, тестировать их и внести изменнеия
ну да я послал в жопу тк считаю это трешем
справделивоти ради к концу дня я компилировал ихсодники и знал как тестировать в минимальном режиме
вопрос к залу почему так
что о делать в такой ситцуации какой софт скил надо задействовать
для полноты картины когда я начал работать я был пятым программистом
двое уже сами уволились (один из низ реальный ученый а не сотрировщик гномов и ушел на 300 тыр в бостоне не в FAANG)
я на выходе
остаються два начальника (ясный ясень они не хотят фиксить свои баги кому это инетерестно)
те это я такой дубовый русский куда слились двое других у которых гибкость 80 уровня
Здравствуйте, sergey2b, Вы писали:
S>для полноты картины когда я начал работать я был пятым программистом S>двое уже сами уволились (один из низ реальный ученый а не сотрировщик гномов и ушел на 300 тыр в бостоне не в FAANG) S>я на выходе S>остаються два начальника (ясный ясень они не хотят фиксить свои баги кому это инетерестно)
S>те это я такой дубовый русский куда слились двое других у которых гибкость 80 уровня
S>вопрос к залу почему так S>что о делать в такой ситцуации какой софт скил надо задействовать
Networking: позвонить двоим другим с предложением о сотрудничестве. Если они работают в приличных конторах, то ещё и получат копеечку за рекомендацию.
С ученым я работал в паре по нескольким задачам
Мы иногда ездили вместе на рыбалку,
возможно я не гибкий по меркам рсдн но дядька уже
Предложил прийти к ним на собеседование
у меня в контракте написанно, что я не имею право работать в амазоне N лет
и в принципе ходить на собеседования в некоторые подразделения амазона
а еще говорят что свободная страна
насколько я видел на собеседованиях в интерестных мне отделах Google Intel and MS там полно возрастных дядек
хотя проблемма несомнено есть, если что вернусь домой буду кроликов выращивать
Здравствуйте, sergey2b, Вы писали:
S>С ученым я работал в паре по нескольким задачам S>Мы иногда ездили вместе на рыбалку, S>возможно я не гибкий по меркам рсдн но дядька уже S>Предложил прийти к ним на собеседование
Тогда в чём проблема? На рыбалку ездили, работали в паре, вопросов по поводу смены работы не будет, 300К.. Что ещё-то нужно?
Здравствуйте, sergey2b, Вы писали:
S>я на собеседовании сразу сказал, что я могу делать maintenance но 100% времени
Для меня упоминание о багофиксе легаси- большой red flag. Может быть я сейчас hipocritic , ибо в одной интересной мне конторе весьма перспективная предметная область и при этом устаревший стек, но так они ищут для разработки новых фич в облаках. И при этом ещё багофикс.
S>через 3 месяца баг фикса я очень культурно и без наездов попросил дать хотя бы 20% разработки, S>мне пообещали дать но за 2 месяца не дали не одной задачи
S>при этом я узнал что у студентов 100% разработка S>их отправляли на курсы и оплачивали их, мне даже книгу не купили
М.б. условием найма студентов было оплата курсов и книг, как часть пакета компенсации?
S>перед собранием я узнаю что автор сервера несколько дней возился с студентами и объяснял им
Скорее всего, челу самому этого хотелось.
S>начинаеться собрание и мне говорят S>1) ты должен выполнить задачу до понедельника, неизестно компилируються ли исходники и точно известно что оборудование не может комуницировать с среврером (почему автор сервера не ъочет делать он же 100% эксперт) S>2) говорят что я должен научить студента компилировать эти исходники, тестировать их и внести изменнеия
Т.е. тебя воспринимают, как такого фиксера-супермена, который может сходу разобраться и пофиксить. Что в этом плохого? Ибо по моему экспериенсу, задачи дают сложности соразмерной к уровню человека. Это компетенция тимлида- распределять задачи так, чтобы они выполнялись.
S>ну да я послал в жопу тк считаю это трешем S>справделивоти ради к концу дня я компилировал ихсодники и знал как тестировать в минимальном режиме
Т.е. ты просто крайне технически сильный и некомандный. Тебя к код ревью подпускают, или держат в загончике задачек, которые больше никто не хочет или не может делать?
S>вопрос к залу почему так
Почему одни очень сильные программисты остаются всю жизнь помидорами, а другие, может быть за которыми тебя ставят фиксить их копролегаси, растут в тимлидов и выше?
S>что о делать в такой ситцуации какой софт скил надо задействовать
Качать все софт скиллы. Непредвзято посмотреть на себя со стороны, задуматься с точки зрения тимлида, зачем ты как тимлид нанял тебя, как grumpy супермена? Хочешь ли ты быть таким технарем-суперменом навсегда?
S>двое уже сами уволились (один из низ реальный ученый а не сотрировщик гномов и ушел на 300 тыр в бостоне не в FAANG) S>я на выходе
Как получишь офер на 300- уходи. Зачем уходить вникуда? S>остаються два начальника (ясный ясень они не хотят фиксить свои баги кому это инетерестно)
У начальников другая роль- задавать направление, распределять задачи, и следить за сроками.
>говорят что я должен научить студента компилировать эти исходники
Шанс проявить себя. Mentorship — одна из отличительных черт синьера от мидла.
Здравствуйте, sergey2b, Вы писали:
S>я подумаю что с этим можно сделать S>но к сожалению я больше горжусь тем что сделал раньше чем последнии 10 лет
Тот факт, что человеку есть чем гордиться на работе — уже отлично.
Теперь как-то найти то, чем сможешь гордиться именно сегодня.
Углубиться в эту тематику, сделать так чтобы и коллегам, и самому стало приятно.
Здравствуйте, reversecode, Вы писали:
R>не, может конечно у них есть куча другой работы R>но вряд ли вы сможете хотя бы что то фиксить в той кодовой базе
я смотрел их код после вашего сообщения в пятницу
давайте вы приведете пример, что вы считаете в коде на самом деле круто (в плане языка, у меня нет сомнений, что там есть алгоритмы которые я не знаю)
ну если вы cчитаете что владеете С++17, то молодец
но я имел ввиду не это
а архитектурное решение
что бы в нем быстро и умело разбираться,править,фиксить и улучшать
я помню вашу боль с ffmpeg, а на мой взгляд это поделие школьников
то монгодб не менее чем на пару порядков сложнее ffmpeg, да еще и cpp, поэтому я посчитал что они будут вам не под силу, вы не потянете
но! жду ваш первый коммит в ихнюю кодовую базу на гитхабе
Здравствуйте, reversecode, Вы писали:
R>https://github.com/mongodb/mongo.git R>посмотрите и скажите что из С++ вы там понимаете
R>не, может конечно у них есть куча другой работы R>но вряд ли вы сможете хотя бы что то фиксить в той кодовой базе
Да C++ них вполне себе не сложный, иногда даже забавный; что интересно у них частенько длинные цепочки вызовов:
Здравствуйте, kaa.python, Вы писали:
KP>Да C++ них вполне себе не сложный, иногда даже забавный; что интересно у них частенько длинные цепочки вызовов:
KP>
Так подозреваю, что оператор -> переопределен, в случае нештатной ситуации будет брошено корректное исключение, стек отмотается, ничего не протухнет и не утечет?
KP>Если хочется сложных плюсов, где реально сильно не всякий поймет что происходит, надо к <span class='lineQuote level1'>KP>so5team в гости идти</span>
Вздрагиваю при воспоминании его постов в срачах про C++. Наверное, там "без бутылки не разобраться".
Тё>Так подозреваю, что оператор -> переопределен, в случае нештатной ситуации будет брошено корректное исключение, стек отмотается, ничего не протухнет и не утечет
Так а что там подозревать, если можно сходить в storage_engine_impl.cpp и за минуту убедиться, что возвращается обычный std::unique_ptr<TemporaryRecordStore>
Оператор -> перегружают обычно для умных указателей. Начиная с C++11 (а для тех кто знаком с boost, то года этак с 2000) нет ни одной причины писать очередную реализацию умного указателя вместо пары стандартных std::unique_ptr/shared_ptr
Важно писать код, безопасный или нейтральный по отношению к исключениям. Но примерно с 2000 вроде ничего нового в exception safety не прибавилось.
А вот умение ориентироваться в незнакомом коде — полезный навык, который у начинающих отсутствует.
KP>>Если хочется сложных плюсов, где реально сильно не всякий поймет что происходит, надо к <span class='lineQuote level2'>KP>>so5team в гости идти</span> Тё>Вздрагиваю при воспоминании его постов в срачах про C++. Наверное, там "без бутылки не разобраться".
Здравствуйте, PM, Вы писали:
PM>Там всё нормально, и имеет причины, почему сделано так.
Вздрагиваю от признания, что указатели для отписки не смог заставить надежно работать, и что использует хеш мапы для отписки.
PS серилизация уже стала православной в C++? Так и до рефлексии можно дойти.
Здравствуйте, PM, Вы писали:
PM>Важно писать код, безопасный или нейтральный по отношению к исключениям. Но примерно с 2000 вроде ничего нового в exception safety не прибавилось.
Код с подобной цепочкой вызовов нельзя считать безопасным. Ну а стандарты типа MISRA C++ явно запрещают вызовы для непроверенных указателей.
PM>Там всё нормально, и имеет причины, почему сделано так. Из последнего например, http://eao197.blogspot.com/2021/05/progc-json-dto.html
Да, но в отличие от кода в mongo, то eao197 пишет уже сильно не каждый C++ разработчик поймет и легко сможет поддерживать. Я бы испытывал некоторые сложности с поддержкой кода по ссылке выше.
Здравствуйте, kaa.python, Вы писали:
KP>Да, но в отличие от кода в mongo, то eao197 пишет уже сильно не каждый C++ разработчик поймет и легко сможет поддерживать. Я бы испытывал некоторые сложности с поддержкой кода по ссылке выше.
У него как то много плохочитаемого гемору и всё это ради чего?
Здравствуйте, CreatorCray, Вы писали:
CC>У него как то много плохочитаемого гемору и всё это ради чего?
Для получения гарантий корректности времени компиляции при этом не используя Haskell. Это довольно важно, как мне кажется, хотя принимая во внимание насколько это дорого с точки зрения сложности поддержки, позволить себе такое могут единичные компании с небольшим штатом.
Надо сказать, что у них не "канонический" плюсовый код. Что-то ближе к Qt или даже к Java. На мой взгляд, самый треш в плюсах начинается при метапрограммировании, особенно когда нужно поддерживать много настроек/платформ и весь код усеен ifdef-ами. Вот тогда действительно сложно понять что происходит. Сейчас используем бустовую стейт машину и если надо понять что происходит внутри, то сразу становится грустно. https://github.com/boost-ext/sml
Здравствуйте, PM, Вы писали:
PM>Оператор -> перегружают обычно для умных указателей. Начиная с C++11 (а для тех кто знаком с boost, то года этак с 2000) нет ни одной причины писать очередную реализацию умного указателя вместо пары стандартных std::unique_ptr/shared_ptr
Правильно, unique_ptr переопределяет оператор ->.
PM>Важно писать код, безопасный или нейтральный по отношению к исключениям. Но примерно с 2000 вроде ничего нового в exception safety не прибавилось.
nothrow- холиварная тема.
Здравствуйте, kaa.python, Вы писали:
KP>Для получения гарантий корректности времени компиляции при этом не используя Haskell. Это довольно важно, как мне кажется, хотя принимая во внимание насколько это дорого с точки зрения сложности поддержки, позволить себе такое могут единичные компании с небольшим штатом.
S>а еще говорят что свободная страна S>насколько я видел на собеседованиях в интерестных мне отделах Google Intel and MS там полно возрастных дядек S>хотя проблемма несомнено есть, если что вернусь домой буду кроликов выращивать
Сергей, возвращайся в Москву. Ты ГОДАМИ жалуешься на форуме, как тебе плохо в Америке и как бы ты хорошо себя чувствовал в Москве.
Бери билет и возвращайся.
(Я понимаю, что ты никуда не поедешь, это просто образ жизни такой — жаловаться на форуме).
Здравствуйте, Тёмчик, Вы писали:
PM>>Там всё нормально, и имеет причины, почему сделано так. Тё>Вздрагиваю от признания, что указатели для отписки не смог заставить надежно работать, и что использует хеш мапы для отписки.
Вроде по ссылке нет никаких указателей для отписки. Или это что-то из личного опыта?
Тё>PS серилизация уже стала православной в C++? Так и до рефлексии можно дойти.
С середины 2000-х все используют примерно один подход, как в boost.serialization — перечислять нужные поля в универсальном методе serialze(archive) для чтения/записи в archive.
С рефлексией времени выполнения нет проблем со времен старых добрых MFC, COM и Qt. Предложение для рефлексии во время компиляции где-то много лет лежит в комитете стандартизации. Если и будет когда-нибудь принято, то наверно для этого потребуется лет 20, как для модулей.
Начиная с C++14 есть трюк, позволяющий определить количество и типы публичных полей структуры без костылей и макросов. Например, при помощи библиотеки magic_get код:
struct my_struct { // no ostream operator defined!
std::string s;
int i;
};
int main() {
my_struct s{{"Das ist fantastisch!"}, 100};
std::cout << "my_struct has " << boost::pfr::tuple_size<my_struct>::value
<< " fields: " << boost::pfr::io(s) << "\n";
}
Напечатает
my_struct has 2 fields: {"Das ist fantastisch!", 100}
Проблема обычно с сериализацией в текстовый формат, где мы хотим иметь имя поля вместе со значением. Тогда дальше вот такого упрощения пока не продвинулись:
И если заглянуть в код куда-нибудь daw_json_parse_value.h то там будет не проще, чем в json_dto над которой работает eao197. Но пока вам не нужно слать pull requests, использование библиотеки для конечного пользователя выглядит не сложно.
Здравствуйте, kaa.python, Вы писали:
PM>>Важно писать код, безопасный или нейтральный по отношению к исключениям. Но примерно с 2000 вроде ничего нового в exception safety не прибавилось.
KP>Код с подобной цепочкой вызовов нельзя считать безопасным. Ну а стандарты типа MISRA C++ явно запрещают вызовы для непроверенных указателей.
Не вижу чем вызов на каждой сроке безопаснее. Упасть может на каждой из строк
auto ctx = opCtx->getServiceContext();
auto storage_engine = ctx->getStorageEngine();
auto store = storage_engine->makeTemporaryRecordStoreFromExistingIdent()
если нарушать контракты вызова функций.
С MISRA не сталкивался, но слышал мнения, что они сильно отстают от практик современного С++
Кстати, эти вызовы могут возвращать std::optional вместо указателей. И тогда можно попробовать монадический доступ к результатам. Или вдруг лет через 20 в C++ примут elvis operator .?
PM>>Там всё нормально, и имеет причины, почему сделано так. Из последнего например, http://eao197.blogspot.com/2021/05/progc-json-dto.html
KP>Да, но в отличие от кода в mongo, то eao197 пишет уже сильно не каждый C++ разработчик поймет и легко сможет поддерживать. Я бы испытывал некоторые сложности с поддержкой кода по ссылке выше.
Что значит поддерживать? Вы собираетесь добавлять туда новую функциональность, или исправлять ошибки? Если так, то да, потребуется опытный программист для этого. Иначе после обоснованного выбора просто надо взять и использовать в своем прикладном коде, генерируя быстрее business value для product owner а не изобретать в 100500 раз очередной велосипед.
Реализация стандартной бибилиотеки или многих частей boost тоже нетривиальна. Я предпочитаю не испытывать по этому поводу беспокойство. И изначально упомянутая MongoDB тоже используется как внешняя зависимость, а то и сервис.
Здравствуйте, Тёмчик, Вы писали:
Тё>Здравствуйте, PM, Вы писали:
PM>>Оператор -> перегружают обычно для умных указателей. Начиная с C++11 (а для тех кто знаком с boost, то года этак с 2000) нет ни одной причины писать очередную реализацию умного указателя вместо пары стандартных std::unique_ptr/shared_ptr
Тё>Правильно, unique_ptr переопределяет оператор ->.
Да. Но моя мысль была в выделенном. Даже не помню, когда последний раз писал свою реализацию operator->
PM>>Важно писать код, безопасный или нейтральный по отношению к исключениям. Но примерно с 2000 вроде ничего нового в exception safety не прибавилось. Тё>nothrow- холиварная тема.
Что такое nothrow? В С++ я знаю только про такое в контексте new
char* p = new (std::nothrow) char [MAX_UINT64]
да и то оно нужно только если писать специфичный allocator.
да весь С++ несложный, но были сомнения в знаниях Сергея по современному С++
но раз он прошел тех собеседование, значит он крут или в монго некому работать
TMU>Сергей, возвращайся в Москву. Ты ГОДАМИ жалуешься на форуме, как тебе плохо в Америке и как бы ты хорошо себя чувствовал в Москве. TMU>Бери билет и возвращайся. TMU>(Я понимаю, что ты никуда не поедешь, это просто образ жизни такой — жаловаться на форуме).
я к этому готовлюсь, просто собрать чемодан и вернуться глуппо тк 15 лет потерянно
похоже что бытие определяет сознание, это правильная мысль
можно почитать мои первые сообщени я на форуме, когда я попал на форум я снимал комнату с 10+ студентами в квартире, из изысков была бутылка пива или шеколадка в неделю,
часто ночевал в оффисе что бы сэкономить бензин и рессурс машины (это не метафора я реально так жил) но нытья на форуме не было
в 11 году я приехал в США
через год я узнал, что меня наняли потому что все программисты 7+ человек сами уволились в один день
еще через год я был единственный программист в Бостоновском оффисе тк остальные либо уволились либо их уволили
вторая компания
с моей точки зрения конфлик начался, что я вякнул что полтора года баг фикса и код типа 5000+ строк на функциию по 200+ аргументов и файлы 60 тыс строк это за педелеами добра
и зла, а мне указали мое место вилить и не вякать
мой бывший коллега писал, что его друг нанятый вместо меня был гибок и целеустремлен
ему даже доверили переписать библиотеку, правда еще через угод он почему то уволился со скандалом
в на гласдор о компании соотвествующие отзывы (я за 6 лет так и не написал, надо сходить исправиться, открыть людям глаза)
вот тут я слломался и началось нытье на форуме
16 год я в москве
денег нет, но есть работа, каждый день спорт, -15 кг веса, по выходным посещение БДСМ клуба и рок тусовок
подготовка к собеседованию в MS
возращаюсь через год и Трамп меняет закон и у меня 3 недели что бы найти работу
соглашаюсьь на второй оффер
2.5 года без отпуска и праздников, это меня вогнала в реальное уныние
уволился я сам так как не ыбло сил
как я узнал после меня уволилось еще 3 из 7 (один был техоня и работал с первого дня основания компании, сильно меня удивил уволнением)
текущая компания
когда я начал работать в тими было 4 человека я пятый
двое уже уволились
я третий на выходе
осталось два начальника но у них все школадно один получил патент на изобретение второй должность
мое резюме
несомненно я не дартаньян и софт скилов у меня нет
тем не менее основная моя проблемма я в США работал хер знает где но объяективно только последнюю работу я выбрал остальные у меня не было выбора шел куда брали
поэтому я пожалуй отдохну от форума и поодготовлюсь лучше к собеседованиям
Здравствуйте, PM, Вы писали:
Тё>>Правильно, unique_ptr переопределяет оператор ->.
PM>Да. Но моя мысль была в выделенном. Даже не помню, когда последний раз писал свою реализацию operator->
Из того, что Вы никогда не переопределяли оператор ->, не следует, что моё утверждение "оператор перегружен, все исключения отработают и стек размотается" неверно. И кстати, в давние времена моего плюсописательства, перегружал операторы рутинно.
PM>>>Важно писать код, безопасный или нейтральный по отношению к исключениям. Но примерно с 2000 вроде ничего нового в exception safety не прибавилось. Тё>>nothrow- холиварная тема.
PM>Что такое nothrow?
Сходите по вашей ссылке, почитайте. Со5тим обильно обмазывает свой код nothrow, наверное, думает, что так надёжнее.
Здравствуйте, PM, Вы писали:
PM>>>Там всё нормально, и имеет причины, почему сделано так. Тё>>Вздрагиваю от признания, что указатели для отписки не смог заставить надежно работать, и что использует хеш мапы для отписки.
PM>Вроде по ссылке нет никаких указателей для отписки. Или это что-то из личного опыта?
Это из постов состима в срачиках про плюсы.
Тё>>PS серилизация уже стала православной в C++? Так и до рефлексии можно дойти.
PM>С середины 2000-х все используют примерно один подход, как в boost.serialization — перечислять нужные поля в универсальном методе serialze(archive) для чтения/записи в archive.
При рефлексии не нужно руками перечислять.
PM>С рефлексией времени выполнения нет проблем со времен старых добрых MFC, COM и Qt. Предложение для рефлексии во время компиляции где-то много лет лежит в комитете стандартизации. Если и будет когда-нибудь принято, то наверно для этого потребуется лет 20, как для модулей.
Извините, не смог распарсить поток взаимоисключающих утверждений. Почитайте про рефлексию в понимании JVM, и ответьте, есть она в C++, или нет.
PM>Начиная с C++14 есть трюк, позволяющий определить количество и типы публичных полей структуры без костылей и макросов. Например, при помощи библиотеки magic_get код: PM>
Вы написали "без костылей" и тут же "при помощи волшебного костыля".
PM>Напечатает PM>
PM>my_struct has 2 fields: {"Das ist fantastisch!", 100}
PM>Проблема обычно с сериализацией в текстовый формат, где мы хотим иметь имя поля вместе со значением. Тогда дальше вот такого упрощения пока не продвинулись: PM>
PM>И если заглянуть в код куда-нибудь daw_json_parse_value.h то там будет не проще, чем в json_dto над которой работает eao197. Но пока вам не нужно слать pull requests, использование библиотеки для конечного пользователя выглядит не сложно.
И от кода использования, и от кода внутри указанных библиотек, вытекают глаза. После того, насколько лаконично и гибко такие вещи сделаны в Java.
Здравствуйте, Максим, Вы писали:
М>Надо сказать, что у них не "канонический" плюсовый код. Что-то ближе к Qt или даже к Java. На мой взгляд, самый треш в плюсах начинается при метапрограммировании, особенно когда нужно поддерживать много настроек/платформ и весь код усеен ifdef-ами. Вот тогда действительно сложно понять что происходит. Сейчас используем бустовую стейт машину и если надо понять что происходит внутри, то сразу становится грустно. https://github.com/boost-ext/sml
Это беда всех реализаций FSM на плюсах/джаве/дотнете.
Немного помогают подобные реализации, которые позволяют таблицу переходов определять явно — по крайней мере, все состояния и переходы автомата на ладони.
Здравствуйте, Тёмчик, Вы писали:
Тё>>>nothrow- холиварная тема.
PM>>Что такое nothrow? Тё>Сходите по вашей ссылке, почитайте. Со5тим обильно обмазывает свой код nothrow, наверное, думает, что так надёжнее.
кто-то перепутал nothrow и noexcept?
какая неожиданность
Здравствуйте, Тёмчик, Вы писали:
PM>>>>Оператор -> перегружают обычно для умных указателей. Начиная с C++11 (а для тех кто знаком с boost, то года этак с 2000) нет ни одной причины писать очередную реализацию умного указателя вместо пары стандартных std::unique_ptr/shared_ptr
Тё>>>Правильно, unique_ptr переопределяет оператор ->.
PM>>Да. Но моя мысль была в выделенном. Даже не помню, когда последний раз писал свою реализацию operator-> Тё>Из того, что Вы никогда не переопределяли оператор ->, не следует, что моё утверждение "оператор перегружен, все исключения отработают и стек размотается" неверно. И кстати, в давние времена моего плюсописательства, перегружал операторы рутинно.
Еще раз процитирую выделенное. Ладно, признаюсь, профессионально на С++ стал писать в 2002 году, так что мне действительно не довелось велосипедить собственные умные указатели, вектора, строки и т.п. для продакшена. Хватало всегда как-то стандартных и бустовских.
Перегружать операторы рутинно пачками много ума не надо, если не знать про boost.operators или std::rel_ops
А вот написание таких вещей в образовательных целях — это отличный способ разобраться как что устроено, такое я делал. Кстати, непрошенный бесплатный совет — если хотите завалить С++ программиста на собеседовании, попросите его реализовать std::vector или std::shared_ptr + weak_ptr. Если кандидат справился с заданием, то перед вами STL, или вы просто знаете С++ хуже кандидата.
PM>>>>Важно писать код, безопасный или нейтральный по отношению к исключениям. Но примерно с 2000 вроде ничего нового в exception safety не прибавилось. Тё>>>nothrow- холиварная тема.
PM>>Что такое nothrow? Тё>Сходите по вашей ссылке, почитайте. Со5тим обильно обмазывает свой код nothrow, наверное, думает, что так надёжнее.
Я об exception safety должен думать каждый рабочий день. А вот вы похоже только слышали звон и не в силах прочитать дальше заголовка на страничке википедии.
В современном С++ коде есть noexcept, но как и std::nothrow это лишь один из механизмов обеспечения некоторого уровня exception safety.
PM>А вот написание таких вещей в образовательных целях — это отличный способ разобраться как что устроено, такое я делал. Кстати, непрошенный бесплатный совет — если хотите завалить С++ программиста на собеседовании, попросите его реализовать std::vector или std::shared_ptr + weak_ptr. Если кандидат справился с заданием, то перед вами STL, или вы просто знаете С++ хуже кандидата.
amadeus в Boston просит на доске реализовать vector
не поверите, но на собеседовании в Пятерочку мск просят реализовать std::shared_ptr буиаге (спасибо хоть не на доске)
Здравствуйте, Тёмчик, Вы писали:
PM>>С рефлексией времени выполнения нет проблем со времен старых добрых MFC, COM и Qt. Предложение для рефлексии во время компиляции где-то много лет лежит в комитете стандартизации. Если и будет когда-нибудь принято, то наверно для этого потребуется лет 20, как для модулей. Тё>Извините, не смог распарсить поток взаимоисключающих утверждений. Почитайте про рефлексию в понимании JVM, и ответьте, есть она в C++, или нет.
Бывает, почитайте про рефликсию, может узнаете что она бывает не только в понимании JVM, раз уж мы обсуждаем ее в C++.
PM>>Начиная с C++14 есть трюк, позволяющий определить количество и типы публичных полей структуры без костылей и макросов. Например, при помощи библиотеки magic_get код: PM>>
Тё>Вы написали "без костылей" и тут же "при помощи волшебного костыля".
Ага, в стандартной библиотеке пока такого нет, как и многого другого. Но предыдущий код, на мой взгляд, короче и понятнее такого:
struct print_vars {
template <typename T>
void operator()(T const & x) const {
std::cout << '<' << typeid(x).name() << ' ' << x << '>';
};
};
// Your existing structstruct Foo
{
int i;
bool j;
char k[100];
};
// Generate an adapter allowing to view "Foo" as a Boost.Fusion sequence
BOOST_FUSION_ADAPT_STRUCT(
Foo,
(int, i)
(bool, j)
(char, k[100])
)
struct Foo f = { 33, false, "abcd" };
boost::fusion::for_each(f, print_vars());
PM>>И если заглянуть в код куда-нибудь daw_json_parse_value.h то там будет не проще, чем в json_dto над которой работает eao197. Но пока вам не нужно слать pull requests, использование библиотеки для конечного пользователя выглядит не сложно.
Тё>И от кода использования, и от кода внутри указанных библиотек, вытекают глаза. После того, насколько лаконично и гибко такие вещи сделаны в Java.
Вы не различаете разницу между простой использования и сложностью реализации.
Без проблем, оставайтесь на Java, отличный инструмент для оперденей, и индусокод проще писать. А что там ниже, под условной JVM, многим программистам сейчас не важно, как не важно пользователям смартфонов, что GPS работает на принципах СТО.
Здравствуйте, sergey2b, Вы писали:
S>Здравствуйте, PM, Вы писали:
PM>>А вот написание таких вещей в образовательных целях — это отличный способ разобраться как что устроено, такое я делал. Кстати, непрошенный бесплатный совет — если хотите завалить С++ программиста на собеседовании, попросите его реализовать std::vector или std::shared_ptr + weak_ptr. Если кандидат справился с заданием, то перед вами STL, или вы просто знаете С++ хуже кандидата.
S>amadeus в Boston просит на доске реализовать vector
У вас получилось? Оно поддерживает custom allocator? является exception safe? Умеет хранить move-only noexcept значения? Мне уже лень писать про еще десятки дьявольских мелочей. Если ответ на эти вопросы да, и у вас есть тесты это подтверждающие, то как оно будет работать с таким кодом:
class cowinotrid // short from complicated_with_non_trivial_dtor
{
std::string data;
cowinotrid(std::string data) : data(data)
{
for (int i = 0; i < 1000; ++i) data += data; // to be longer than small string optimization length
}
};
my_own_vector<cowinotrid> vec{ "hallo welt" };
while (vec.size() <= vec.capacity()) // i want to reallocate
{
vec.push_back(vec[0]);
}
assert(vec.size() == 2);
S>не поверите, но на собеседовании в Пятерочку мск просят реализовать std::shared_ptr буиаге (спасибо хоть не на доске)
Поверю. А вопрошающий знает про weak_ptr, make_shared()? С нуля или с единицы начинать подсчет ссылок? Какой memory_order использовать для счетчика ссылок? Выдавать ли значение счетчика ссылок наружу? Будет ли работать с move-only custom deleter?
работал с кодом такого крутого спеца как вы описали
знает и умеет применять правильно shared/week ptr
там где их нужно было поставить-применить он справился на 10 из 10
а там где нужно было показать знание предметной области
такого наговнокодил ... из того что я в процессе узнал, он бегал по гитхабу и копипастил код от туда(по предметной области)
так что да, знание векторов и шаред птр изнутри, нужно студентам на собеседования, собеседовать таких же студентов
Здравствуйте, PM, Вы писали:
PM>Еще раз процитирую выделенное. Ладно, признаюсь, профессионально на С++ стал писать в 2002 году, так что мне действительно не довелось велосипедить собственные умные указатели, вектора, строки и т.п. для продакшена. Хватало всегда как-то стандартных и бустовских.
Я начал тогда же, и "повелосипедить", как вы выразились, довелось. Ибо не всегда есть подходящая под задачу готовая библиотека, чтобы оптимальная производительность и расход памяти.
Здравствуйте, PM, Вы писали:
PM>>>если хотите завалить С++ программиста на собеседовании, попросите его реализовать std::vector или std::shared_ptr + weak_ptr. Если кандидат справился с заданием, то перед вами STL, или вы просто знаете С++ хуже кандидата.
Я был лучшего мнения о C++ программистах
S>>amadeus в Boston просит на доске реализовать vector
PM>У вас получилось? Оно поддерживает custom allocator? является exception safe? Умеет хранить move-only noexcept значения?
Если программист C++ понимает эти вещи- он их учтёт в реализации вектора. А если "программист C++" ака говнокодер вульгарис, кто утверждает, что на жава только опердни в индийском аутсорсе, что ж
PM>
В вашем примере ошибка- вектор здорового человека при заполнении удваивает capacity. Получится бесконечный цикл и вылет по OOM.
S>>не поверите, но на собеседовании в Пятерочку мск просят реализовать std::shared_ptr буиаге (спасибо хоть не на доске)
PM>Поверю. А вопрошающий знает про weak_ptr, make_shared()? С нуля или с единицы начинать подсчет ссылок? Какой memory_order использовать для счетчика ссылок? Выдавать ли значение счетчика ссылок наружу? Будет ли работать с move-only custom deleter?
Очевидно, что такие тривиальные вещи можно просто запомнить, обжегшись пару раз.
Здравствуйте, Тёмчик, Вы писали:
Тё>Очевидно, что такие тривиальные вещи можно просто запомнить, обжегшись пару раз.
Я со своей колокольни думаю, что вы с коллегой тут просто балуетесь, потому что std::vector слишком сложная и объёмная штука, чтобы его можно было так просто реализовать на собеседовании. Уверен, что полноценную реализацию даже спрашивать не будут, а максимум накидать код с демонстрацией концепции.
Здравствуйте, Тёмчик, Вы писали:
PM>>>>если хотите завалить С++ программиста на собеседовании, попросите его реализовать std::vector или std::shared_ptr + weak_ptr. Если кандидат справился с заданием, то перед вами STL, или вы просто знаете С++ хуже кандидата. Тё>Я был лучшего мнения о C++ программистах
Как бы вы оценили свои знания C++ по 10-бальной шкале, где 0 — не знаю совсем?
S>>>amadeus в Boston просит на доске реализовать vector
PM>>У вас получилось? Оно поддерживает custom allocator? является exception safe? Умеет хранить move-only noexcept значения? Тё>Если программист C++ понимает эти вещи- он их учтёт в реализации вектора. А если "программист C++" ака говнокодер вульгарис, кто утверждает, что на жава только опердни в индийском аутсорсе, что ж
Если кандидат начнет писать на собеседовании вектор с учетом всех этих вещей, то ему и дня может не хватить. Вообще, есть утверждение, что невозможно реализовать std::vector, оставаясь в рамках стандарта C++, т.к. некторые вещи можно сделать только компиляторо-/платформо- зависимым способом.
Тё>В вашем примере ошибка- вектор здорового человека при заполнении удваивает capacity. Получится бесконечный цикл и вылет по OOM.
Там уже в конструкторе cowinotrid есть OOM, и ошибка которую никто не заметил. Про удвоение емкости при нехватке места нет никаких гарантий, емкость может увеличиваться любым способом.
Но для вас же это не сложнее переворота строки и вы сможете реализовать минимальный аналог std::vector который пройдет такой тест?
int main()
{
my_vector<std::string> vec;
vec.push_back("hallo welt! the string is longer than 24 characters to run over SSO");
for (int i = 0; i <1000; ++i)
{
vec.push_back(vec[0]);
}
}
S>>>не поверите, но на собеседовании в Пятерочку мск просят реализовать std::shared_ptr буиаге (спасибо хоть не на доске)
PM>>Поверю. А вопрошающий знает про weak_ptr, make_shared()? С нуля или с единицы начинать подсчет ссылок? Какой memory_order использовать для счетчика ссылок? Выдавать ли значение счетчика ссылок наружу? Будет ли работать с move-only custom deleter? Тё>Очевидно, что такие тривиальные вещи можно просто запомнить, обжегшись пару раз.
Некоторым может быть даже очевидно, что можно и не запоминать, а прочитать книжку "C++ за 21 день" за день до собеседования.
Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?"
Здравствуйте, Anonymous123, Вы писали:
A>Сейчас посоветую суровый путь, но ведущий к 100% успеху. Критерий успеха — если ваше резюме попадает к HR в FAANG, то его откладывают в стопку для проведения телефонного скрининга.
Ерунда это, а не путь. Я им вообще никогда не писал, но что-то вот пишут и звонят постоянно.
Здравствуйте, PM, Вы писали:
PM>>>>>если хотите завалить С++ программиста на собеседовании, попросите его реализовать std::vector или std::shared_ptr + weak_ptr. Если кандидат справился с заданием, то перед вами STL, или вы просто знаете С++ хуже кандидата. Тё>>Я был лучшего мнения о C++ программистах
PM>Как бы вы оценили свои знания C++ по 10-бальной шкале, где 0 — не знаю совсем?
В бытность мою плюсником 9/10.
S>>>>amadeus в Boston просит на доске реализовать vector
PM>>>У вас получилось? Оно поддерживает custom allocator? является exception safe? Умеет хранить move-only noexcept значения? Тё>>Если программист C++ понимает эти вещи- он их учтёт в реализации вектора. А если "программист C++" ака говнокодер вульгарис, кто утверждает, что на жава только опердни в индийском аутсорсе, что ж
PM>Если кандидат начнет писать на собеседовании вектор с учетом всех этих вещей, то ему и дня может не хватить. Вообще, есть утверждение, что невозможно реализовать std::vector, оставаясь в рамках стандарта C++, т.к. некторые вещи можно сделать только компиляторо-/платформо- зависимым способом.
Что это за C++ программисты такое пошли беспомощные?
PM>Там уже в конструкторе cowinotrid есть OOM, и ошибка которую никто не заметил. Про удвоение емкости при нехватке места нет никаких гарантий, емкость может увеличиваться любым способом.
Ну извините, вы вывалили кучку жидкого кала, и предлагаете найти в нем все ошибки? Насчёт удвоения capacity- это обычная практика, для улучшения amortized complexity.
PM>Но для вас же это не сложнее переворота строки и вы сможете реализовать минимальный аналог std::vector который пройдет такой тест? PM>
PM>int main()
PM>{
PM> my_vector<std::string> vec;
PM> vec.push_back("hallo welt! the string is longer than 24 characters to run over SSO");
PM> for (int i = 0; i <1000; ++i)
PM> {
PM> vec.push_back(vec[0]);
PM> }
PM>}
PM>
В чём запинка? Если не вдаваться в move semantics, которую я уже не застал- вызвать копирующие конструкторы (через оператор "=". Возможно, какой-нить std::move нагуглить. Важно же найти сообразительность, а не зазубренность API
PM>Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?"
Нет, не должен.
Что вы понимаете под memory order? Вы хотели сказать, memory barrier? В общем случае, не нужно делать потокобезопасным, по причине что memory barrier небесплатен.
N> std::vector слишком сложная и объёмная штука, чтобы его можно было так просто реализовать на собеседовании. Уверен, что полноценную реализацию даже спрашивать не будут, а максимум накидать код с демонстрацией концепции.
А что, где-то на доске требуют полноценную реализацию с покрытием тестами?
В динамическом массиве ничего нет сложного.
Здравствуйте, Тёмчик, Вы писали:
Тё>А что, где-то на доске требуют полноценную реализацию с покрытием тестами? Тё>В динамическом массиве ничего нет сложного.
Я тебя уверяю, там и без тестов столько нюансов, что любого завалить можно. Это только со стороны кажется, что он прост, а только углубиться в его исходники, так сразу и понимаешь, как всё сложно
Здравствуйте, Nuzhny, Вы писали:
N>Я тебя уверяю, там и без тестов столько нюансов, что любого завалить можно. Это только со стороны кажется, что он прост, а только углубиться в его исходники, так сразу и понимаешь, как всё сложно
Плюсник утверждает, что даже такая простая вещь, как динамический массив- в плюсах реализована очень сложно?
Здравствуйте, Тёмчик, Вы писали:
Тё>Плюсник утверждает, что даже такая простая вещь, как динамический массив- в плюсах реализована очень сложно?
Я утверждаю, что std::vector — это намного больше, чем динамический массив.
Если бы я был программисто на Rust, то рассказывал бы, как сложна реализация двусвязного списка.
Здравствуйте, Тёмчик, Вы писали: Тё>Плюсник утверждает, что даже такая простая вещь, как динамический массив- в плюсах реализована очень сложно?
в С++ даже подсчет среднего двух чисел — неочевидная задача, а уж тем более динамический массив
Здравствуйте, Тёмчик, Вы писали:
PM>>Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?" Тё>Нет, не должен. Тё>Что вы понимаете под memory order? Вы хотели сказать, memory barrier? В общем случае, не нужно делать потокобезопасным, по причине что memory barrier небесплатен.
no hire
"For every complex problem, there is a solution that is simple, neat,
and wrong."
PM>>int main()
PM>>{
PM>> my_vector<std::string> vec;
PM>> vec.push_back("hallo welt! the string is longer than 24 characters to run over SSO");
PM>> for (int i = 0; i <1000; ++i)
PM>> {
PM>> vec.push_back(vec[0]);
PM>> }
PM>>}
PM>>
Тё>В чём запинка?
Тут много может быть сюрпризов. Ну например, такой вариант некорректной работы. vec[0] возвращает ссылку (https://en.cppreference.com/w/cpp/container/vector/operator_at) на нулевой объект, далее его нужно вставить в вектор. Во время push_back вы видите, что нижележащий массив мал по размеру, вы создаете новый большего размера, а старую память отпускаете (и ее в этот момент кто-то начинает использовать в своих целях). После этого вы начинаете вставлять в новый массив то, что находится по ссылке vec[0]. Но проблема в том, что там сейчас могут быть совсем другие данные. И подобных нюансов, я уверен, сотни. Не даром эти контейнеры десятилетиями вылизывают.
PM>Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?"
Дюже неприятно стало когда представил, что у меня такое на собеседовании спрашивают Гадость просто
М>И подобных нюансов, я уверен, сотни. Не даром эти контейнеры десятилетиями вылизывают.
Баги бывают. Это не значит, что первую реализацию вектора писали лучшие умы человечества многие годы. Степанов может быть, за пару часов накидал со всеми контрактами. А дальше уже баги исправлялись по мере их выявления.
М>Дюже неприятно стало когда представил, что у меня такое на собеседовании спрашивают Гадость просто
Поговорить о memory barrier всегда полезно. Это фича (машинная инструкция) мульти-процовых систем: пометить область памяти, что изменения в ней должны быть из кеша одного исполнительного блока спроецированы на другие исполнительные блоки.
Здравствуйте, Тёмчик, Вы писали:
PM>>Как бы вы оценили свои знания C++ по 10-бальной шкале, где 0 — не знаю совсем? Тё>В бытность мою плюсником 9/10.
Похвально но я же не HR, передо мной не надо выделяться на фоне индийских ребят с 10/10. Обычно при ответе на такой вопрос, я всегда вспоминаю про такой слайд из замечательной презентации Deep C (And C++):
PM>>Если кандидат начнет писать на собеседовании вектор с учетом всех этих вещей, то ему и дня может не хватить. Вообще, есть утверждение, что невозможно реализовать std::vector, оставаясь в рамках стандарта C++, т.к. некторые вещи можно сделать только компиляторо-/платформо- зависимым способом. Тё>Что это за C++ программисты такое пошли беспомощные?
Это называется опыт, который приходит с годами взамен студенческого ковбойства.
PM>>Там уже в конструкторе cowinotrid есть OOM, и ошибка которую никто не заметил. Про удвоение емкости при нехватке места нет никаких гарантий, емкость может увеличиваться любым способом. Тё>Ну извините, вы вывалили кучку жидкого кала, и предлагаете найти в нем все ошибки? Насчёт удвоения capacity- это обычная практика, для улучшения amortized complexity.
Про аттракцион "найди все ошибки в коде" в этой теме вообще не было речи. Я привел идею тестового случая для проверки вашей будущей реализации vector. Вы знакомы с понятием модульного тестирования? Когда для какого-то кода пишется тест, проверяющий корректность реализации.
Про стратегию роста динамических контейнеров пусть теоретики спорят, но в википедии пишут, что в Java ArrayList используется 1.5, что как бы ближе к теоретическому идеалу 𝜑
PM>>Но для вас же это не сложнее переворота строки и вы сможете реализовать минимальный аналог std::vector который пройдет такой тест? PM>>
PM>>int main()
PM>>{
PM>> my_vector<std::string> vec;
PM>> vec.push_back("hallo welt! the string is longer than 24 characters to run over SSO");
PM>> for (int i = 0; i <1000; ++i)
PM>> {
PM>> vec.push_back(vec[0]);
PM>> }
PM>>}
PM>>
Тё>В чём запинка? Если не вдаваться в move semantics, которую я уже не застал- вызвать копирующие конструкторы (через оператор "=". Возможно, какой-нить std::move нагуглить. Важно же найти сообразительность, а не зазубренность API
Так и в чем запинка? "Talk is cheap. Show me the code.” Покажите реализацию класса my_vector, проходящего тест выше. Публичный интерфейс пусть будет таким:
Вместо вопросов используйте подходящие типы. Дополнительные баллы если my_vector можно будет использовать в стиле C++11 т.е. так:
my_vector<int> vec{ 1, 2 3 };
int sum = 0;
for (auto&& x : vec) sum += x;
std::cout << sum;
PM>>Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?" Тё>Нет, не должен.
Скорее всего, после такого ответа будет итоговое "Спасибо, мы вам перезвоним."
Тё>Что вы понимаете под memory order? Вы хотели сказать, memory barrier? В общем случае, не нужно делать потокобезопасным, по причине что memory barrier небесплатен.
Нет, я хотел сказать memory_order, кандидат знающий C++ на 9/10 меня бы понял. Хотя, из-за безаппеляционности выделенного, я бы в этом начал сомневаться.
Здравствуйте, Максим, Вы писали:
Тё>>В чём запинка?
М>Тут много может быть сюрпризов. Ну например, такой вариант некорректной работы. vec[0] возвращает ссылку (https://en.cppreference.com/w/cpp/container/vector/operator_at) на нулевой объект, далее его нужно вставить в вектор. Во время push_back вы видите, что нижележащий массив мал по размеру, вы создаете новый большего размера, а старую память отпускаете (и ее в этот момент кто-то начинает использовать в своих целях). После этого вы начинаете вставлять в новый массив то, что находится по ссылке vec[0]. Но проблема в том, что там сейчас могут быть совсем другие данные. И подобных нюансов, я уверен, сотни. Не даром эти контейнеры десятилетиями вылизывают.
В точку! И насколько я помню, такой баг реально исправляли не так давно в какой-то из реализаций.
PM>>Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?"
М>Дюже неприятно стало когда представил, что у меня такое на собеседовании спрашивают Гадость просто
А то! Я без сразу сдался, сказав что не надо трогать memory_order, если не помнишь наизусть соотвествующий раздел в cppreference. И даже если его прочитать, подумать, еще раз почитать, то все равно не надо трогать.
Здравствуйте, PM, Вы писали:
PM>>>Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?" Тё>>Нет, не должен.
PM>Скорее всего, после такого ответа будет итоговое "Спасибо, мы вам перезвоним."
Спасибо за информацию, назови контору пожалуйста, чтоб случайно к вам не отправил резюме.
PM> насколько я помню, такой баг реально исправляли не так давно в какой-то из реализаций.
Зачем тогда это давать на интервью? Если сам не понимаешь, так и грамотного кандидата срежешь- ведь сравнивать с бумажкой где-нибудь запятая не совпадет.
PM>Я без сразу сдался, сказав что не надо трогать memory_order, если не помнишь наизусть соотвествующий раздел в cppreference. И даже если его прочитать, подумать, еще раз почитать, то все равно не надо трогать.
Мда. Индусы в Бангалоре повыше квалификацией будут.
Здравствуйте, Тёмчик, Вы писали:
Тё>>Что это за C++ программисты такое пошли беспомощные? PM>Так и в чем запинка? "Talk is cheap. Show me the code.” Покажите реализацию класса my_vector, проходящего тест выше. Публичный интерфейс пусть будет таким:
PM>Вместо вопросов используйте подходящие типы. Дополнительные баллы если my_vector можно будет использовать в стиле C++11 т.е. так:
my_vector<int> vec{ 1, 2 3 };
int sum = 0;
for (auto&& x : vec) sum += x;
std::cout << sum;
Восстановил поскипаное. Скромность — это хорошо, но хотелось бы увидеть код от знатока C++ с уровнем 9/10
PM>>>>Как бы вы ответили, например на вопрос "Должен ли shared_ptr быть потокобезопасным. И если да, то какой memory_order использовать для счетчика ссылок?" Тё>>>Нет, не должен.
PM>>Скорее всего, после такого ответа будет итоговое "Спасибо, мы вам перезвоним."
Тё>Спасибо за информацию, назови контору пожалуйста, чтоб случайно к вам не отправил резюме.
Я такое не спрашиваю, но можете вычеркивать TomTom, чтобы случайно не отправить туда резюме в 2016 году.
Здравствуйте, Тёмчик, Вы писали:
PM>> насколько я помню, такой баг реально исправляли не так давно в какой-то из реализаций. Тё>Зачем тогда это давать на интервью? Если сам не понимаешь, так и грамотного кандидата срежешь- ведь сравнивать с бумажкой где-нибудь запятая не совпадет.
А зачем спрашивать реализацию std::reverse()? У каждого свои способы поддержания беседы
PM>>Я без сразу сдался, сказав что не надо трогать memory_order, если не помнишь наизусть соотвествующий раздел в cppreference. И даже если его прочитать, подумать, еще раз почитать, то все равно не надо трогать. Тё>Мда. Индусы в Бангалоре повыше квалификацией будут.
Может быть некоторые и будут. Я нисколько не стесняюсь говорить, что cppreference.com — никогда не закрываемая вкладка у меня в браузере. Но хотелось бы увидеть ваш C++ код my_vector из соседней ветки попинайте пожалуйста резюме, чтобы было с чем сравнивать.
Здравствуйте, PM, Вы писали:
PM>Восстановил поскипаное. Скромность — это хорошо, но хотелось бы увидеть код от знатока C++ с уровнем 9/10
Ещё раз, для особо одаренных, 9/10 было в мою бытность C++ -м. В последний раз я прошёл тест на C++ IKM 99/100 в сентябре 2011г. Что ты докопался?
Здравствуйте, PM, Вы писали:
PM>А зачем спрашивать реализацию std::reverse()?
Я хз зачем спрашивать "реализацию std::reverse". Спрашивать "напиши разворот массива inplace на любом языке" я считаю правильно, чтоб отсеять таких, кто квадрат влепит.
PM>Может быть некоторые и будут. Я нисколько не стесняюсь говорить, что cppreference.com — никогда не закрываемая вкладка у меня в браузере.
Да и так видно, что изучение стандарта C++ для тебя- как изучение молитв для попа.
Здравствуйте, Тёмчик, Вы писали:
PM>>Восстановил поскипаное. Скромность — это хорошо, но хотелось бы увидеть код от знатока C++ с уровнем 9/10 Тё>Ещё раз, для особо одаренных, 9/10 было в мою бытность C++ -м. В последний раз я прошёл тест на C++ IKM 99/100 в сентябре 2011г. Что ты докопался?
То есть написать простейший динамический массив не можешь? "В динамическом массиве ничего нет сложного."
Так ты из беспомощных программистов которые для собеседования выучили только разворот строки. Ясно-понятно.
Здравствуйте, Тёмчик, Вы писали:
PM>>А зачем спрашивать реализацию std::reverse()? Тё>Я хз зачем спрашивать "реализацию std::reverse". Спрашивать "напиши разворот массива inplace на любом языке" я считаю правильно, чтоб отсеять таких, кто квадрат влепит.
Ну пока что ты тут ни строчки кода не можешь привести.
PM>>Может быть некоторые и будут. Я нисколько не стесняюсь говорить, что cppreference.com — никогда не закрываемая вкладка у меня в браузере. Тё>Да и так видно, что изучение стандарта C++ для тебя- как изучение молитв для попа.
Неа, я пользуюсь справочной информацией по стандартной библиотеке, в основном, чтобы посмотреть какая из 12 перегруженных std:string::find() подойдет. Разделы про язык мне для практической работы редко требуются, достаточно следить за развитием инструмента, которым пользуюсь каждый день.
А вот ты много лет подряд зачем-то упорно демонстрируешь полное непонимание в самых различных темах.
Здравствуйте, PM, Вы писали:
PM>Image: Stroustrup_cpp_knowledge_800x.png
Так это еще только теоретические знания стандарта, а если добавить необходимые в реальном мире знания систем сборки и управления зависимостями, то в среднем по больнице будет 3-4 будет в самом лучшем случае.
Здравствуйте, Skorodum, Вы писали:
PM>>Image: Stroustrup_cpp_knowledge_800x.png S>Так это еще только теоретические знания стандарта, а если добавить необходимые в реальном мире знания систем сборки и управления зависимостями, то в среднем по больнице будет 3-4 будет в самом лучшем случае.
Согласен, но сборка, зависимости — это прикладные знания, которые в каждой компании свои, и со временем меняются. Кто сейчас вспомнит про scons, или как в MSBuild добавить флаг компилятора для одного файла в Release конфигурации.
Хотя, как предмет разговора, ответ вопрос "что вы использовали на предыдущем месте работы для сборки и управления зависимостями" вполне может продемонстрировать кругозор и опыт работы кандидата (и интервьюера, если у него тоже спросить "а вы что используете?")
Тё>Спрашивать "напиши разворот массива inplace на любом языке" я считаю правильно, чтоб отсеять таких, кто квадрат влепит.
Не понял, Темыч, что нужно сделать, получить элементы массива в противоположном порядке? Тут ведь просто swap элементов по индексу от 0 до size/2? Как тут можно сделать квадратичную сложность?
Здравствуйте, PM, Вы писали:
PM>Согласен, но сборка, зависимости — это прикладные знания, которые в каждой компании свои, и со временем меняются.
Прикладные, но без них теоритеческие знания в значительной степени бесполезны. Толку-то уметь собирать "Hello World" в IDE, когда в реальном проекте множество внешних зависимостей, несколько поддерживаемых компиляторов, кодогенирация и сборка под разные архитектуры. И для того, чтобы все это вместе работало нужны монстры типа CMake, у которых нюансов не меньше, чем у std::vector.
Поэтому даже в теории ни то что "10", даже "8" вряд ли достижимо. Так что когда человек заявляет я знаю на "9", это
PM>Кто сейчас вспомнит про scons, или как в MSBuild добавить флаг компилятора для одного файла в Release конфигурации.
+1
PM>Хотя, как предмет разговора, ответ вопрос "что вы использовали на предыдущем месте работы для сборки и управления зависимостями" вполне может продемонстрировать кругозор и опыт работы кандидата (и интервьюера, если у него тоже спросить "а вы что используете?")
Я когда хожу на собеседования всегда это спрашиваю и даже прошу показать по возможности. Хорошо показывает уровень бардака/велосипедостроения. 10 из 10 никогда не видел.
S>в реальном проекте множество внешних зависимостей, несколько поддерживаемых компиляторов, кодогенирация и сборка под разные архитектуры. И для того, чтобы все это вместе работало нужны монстры типа CMake, у которых нюансов не меньше, чем у std::vector.
Ага, в плюсах, зачастую, это неменьшая боль чем простыни темплейтов Может быть победит в итоге какая-нибудь связка типа Cmake+Conan и хоть тут будет порядок. Ну и все-таки великое благо, когда подобные вещи идут из коробки, по типу как у Раста и Го.
Здравствуйте, Максим, Вы писали:
М>Ага, в плюсах, зачастую, это неменьшая боль чем простыни темплейтов Может быть победит в итоге какая-нибудь связка типа Cmake+Conan и хоть тут будет порядок.
Вроде побеждает, но это все равно боль из-за необходимости и/или желания поддерживать обратную совместимость, изначально кривой архитектуры и языка в CMake и кривой организации самих плюсовых проектов, которую уже быстро и легко не изменить.
М>Ну и все-таки великое благо, когда подобные вещи идут из коробки, по типу как у Раста и Го.
И это огромное преимущество.
Здравствуйте, PM, Вы писали:
PM>>>Восстановил поскипаное. Скромность — это хорошо, но хотелось бы увидеть код от знатока C++ с уровнем 9/10 Тё>>Ещё раз, для особо одаренных, 9/10 было в мою бытность C++ -м. В последний раз я прошёл тест на C++ IKM 99/100 в сентябре 2011г. Что ты докопался?
PM>То есть написать простейший динамический массив не можешь? "В динамическом массиве ничего нет сложного."
Могу, на нескольких языках. Но ведь это ты ударился в отговорки "написать вектор очень слоооожно, в векторе много граааабель". Ну так напиши свой вектор- прототип, который демонстрирует концепт.
PM>Так ты из беспомощных программистов которые для собеседования выучили только разворот строки. Ясно-понятно.
Я вообще не готов проходить технические собеседования .
Здравствуйте, RonWilson, Вы писали:
RW>Здравствуйте, CreatorCray, Вы писали:
CC>>Оформление конечно мог и конвертор попортить, потому как в свойствах документа видно его оригинальное название (дада, с фамилией) и там docx.
RW>вот интересно, а кто это superuser?
Тё>Поговорить о memory barrier всегда полезно. Это фича (машинная инструкция) мульти-процовых систем: пометить область памяти, что изменения в ней должны быть из кеша одного исполнительного блока спроецированы на другие исполнительные блоки.
Здравствуйте, Тёмчик, Вы писали:
PM>>>>Восстановил поскипаное. Скромность — это хорошо, но хотелось бы увидеть код от знатока C++ с уровнем 9/10 Тё>>>Ещё раз, для особо одаренных, 9/10 было в мою бытность C++ -м. В последний раз я прошёл тест на C++ IKM 99/100 в сентябре 2011г. Что ты докопался?
PM>>То есть написать простейший динамический массив не можешь? "В динамическом массиве ничего нет сложного." Тё>Могу, на нескольких языках. Но ведь это ты ударился в отговорки "написать вектор очень слоооожно, в векторе много граааабель". Ну так напиши свой вектор- прототип, который демонстрирует концепт.
Слушай, ну ведь любой может подняться по ветке выше и увидеть, что ты себя объявил экспертом и написал
В чём запинка? Если не вдаваться в move semantics, которую я уже не застал- вызвать копирующие конструкторы (через оператор "=". Возможно, какой-нить std::move нагуглить. Важно же найти сообразительность, а не зазубренность API
Так и в чем запинка? "Talk is cheap. Show me the code.” Покажите реализацию класса my_vector, проходящего тест выше.
PM>>Так ты из беспомощных программистов которые для собеседования выучили только разворот строки. Ясно-понятно. Тё>Я вообще не готов проходить технические собеседования .
Здравствуйте, gardener, Вы писали:
Тё>>Поговорить о memory barrier всегда полезно. Это фича (машинная инструкция) мульти-процовых систем: пометить область памяти, что изменения в ней должны быть из кеша одного исполнительного блока спроецированы на другие исполнительные блоки.
G>Вот например ARM, вот например в нем инструкции https://developer.arm.com/documentation/dui0489/c/arm-and-thumb-instructions/miscellaneous-instructions/dmb--dsb--and-isb G>Где ты там видишь пометку области памяти?
G>Барьеры это одно, когерентность кешей это другой.
Вообще атомарные операции на x86 расслабили программистов. Мне попадались такие, кто до сих пор думает что какой-нибудь `volatile int` это норма для счетчика в многопоточной среде. Нуачо, работает же (вроде бы, на Visual С++ и однопроцессорной системе).
VF>Год назад мой агент настойчиво рекомендовал сократить опыт до ~10 лет; я сократил до 15 (было >30). VF>Советовал так же подчистить и LinkedIn. И убрать год из Education VF>Все это помогает только на этапе screening, т.к. при встрече это все становится очевидным... VF>Несколько лет назад я хвастался, что начал программировать не перфокартах. Теперь перестал.
Если всё это мешает — то ИМХО ну их нафиг такие конторы. У нас в коллективе работает человек, который помнит всякие там миникомпьютеры, VAX, PDP и т.д. Я так полагаю, вряд ли в американском подлиннике поздних 70-х, а скорее советские клоны, запоздавшие на десятилетие. Несколько человек писали под 286. Нубов типа меня, начавших с Pentium MMX, вообще считают щенками
UVV>А чо в смысле? Все в faang'ах должны поработать што ле?
Зачем обязательно в ФААНГ'ах? Даже среди мелочёвки есть, так сказать, "широко известные в узких кругах", а иногда даже и культовые, конторы.
Здравствуйте, PM, Вы писали:
PM>Так и в чем запинка? "Talk is cheap. Show me the code.” Покажите реализацию класса my_vector, проходящего тест выше.
Ещё раз. Я не пишу с 2011 на C++. В 2011 было 9/10 знание. Сейчас мне нахрен не упало что-то там открывать стандарт (который изменился) и доказывать анонимусу в интернете
PM>>>Так ты из беспомощных программистов которые для собеседования выучили только разворот строки. Ясно-понятно. Тё>>Я вообще не готов проходить технические собеседования .
PM>Ну вот, а разговоров то было на 9/10.
Если ты утратил контекст- последние годы я провожу технические собеседования.
Видно опытного человека, но при этом нифига не умеющего писать резюме. Выкинуть нужно буквально всё.
Может продемонстрировать Вам собственный, более-менее работающий, стиль написания? При том, что никаких попсовых книжек по составлению резюме я в жизни не читал и не собираюсь, к агентам тоже не обращался, красотами и модными сервисами пренебрегаю – оформление невзрачное монохромное одношрифтовое. А в плане, собственно, C++ — пожалуй чутка послабее Вас буду.
PS. Проблемка только в одном. Даже если я вычеркну все имена собственные — некоторые нюансы всё равно меня выдадут и деанонимизируют. Поэтому придётся подождать — переделка "боевого заряда" в "учебный" займёт некоторое время.
Здравствуйте, CreatorCray, Вы писали:
Тё>>Это очень круто! Я не разбираюсь настолько глубоко, но поговорить о таких вещах всегда полезно.
CC>А щёки то как надувал про "9/10"
В том тесте C++ ничего не было про когерентность кэшей ARM. Поэтому да, 99/100 в IKM и 5/5 в брайнбенчах до того- вполне дают мне право заявлять 9/10 на момент профессионального использования. А вот когда чувак профессионально использует C++ сейчас и заявляет, что написать вектор на доске (явно же что proof of concept) и мотивирует это "слоожно". Ну что, слабаки нам не нужны.
Здравствуйте, Тёмчик, Вы писали:
Тё>В том тесте C++ ничего не было про когерентность кэшей ARM.
Вот потому подобные тесты в общем то говно бесполезное.
Тё> Поэтому да, 99/100 в IKM и 5/5 в брайнбенчах до того- вполне дают мне право заявлять 9/10 на момент профессионального использования.
Заявлять про 9/10 в тесте — да. Но не в С++.
Тё> А вот когда чувак профессионально использует C++ сейчас и заявляет, что написать вектор на доске (явно же что proof of concept) и мотивирует это "слоожно".
Тебе тут уже показали сколько надо учесть чтоб написать нормальный вектор, чтоб не глючил на сценариях современного C++.
Ну и досок чтоб вмещали хотя бы полтыщи строк я не встречал.
Тё> Ну что, слабаки нам не нужны.
Здравствуйте, CreatorCray, Вы писали:
Тё>>В том тесте C++ ничего не было про когерентность кэшей ARM. CC>Вот потому подобные тесты в общем то говно бесполезное.
Позволяют отсеять не знающих язык.
Тё>> Поэтому да, 99/100 в IKM и 5/5 в брайнбенчах до того- вполне дают мне право заявлять 9/10 на момент профессионального использования. CC>Заявлять про 9/10 в тесте — да. Но не в С++.
Да что ты.
Тё>> А вот когда чувак профессионально использует C++ сейчас и заявляет, что написать вектор на доске (явно же что proof of concept) и мотивирует это "слоожно". CC>Тебе тут уже показали сколько надо учесть чтоб написать нормальный вектор, чтоб не глючил на сценариях современного C++.
И что нужно учесть, когерентность? Напиши вектор, чтобы работал с plain типами.
CC>Ну и досок чтоб вмещали хотя бы полтыщи строк я не встречал.
Какие полтыщи? О чём ты вообще?
Здравствуйте, Тёмчик, Вы писали:
CC>>Ну и досок чтоб вмещали хотя бы полтыщи строк я не встречал. Тё>Какие полтыщи? О чём ты вообще?
И правда, в более менее современной версии std::vector ~3.5К строк