beldmit: (Программизм)
[personal profile] beldmit
Вдогонку к этой
и немного этой записям. И еще немного к боковому хвосту у Витуса.

Один из типичных приемов собеседования с программистами - показ зубодробительной конструкции на языке, на котором собирается программировать соискатель, и вопрос, что она делает. Наиболее часто мне попадался C-шный пример, когда вместо переменной объявлялась функция.

Так вот, господа. Когда вам показывают такой пример (если он выходит за пределы разумного понимания языка и знания ключевых слов или общепринятых идиом), то скорее всего - одно из двух.

1. Собеседующий пытается срезать соискателя. То есть самоутвердиться. Вам нужен такой начальник?
2. Код реально используется в проекте? Вы действительно хотите это поддерживать?

Да, и главное, без чего пп.1-2 не действуют. Понимать, что предъявленный пример собой представляет - все-таки надо. Чтобы было ясно, что объявлена таки переменная, а не функция.

Date: 2009-03-04 02:49 pm (UTC)
From: [identity profile] raydac.livejournal.com
что то никогда не просил на собеседованиях что то разобрать, даже в голову не приходило такое

Date: 2009-03-04 03:22 pm (UTC)
From: [identity profile] grzegorzrus.livejournal.com
А что является разумным пониманием?

Date: 2009-03-04 03:30 pm (UTC)
From: [identity profile] gornal.livejournal.com
Я почти всегда спрашиваю
c=3;
d=++c++;
printf("%d\n",d);

Но всегда подразумеваю, что если кто-то правильно ответит, то это плюс, а не минус, если не ответит. Отвечают крайне-крайне редко.

Date: 2009-03-04 03:31 pm (UTC)
singalen: (Default)
From: [personal profile] singalen
Третье противоречит первым двум.
Вы же не считаете, что большинство собеседующих не понимают этих трёх тезисов?

Date: 2009-03-04 03:36 pm (UTC)
From: [identity profile] shigin.livejournal.com
У меня несколько другая точка зрения.

1. Если нанимают программиста на C++ (то есть весь код у нас плюсовый и всё такое), то как--то логично проверить, знает ли человек подводные камни этого самого C++. Тем более, что приведенный пример может получиться и сам по себе.

2. Иногда приходится лезть в чужой код. Вообще чужой, а уж что бывает в чужом коде никому объяснять не надо.

3. Я не очень понимаю, чем это принципиально отличается от предложения отсортировать терабайтный файл, если у нас есть только 2 гига памяти.

Date: 2009-03-04 04:00 pm (UTC)
From: [identity profile] fdo-eq.livejournal.com
С выводами относительно конкретного примера согласен полностью.

Date: 2009-03-04 04:06 pm (UTC)
From: [identity profile] oldbukh.livejournal.com
для понимания языка достаточно спросить очень простую вещь, которая только кажется зубодробительной.

Зачем нужно вот такое макроопределение
#define MACRO(a,b) (&((b*)NULL)->a)

Работает как из пушки :)

Date: 2009-03-04 04:11 pm (UTC)
From: [identity profile] dimas.livejournal.com
Дим, ты не поверишь сколько народу срезается по пост-кондициям банального префиксного и постфиксного инкремента в цикле ... Когда мне на собеседовании в SWSoft об этом рассказали, я не поверил ... как подавал на собеседованиях сам - офигел ...


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

Но любителей подсунуть что-нить на undefined behavior, и заставляющих объяснить почему неправильно ... или всякие неоднозначные штуковины ... Я вот считаю что проще сказать что не правильно, и как - правильно, чем объяснять ... С другой стороны - собеседование, это ж взаимный экзамен, проще отсеять невменяемое место сразу, чем потом мучаться :)

Date: 2009-03-04 04:30 pm (UTC)
From: [identity profile] vtosha.livejournal.com
Рассказывают, что на некоем коллоквиуме у медиков по черепу (или отверстиям черепа) преподаватель просверливал две дополнительные дырки и требовал ответить, что это. Мало кто сознавался, что этих дырок не должно было быть.

Попробуй применить твои выводы к этому случаю. а) Он пытался срезать учеников. Нам нужен такой преподаватель? б) Вы действительно хотите заниматься такой наукой, где могут спрашивать столь сложные вещи?

А когда речь доходит до дела, как бы мы отнеслись к медикам, не сдавшим такой коллоквиум?

Date: 2009-03-04 04:49 pm (UTC)
From: [identity profile] slobin.livejournal.com
Поскольку здесь всё равно не собеседование, не могу не удержаться и не рассказать свой любимый вопрос про язык C: как выглядит самая короткая программа на нём? На всякий случай проверяемая постановка задачи: из какого самого короткого файла команда gcc myfile.c создаст a.out? Варианты: (1) без ворниногов (2) ворнинги допустимы.

... За окном сверкает пол-луны ...

Date: 2009-03-04 04:54 pm (UTC)
From: [identity profile] besm6.livejournal.com
Так эти два вопроса надо задавать не в ЖЖ, а собеседующему... И принимать решение исходя из его реакции.

Date: 2009-03-04 08:23 pm (UTC)
arilou: (Meditate)
From: [personal profile] arilou
В общих чертах согласен (и, например, с комметом Рана о том, что этивопросы надо задавать собеседующему).
Но есть тут некоторое "но".
Токость тут в том, что твой пост, как мне кажется, предполагает, что данный программист заведомо достаточно владеет языком настолько, что его мнение о "зубодробительности" конструкций заведомо верно. Т.е. того, что кто-то данными конструкциями пользуется легко, как говорится "играючи" (т.е. получает преимущества таких конструкций, не страдая от ожидаемых тобой недостатков), и что это остижимо даже без смены прошивки собственного мозга - ты уже не допускаешь? Да, конечно, ответ типа: "Я просто не считаю для себя нужным подниматься на такой уровень виртуозности, потому что за тоже время я луше освою что-то более востребованное на рынке," -- тоже принимается (и даже, сажу честно, ожидается ;) ).

Date: 2009-03-04 09:59 pm (UTC)
From: [identity profile] yakov-sirotkin.livejournal.com
Да, я хочу это поддерживать, это моя специализация! Только на Java, а не на C++.

Date: 2009-03-06 07:23 pm (UTC)
From: [identity profile] persinval.livejournal.com
Согласен с тобой. Скорее всего, старший разработчик, который столь "любуется языком", не понимает, что в продукте это не главное. Тем самым какую либо ситсемную компоненту он напишет отлично, а продумать решение более сложной проблемы просто не сможет, так как не понимает ни задач, ни принципов, ни возможностей, которые требуются на "столь высоком уровне".
Мне самому нравятся всякие красивости языка, но задавать их на собеседовании? Уж нет.

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 11th, 2026 06:56 am
Powered by Dreamwidth Studios