Comments 25
Звучит здраво, вы молодцы, что поддерживаете студентов, так держать!
Спасибо, что поддерживаете студентов не только морально, но и материально :)
Со студентами НАДО заниматься. Хорошо, когда компания берет себе junior и развивает.
Объяснение того, почему вызов функции f2() заставляет программу вылететь с SEGFAULT’ом, находится для большинства студентов далеко за гранью понимания.

Я лет двадцать на плюсах пишу, но тоже не вижу, как программа может вылететь с SEGFAULT при вызове f2().

UPD: А, все, увидел. Но так-то это от системы зависит, и вполне может не стрельнуть. 16 Мб на стеке вполне можно отводить, скажем, в линуксе — главное правильно rlimit настроить.
Вот я тоже долго думал в чем подвох.

Может быть потому что у самого уже давно привычка объявлять локальные переменные большого размера типа d2 как static.

Ну а вообще-то размер стека настравивается опциями линкера
Если нет, то нет :-)

Ну трудно от студента требовать чтобы он на уровне подсознания в голове держал столько разных разностей. Понятно, что с опытом некоторые вещи становятся очевидными, но не сходу.
Я студент, ценник за знания такого рода будет трезначным. Но могу не заморачиваться, вам как?
Уже эти разводки по раз 5 слышал. Реальность такова, что вопервых студентов рассматривают как дешевую раб силу. Второе никто не заинтересован изначально в студентах, ВУЗ не учит и не научит тому, что требуется для работы. Слышу вечно вздохи аххх, нету норм кадров — бред полный, у меня знакомый 16 лет имеет почти теже знания, что и я, разве что опыта меньше.
Парадокс в том, что если бы никто не ждал такие знания, их бы никто не спрашивал
Честно говоря, для меня все зависит от человека. Вот не так двано. Два новых разработчика. Один… Ну полный ноль. Только после института, да еще и не профильный (т.е. техническое, но не информатика). Второй доучивается, но вроде как какой-то опыт разработки имеет.

На собеседовании первого взяли со вздохом — нужно было человека. Взяли стажером, на подставки.
Второй произвел впечатление — берем-берем-берем.

Первый — чистый лист. поначалу даже алгоритмического мышления нет. Первые учебные задачи с ним разжевывали до азов. Но. Все что ему хоть раз сказали, все откладывается в голове. В результате стремительный прогресс, через три месяца безоговорочно в штат (хотя стажировка на полгода была). Сейчас чуть больше полугода прошло — уже вполне самостоятельный разработчик. Вдумчивый, аккуратный, основательный.

А со вторым… Все еще вопросы. Есть какая-то лихость — быстро слабать и скинуть. В результате сплошные возвраты на доработку. Все еще нужно кодревью делать и опекать.

Так что все от человека… Я скорее буду просто разговаривать, без замороченых тестов. Мне лично это больше даст чем формальное тестирование. Ибо завалить можно практически любого — ну вот скажите мне, чем опасна группа активации *CALLER в программе, создающей временную таблицу в QTEMP :-)
И тонкости поведения локальных, глобальных, статических переменных и файловых дескрипторов с разных типа групп активации (*NEW, *CALLER, именованых).
Это вопросы, которые для меня актуальны. Ибо там есть неочевидные тонкости, которые могут приводить к падению программы. А для большинства тут это просто набор слов.

Так что еще раз — нормальный человек с правильным устройством мозгов. Остальное на месте впитает. Было бы куда.
Не уловили смысл моего посыла. О чем статья? Если прочитать начало то там на самом деле просто смешной набор слов. Всем давно понятно, что апелировать к ВУЗам бессмысленно, жаловаться — бессмысленно. У ВУЗа стоит цель набрать, обучить, выпустить. Тут нет качественно и трудоустройство. Смысла говорить дальше и рассуждать, а нужны ли вузы в принципе как форма образования нет. Особого внимания разве что заслуживает кусок про джуниора которому чего то там не хватило. Особого внимания заслуживает перл про «Например, в случае C/C++ большинство студентов даже старших курсов не в состоянии внятно объяснить разницу между статической, динамически распределяемой и стековой памятью», потому как стандарт такого не определяет бугагащечки а оперирует такими понятиями как storage duration, memory model (ну я могу быть не прав год не кодил на крестах в голове пепел, но крайне уверен что так, потому как с++ старается быть платформонезависмым), особого внимания заслуживает то что указанны языки через дифис. Потом дан кусок кода стиль которого далек от каноническного современного с++ и любого гайдлайна. Далее идет туфта про то какие Dell хорошие, хотя сами они признают, что вынужденны этим заниматься так как кадров не хватает. Еще удовольствие вызывает часть описание стажировки, так и не понял каким образом это происходит и говорим ли мы о тк рф или о Письме Госкомвуза РФ №18-34-44ин/18-10. Но интерес то в чем, в том что нет гарантии, есть только «мы видим на собеседовании». Проще говоря, статья кривой пиар который видно даже сеньор не видел, могли бы и проверить че вообше постят, а в конце отберут как правило как раз тех кто ответил на вопросы, ответы на которые конечно никто не ждет.
P.S. Сеньор дела если это написал наверное краснеит сидит, хотел завалить завалили его)
стандарт такого не определяет бугагащечки а оперирует такими понятиями как storage duration, memory model

Если бы на собеседовании была цель проверить, хорошо ли кандидат зазубрил буквы из стандарта, это имело бы значение. Но мнится мне, цель собеседования немножко в другом — узнать, понимает ли кандидат разницу между разными типами памяти.

особого внимания заслуживает то что указанны языки через дифис.

В этом отрывке прекрасно все. Особенно умилил «дифис». :)

Потом дан кусок кода стиль которого далек от каноническного современного с++ и любого гайдлайна.

Цель примера — не в том, чтобы поразить кандидата красотой стиля. И вообще, неизвестно еще, на какой проект берут кандидата. Может, там суровое легаси и кровавый энтерпрайз.

P.S. Сеньор дела если это написал наверное краснеит сидит, хотел завалить завалили его)

Думаю, он неприкрыто ржет, читая ваши разоблачения. :)
А что вы понимаете под типами памяти? Или вы считаете точность и педатичность плохим качеством?
Ошибка, конечно слэш.
Тогда в чем смысл? Выше вы указали, что проверяется не как хорошо кандидат зазубрил стандарт, но поведение языка с++ описывается стандартом. Я плохо понимаю.
Относиться с юмором хорошо, но мне было бы стыдно, напиши я о плохой подготовки студентов и допусти сам ошибки как в терминологии, так и в сути поставленных вопросов. Будь это мой личный блог или чат, я бы наверное пережил, но все же от лица компании, мне было бы стыдно, ведь я представляю не лично себя.
А что вы понимаете под типами памяти? Или вы считаете точность и педатичность плохим качеством?

Я считаю, что люди в команде должны друг друга понимать. В большинстве случаев для взаимопонимания вполне хватает общеупотребимых названий — например, та же «стековая память». А это значит, что если на собеседовании кандидат требует точных цитат из стандарта и отказывается понимать сказанное не по уставу — скорее всего, нам не по пути. Но это лично мое мнение.

Тогда в чем смысл? Выше вы указали, что проверяется не как хорошо кандидат зазубрил стандарт, но поведение языка с++ описывается стандартом. Я плохо понимаю.

Смысл прежде всего — в том, чтобы понять, на каком уровне кандидат понимает язык.

Относиться с юмором хорошо, но мне было бы стыдно, напиши я о плохой подготовки студентов и допусти сам ошибки как в терминологии, так и в сути поставленных вопросов.

Статья не обучающая — посему тут вполне допустимы расхожие термины.
Всегда можно придумать как сделать sigfault. А давайте заалоцируем функцию на странице с специальными правами и спросим студента почему… Не слишком легко, давайте мучить его свиньей и лукапами… не слишком легко давайте мучить его линковкой… не слишком легко, может помучаем его барьерами памяти. Всегда можно найти то что ты не знаешь или забыл да еше в таком языке как с++. Я бы назло любое ожидаемое поведение экзаменуемого перевел в неожидаемое поведение, а потом бы спрашивал — а как так?
«почему вызов функции f2() заставляет программу вылететь» — еше и так отвратительно сформулировали вопрос, вопервых не вызов, а исполнение, во вторых не вылететь, а аварийно завешиться, ну или получить сигнал. Так что любой ответ, что при вызове функции не произойдет аварийного завершения верен. Кстати отличная идея, так бы я и ответил, а потом бы наблюдал как экзаминатор бесится и говорит что я не прав
Кстати отличная идея, так бы я и ответил, а потом бы наблюдал как экзаминатор бесится и говорит что я не прав

Как бы вам объяснить-то…
Собеседование — это не экзамен, хотя и выглядит похоже. Задача собеседующего — понять, насколько студент совместим с будущей работой. Знания здесь, конечно, важны, но есть вещи и поважнее. Например, совместимость с коллективом, понимание принципов работы инструментов (в т.ч. компьютера, компилятора и проч). Плюс — желание разбираться в этом дальше. Плюс — умение понять, чего от студента, собственно, хотят.

В данном конкретном случае вы бы своим ответом продемонстрировали немотивированную агрессию и нежелание сотрудничать. На месте собеседующего я бы пожал плечами и вежливо закончил беседу.
«Все, что было в Вегасе, останется в Вегасе! Кроме герпеса его привозят с собой.»
Собеседование это конечно прежде всего обоюдный процесс, но если ты осмелился показать детали обшественности, причем твои вопросы содержат ошибки или знания не полные, и ты начинаешь вздыхать. эххх, кандидаты ничего не могут/не знают будь готов понести отвественность.
Это раз.
Второе, я как собеседуемый не могу быть уверен, совершил ли экзаменатор не точность в вопросе или это ловушка.
Третье, я не люблю ребячества и игры в самых умных. У меня сложилось пока что плохое впечатление о компании dell, каюсь импульсивен, но будь это собеседование в котором я бы почувствовал такое отношение сверху вниз, поступил бы так же.
Пример и описание были намеренно упрощены для кандидатов, почти не имеющих практического опыта. Но построены на основе реальной ситуации, когда программа аварийно завершилась с SIGSEGV (причём в условиях, когда получение core dump было затруднено). И интересно было посмотреть, как кандидат подойдёт к анализу, сможет ли увидеть, что массивы d1 и d2 размещены в областях памяти, обладающих различными свойствами. Это понимание, в отличие от барьеров памяти, должно быть заложено в самом начале изучения курса. Да, поведение специфично для платформы, но именно разработка на С++ под Linux и была указана в описании позиции.
Вы передергиваете. Упрощение примера, не является оправданием для введения кандидата в заблуждение вопрос поставлен «почему вызов функции f2() заставляет программу вылететь», но вызов функции не завтавляет программу вылететь, с++ не терпит условностей. Заставляет «вылететь» исполнение. Или задавайте более обший вопрос — есть ли в этом коде ошибки? Почему так происходит? Или уже задавайте верный вопрос. Вы искажаете стандарт. Отсутсвие опыта у кандидата не повод использовать волности, все допускают ошибки, надо признать и исправить.
Так что любой ответ, что при вызове функции не произойдет аварийного завершения верен.
Достаточно чуть-чуть перефразировать вопрос, например «При вызове функции f2() на нашей машине, программа завершается с SEGFAULT. Почему?»
и после этого буквоедство из разряда «при вызове не произойдет аварийного завершения» уже не прокатит :)
Добрый день! В статье, как говорится, «много буков», но в между строк читается тривиальная цепочка рассуждений.

1.Выпускники ИТ-факультетов современных ВУЗов не обладают навыками и знаниями для оптимизации программ под возможности «железа», на котором ПО будет работать.
2. Платить специалистам с соотвествующим опытом работы нужно хорошие деньги и сами специалисты часто в дефиците.
3. Что делать? Все просто. Давайте будем «хантить» талантливых студентов на младших курсах, с помощью фактически бесплатного участия в побочных проектах формировать у них узкую специализацию под наши нужды, попутно вкладывать в голову, что они «избранные», а компания, куда их отобрали для стажировки — «компания их мечты».
4. Тем самым убиваем двух зайцев. Во-первых, выращиваем под себя молодых специалистов, не принимая их в штат, и не тратя фонд з/п. Во-вторых, «столбим» их под себя, обучая подходам и требованиям, принятым именно в нашей компании, чтобы тяжелее было соскочить к конкуренту.

Вот так разговоры о «низком» качестве подготовки российскими ВУЗами ИТ-специалистов на поверку оказываются широко распространенной в России практикой «хантинга» талантливых студентов с постепенным вовлечением в кадровый резерв, а потом и в штат ИТ-компании. За массой красивых слов, почему то умалчивается о вполне экономически понятном желании компании в условиях дефицита кадров сначала закрепить за собой, а потом заполучить способного молодого специалиста, «заточенного» под потребности фирмы.

Уважаемые рекрутёры и менторы! Было бы странно, если бы ВУЗы в РФ готовили молодых специалистов именно под Ваши потребности. На Западе крупные компании для этого учреждают свои университеты, которые щедро финансируют.
Да, отечественная система образования страдает слабой проектноориентированностью, но корни этой проблемы в традициях еще советского подхода, основанного на глубокой базовой подготовке специалистов, в противовес рапространенной на Западе образовательной концепции выращивания узких спецов.
Ну вот у нас есть программы стажировок. Студентов старших курсов берут стажерами на 20 часов в неделю на полгода. На полставки.

Потом, если возникает взаимный интерес, человека приглашают в штат уже готовым специалистом.

Но у нас специфика — разработчиков, знающих RPG и AS/400 в России крайне мало. Так что в любом случае приходится готовить. Так что любой при приеме на работу первые три месяца проходит обучение — сначала тестовые задачи, потом несложные боевые (или околобоевые — допустим кому-то надо что-то вспомогательное сделать — дают).
Only those users with full accounts are able to leave comments. Log in, please.
Information
Founded

1 January 1979

Location

США

Employees

over 10,000 employees

Registered

9 August 2008