Если я начну задавать уточняющие вопросы по заданию «найти максимальный элемент в массиве», то первую половину времени из интервью человек будет отвечать на мои вопросы, а вторую половину будет отвечать на мои аргументы. Потому что я начну вообще не с задания, а с вопросов, в каком проекте это собираются использовать, и какие именно аргументы привели к тому, что для этого надо писать свой велосипед вместо использования уже существующих решений. Далее мы плавно перейдем к обсуждению проекта, аргументов за постройку велосипеда и против него, архитектуры и т.д. В общем к концу первого часа собеседования до собственно кода мы точно не дойдем. Если же вдруг случиться нечто, будут веские аргументы для постройки велосипеда, и мы все-таки дойдем до кода, то первое, что я скажу, будет что-то вроде: «Ок, я понял ваши аргументы. Теперь давайте для начала посмотрим уже существующие решения для подобных задач»
Нет, я не спорю, возможно, именно это и было целью данного вопроса: проверить меня как сеньора в этом аспекте, т.к. для сеньора задания из серии «пойди туда, не знаю куда, принеси то, не знаю что» являются вполне себе типовыми. И для начала надо при помощи утюга, паяльника, пассатижей и прочих специальных предметов выдрать из приславших задание определение «туда», потом выдрать из них же определение «то», потом убедиться, что они имеют согласованное между собой мнение, т.к. бывает, что желающие понимают под одними и теми же словами самые разные варианты вплоть до строго противоположных и т.д. И вот после всего этого можно уже задумываться об архитектуре и дизайне. Но я лично сильно сомневаюсь, что задающие подобный вопрос, имели в виду именно это, а не написание сферического кода в вакууме. Я конечно могу написать за полминуты ни о чем не говорящий вариант (что я, собственно говоря, и сделал выше), который ни в один продакшен не пойдёт по причине его полной ненужности, но при чем тут позиция сеньора? Как и что вышеописанный код скажет обо мне как о сеньоре?
Вы очень сужаете задачу, заранее принимая по умолчанию никем и нигде неоговоренные условия. На уровне сеньора человек не думает «от сих до сих». Вам это, вероятно, представляется чем-то а-ля вот таким, написанным за 20 секунд
std::vector<int> array;
if (array.empty())
{
throw std::exception("Array is empty");
}
auto maxValue (array[0]);
if (array.size() > 1)
{
for (auto index (1); index < array.size(); ++index)
{
if (maxValue < array[index])
{
maxValue = array[index];
}
}
}
А сеньор сразу начинает грузиться на тему многопоточности, архитектуры, особенности исходных данных (Они как-то упорядочены? Какой у них формат? Какой у них размер?), предельно возможного размера массива, тестов, и еще 1024 подобных вопроса. И вот тогда начинается гугление, чтобы не изобретать велосипед, который к тому же скорее всего окажется менее эффективным, чем уже известное и отработанное решение. Или по крайней мере будут какие-то куски известного и отработанного решения, которые можно будет применить. Собственно говоря, ваш вопрос как раз и показывает, что вы не видите разницы между сеньором и мидлом. Задача в такой формулировке (найти максимальное значение в массиве) хороша для мидла: ему дали задание, он его решил строго «от сих до сих». А у сеньора в этот момент голова взрывается от обилия возможных вариантов, про которые ему ничего не сказали.
Если речь именно про HDD, то возможно имеет смысл посмотреть на шумопоглощающие коробки для них. Я когда-то использовал Scythe SBX-1000 — шум уменьшается очень сильно. Подобное вроде уже не производится серийно (вероятно из-за очень малого спроса), но можно поискать в разделе б/у.
Если хочется тишины, то рецепт — вентиляторы Noctua везде, с адаптерами понижения скорости, где надо
Я бы рекомендовал Be Quiet Silent Wings 3, которые в этом отношении более эффективные. Резиновые демпферы там идут по умолчанию. При покупке важно не перепутать с версией High Speed, которые тихими не будут. Скорость лучше выставлять через материнскую плату (или через отдельный блок контроля, если кому-то так больше нравится), а не резисторами для чего брать PWM версию с 4 контактами. Размер 140 мм, т.к. чем больше вентилятор, тем больший объем воздуха он прокачивает на тех же оборотах по сравнению с меньшим по размеру, поэтому у 140 мм можно выставить меньшую скорость по сравнению со 120 мм. Количество — чтобы хватило для нормального охлаждения на 450 — 500 об/мин.
Блок питания необязательно безвентиляторный. Можно взять качественный (например, SeaSonic) с гибридным режимом работы. Там вентилятор под малой нагрузкой не крутится вообще, а под средней на очень малых оборотах, и при этом его абсолютно не слышно.
Неоднократно слышал шутку, что самая главная книга для программиста «How to copy and paste from stackoverflow», но как-то даже в голову не приходило, что она превратиться в реальность реальность.
Стандартный этап развития :) Множество народа проходит через все эти типовые «озарения» а-ля комментарии не нужны, тесты не нужны, документация не нужна и т.д.
Позднее с опытом человек поймет, что есть не только проекты на пару недель, но и на многие годы, и отнюдь не только в FAANG, что то, что понятно одному разработчику, может быть, ну очень мягко говоря, непонятно другому, что собственно кодинг — это далеко не все, что нужно для продажи продукта, что крэш в неподходящее время может стоить сотни тысяч евро и т.д. В общем с опытом пройдет :)
Побуду адвокатом дьявола — как-то работал с бекендером-сеньором который «фигово коммуникабельный». Такой знаете, пассивно-агрессивный чувак с формальной логикой на 146%, который на просьбу «хелп плиз» ответит «ок.» и будет ждать, когда я задам вопрос по полной форме. Или типа на «почему этот метод в АПИ высылает Х а не У?» отвечает что-нибудь типа «потому что в базе находится Х.». Твою-то налево, понятно что я спрашиваю, с чего оно в базе лежит вместо У.
Простите, а какой ответ ожидается в данном случае? Описанная ситуация с моей точки зрения является классическим примером на тему «телепаты в отпуске». Вы просите человека помочь, он готов помочь. Но вы же не ожидаете, что он будет за вас играть в угадайку на тему, в чем именно вам надо помочь? По сути я лично вижу здесь проблему коммуникации не с его, а с вашей стороны, т.к. вы не можете внятно софрмулировать тему, которую хотите обсудить с собеседником, а потом удивляетесь, что собеседник отвечает не про то, про что вы думали.
У радиостанций есть возможность передавать на радио в автомобиле небольшой произвольный текст. Обычно передают название песни и т.п. И вот как-то в одной фирме была написана на первый взгляд невзрачная программа, которая позволяла генерировать этот текст из базы данных с информацией о песне по заданному шаблону. Все довольны, т.к. теперь вместо ручного ввода текста все делается автоматически.
Через некоторое время один производитель начинает получать периодические жалобы, что радио в автомобиле выключается случайным образом. Производитель начинает исследовать проблему и довольно быстро приходит к выводу, что 100% всех выключений происходит в момент, когда принимается передача строго определенной радиостанции.
Производитель пишет на радиостанцию, что они передают что-то такое, от чего у них выключается радио. Радиостанция обалдевает, но тоже начинает исследовать проблему и приходит к выводу, что все началось с того момента, когда они запустили программу автоматической генерации текста.
Радиостанция пишет разработчику софта, что их программа выключает радио в автомобилях. Программисты от такого утверждения обалдевают еще больше, но тоже начинают исследовать проблему.
Результат всей этой истории, приведшей к окончательному обалдеванию всех ее участников: в прошивке приемника был баг, который выключал его при определенной комбинации национальных символов. Такая комбинация появлялась только при определенном шаблоне для генерации текста, который использовался только на одной радиостанции, и только когда этот шаблон применялся к определенной песне.
Написано очень хорошо, но, увы, совсем не ново. Как минимум сразу же вспоминается Фейнман с полностью аналогичной темой по физике, когда студенты отлично решают абстрактные теоретические задачи, которые просто заучили на память, но абсолютно не в состоянии применить полученные знания на практике, т.к. не понимают смысла того, что они запомнили (выделение мое). lib.ru/ANEKDOTY/FEINMAN/feinman.txt
Вот цитата, чтобы не ходить по ссылке.
Я обнаружил очень странное явление: я задавал вопрос, и студенты
отвечали, не задумываясь. Но когда я задавал вопрос еще раз — на ту же тему
и, как мне казалось, тот же самый вопрос, они вообще не могли ответить!
Например, однажды я рассказывал о поляризации света и раздал им всем кусочки
поляроида.
Поляроид пропускает свет только с определенным направлением
поляризации. Поэтому я объяснил, как определить направление поляризации
света по тому, темный поляроид или светлый.
Сначала мы взяли две полоски поляроида и вращали их до тех пор, пока
они не пропустили максимум света. Теперь мы могли сказать, что две полоски
пропускают свет, поляризованный в одном направлении: что пропускает один
поляроид, может пройти и через второй. Но потом я спросил, можно ли, имея
всего один кусок поляроида, определить, в каком направлении он поляризует
свет. Они совершенно не представляли себе.
Я знал, что это требует известной доли находчивости, поэтому я
подсказал: «Посмотрите на залив. Как от него отражается свет?»
Все молчат. Тогда я сказал:
— Вы когда-нибудь слышали об угле Брюстера?
— Да, сэр. Угол Брюстера — это угол, отражаясь под которым от
преломляющей среды, свет полностью поляризуется.
— В каком направлении свет поляризуется при отражении?
— Свет поляризуется перпендикулярно плоскости падения, сэр.
Даже теперь я не могу этого понять. Они знали все наизусть. Они знали
даже, что тангенс угла Брюстера равен показателю преломления!
Я сказал: «Ну?»
По-прежнему, ничего. Они только что сказали мне, что свет, отражаясь от
преломляющей среды, как, например, воды в заливе, поляризуется. Они даже
сказали, в каком направлении он поляризуется.
Я сказал: «Посмотрите на залив через поляроид. Теперь поворачивайте
поляроид».
— О-о-о, он поляризован! — воскликнули они.
После длительного расследования я, наконец, понял, что студенты все
запоминали, но ничего не понимали.
В разделе офисной работы:
существует ли определенное время дня или произвольно выбираемое время для режима «не беспокоить», когда никто не имеет права подходить с любыми вопросами, звонить, или беспокоить любым иным образом?
Персональные данные утекают всем, кому-то больше, кому-то меньше, но как только человек лезет в онлайн сервисы о приватности можно забыть. А часто и в онлайн вылезать не надо, чтобы забыть о приватности.
Работа с пользователем по его профилю — это и есть технология. Когда, например, Гугл знает, во сколько и куда я обычно езжу, и заранее предупреждает о пробках. Когда он в курсе графиков моих покупок и заранее выдает мне линки. Когда он в курсе моих хобби и если я начинаю смотреть на картах другие города / области сразу подсказывает в качестве точек интереса именно те, которые относятся к моим хобби. Когда ютуб показывает рекомендации к просмотру на основе моих предпочтений и т.д. Разумеется, со всем этим можно бороться, но для большинства удобство от этой технологии перевешивает ее недостатки.
И опять повторюсь — это вычерпывание океана чайной ложкой. Гугл, ФБ и Эппл просто у всех на слуху. Любые онлайн сервисы собирают такую информацию, и это может вылезать самым необычным образом. Вот там автор не ленится ездить за 60 км, чтобы купить мюсли, дабы коварный онлайн сервис о нем ничего не знал. А payback карточкой он при этом пользуется? А просто картой платит? А в его машине предупреждения о пробках есть? На пробежках каким-нибудь фитнесс-трекером пользуется? Членские карты для фитнесс и т.п. клубов имеет? Музыкальным сервисом пользуется? И еще 1024 подобных вопроса. И во всех них будет ровно тоже самое, что и с Гугл, просто про Гугл и еще пару кампаний говорят, а про остальные не говорят.
И еще добавлю то, что писал в этой теме в другой ветке. Авторы по сути борятся не с бесконтрольным распространением данных в онлайн, а с технологиями. Как, показывает история такой борьбы (машины на производстве, автомобили, видеомагнитофоны, компьютеры, мобильники и т.д.), результат всегда один: попытки воевать с технологиями неизменно проваливаются, т.к. выгода от их использования превышает их недостатки.
Соринку? :) Авторы пытаются вычерпать океан чайной ложкой в силу своего неосознания масштабов проблемы. Это даже не борьба с ветряными мельницами. Чтобы сегодня предотвратить утекание частных данных в онлайн нужно отказаться от всего онлайна глобально и от множества оффлайна, что часто вообще нереализуемо, если только мы не о Робинзоне Крузо.
Под техническими новшествами я имел в виду новые технологии. Извиняюсь, что непонятно сформулировал. Смысл тот, что выгоды от новых технологий значительно превышают их недостатки.
Прочитал, разумеется — уазанные в статье конкретные люди борятся только с Гугл. Так там написано. Про Apple в статье написано только вобщем контексте того, что любые онлайн сервисы стараются получить как можно больше информации о пользователе. Равно как и про Амазон. Ну и повторюсь, что люди в статье воюют только с тем, про что им рассказали, а если уж их так заботит передача таких данных, то единственное решение — отказаться от онлайн как класса, а также от массы оффлайн сервисов, что весьма непросто.
Еще интереснее спросить, каким мобильником он пользуется. Купил ли он себе Siemens A65 или что-то подобное? В статье, кстати, ни слова про Apple, авторы героически борятся только с Гугл, который столько о них собирает, а Apple, видимо, нет, т.к. в СМИ про него не так много пишут :)
Забавные люди. Сразу возникает вопрос: почему только Гугл? М.б. ФБ уже не собирает информацию? Или другие онлайновые сервисы (Амазон, Ебей и т.д.) ее не собирают? Или просто про другие сервисы в СМИ ничего не рассказали, а потому они как бы ничего не собирают?
Вообще все это просто один в один копирует когда-то популярную борьбу с компьютерами как таковыми. Прекрасно помню, например, историю в 90-х в Японии, где в одном городе начальство издало приказ, что один день в неделю все городская администрация обязана работать без компьютеров, дабы не быть от них настолько зависимой.
Ну или более глобально — это такой современный вариант луддитов. Раньше боролись против машин на производстве и против автомобилей, потом против видеомагнитофонов, компьютеров и мобильников, сейчас модно воевать с онлайном и ГМО, потом еще какую-нибудь технологию найдут в качестве врага. В общем с чем только не воевали, но как, показывает история, результат всегда один: попытки воевать с техническими новшествами неизменно проваливаются, т.к. выгода от их использования превышает их недостатки.
Нет, я не спорю, возможно, именно это и было целью данного вопроса: проверить меня как сеньора в этом аспекте, т.к. для сеньора задания из серии «пойди туда, не знаю куда, принеси то, не знаю что» являются вполне себе типовыми. И для начала надо при помощи утюга, паяльника, пассатижей и прочих специальных предметов выдрать из приславших задание определение «туда», потом выдрать из них же определение «то», потом убедиться, что они имеют согласованное между собой мнение, т.к. бывает, что желающие понимают под одними и теми же словами самые разные варианты вплоть до строго противоположных и т.д. И вот после всего этого можно уже задумываться об архитектуре и дизайне. Но я лично сильно сомневаюсь, что задающие подобный вопрос, имели в виду именно это, а не написание сферического кода в вакууме. Я конечно могу написать за полминуты ни о чем не говорящий вариант (что я, собственно говоря, и сделал выше), который ни в один продакшен не пойдёт по причине его полной ненужности, но при чем тут позиция сеньора? Как и что вышеописанный код скажет обо мне как о сеньоре?
А сеньор сразу начинает грузиться на тему многопоточности, архитектуры, особенности исходных данных (Они как-то упорядочены? Какой у них формат? Какой у них размер?), предельно возможного размера массива, тестов, и еще 1024 подобных вопроса. И вот тогда начинается гугление, чтобы не изобретать велосипед, который к тому же скорее всего окажется менее эффективным, чем уже известное и отработанное решение. Или по крайней мере будут какие-то куски известного и отработанного решения, которые можно будет применить. Собственно говоря, ваш вопрос как раз и показывает, что вы не видите разницы между сеньором и мидлом. Задача в такой формулировке (найти максимальное значение в массиве) хороша для мидла: ему дали задание, он его решил строго «от сих до сих». А у сеньора в этот момент голова взрывается от обилия возможных вариантов, про которые ему ничего не сказали.
Я бы рекомендовал Be Quiet Silent Wings 3, которые в этом отношении более эффективные. Резиновые демпферы там идут по умолчанию. При покупке важно не перепутать с версией High Speed, которые тихими не будут. Скорость лучше выставлять через материнскую плату (или через отдельный блок контроля, если кому-то так больше нравится), а не резисторами для чего брать PWM версию с 4 контактами. Размер 140 мм, т.к. чем больше вентилятор, тем больший объем воздуха он прокачивает на тех же оборотах по сравнению с меньшим по размеру, поэтому у 140 мм можно выставить меньшую скорость по сравнению со 120 мм. Количество — чтобы хватило для нормального охлаждения на 450 — 500 об/мин.
Блок питания необязательно безвентиляторный. Можно взять качественный (например, SeaSonic) с гибридным режимом работы. Там вентилятор под малой нагрузкой не крутится вообще, а под средней на очень малых оборотах, и при этом его абсолютно не слышно.
Позднее с опытом человек поймет, что есть не только проекты на пару недель, но и на многие годы, и отнюдь не только в FAANG, что то, что понятно одному разработчику, может быть, ну очень мягко говоря, непонятно другому, что собственно кодинг — это далеко не все, что нужно для продажи продукта, что крэш в неподходящее время может стоить сотни тысяч евро и т.д. В общем с опытом пройдет :)
Простите, а какой ответ ожидается в данном случае? Описанная ситуация с моей точки зрения является классическим примером на тему «телепаты в отпуске». Вы просите человека помочь, он готов помочь. Но вы же не ожидаете, что он будет за вас играть в угадайку на тему, в чем именно вам надо помочь? По сути я лично вижу здесь проблему коммуникации не с его, а с вашей стороны, т.к. вы не можете внятно софрмулировать тему, которую хотите обсудить с собеседником, а потом удивляетесь, что собеседник отвечает не про то, про что вы думали.
Через некоторое время один производитель начинает получать периодические жалобы, что радио в автомобиле выключается случайным образом. Производитель начинает исследовать проблему и довольно быстро приходит к выводу, что 100% всех выключений происходит в момент, когда принимается передача строго определенной радиостанции.
Производитель пишет на радиостанцию, что они передают что-то такое, от чего у них выключается радио. Радиостанция обалдевает, но тоже начинает исследовать проблему и приходит к выводу, что все началось с того момента, когда они запустили программу автоматической генерации текста.
Радиостанция пишет разработчику софта, что их программа выключает радио в автомобилях. Программисты от такого утверждения обалдевают еще больше, но тоже начинают исследовать проблему.
Результат всей этой истории, приведшей к окончательному обалдеванию всех ее участников: в прошивке приемника был баг, который выключал его при определенной комбинации национальных символов. Такая комбинация появлялась только при определенном шаблоне для генерации текста, который использовался только на одной радиостанции, и только когда этот шаблон применялся к определенной песне.
lib.ru/ANEKDOTY/FEINMAN/feinman.txt
Вот цитата, чтобы не ходить по ссылке.
существует ли определенное время дня или произвольно выбираемое время для режима «не беспокоить», когда никто не имеет права подходить с любыми вопросами, звонить, или беспокоить любым иным образом?
И опять повторюсь — это вычерпывание океана чайной ложкой. Гугл, ФБ и Эппл просто у всех на слуху. Любые онлайн сервисы собирают такую информацию, и это может вылезать самым необычным образом. Вот там автор не ленится ездить за 60 км, чтобы купить мюсли, дабы коварный онлайн сервис о нем ничего не знал. А payback карточкой он при этом пользуется? А просто картой платит? А в его машине предупреждения о пробках есть? На пробежках каким-нибудь фитнесс-трекером пользуется? Членские карты для фитнесс и т.п. клубов имеет? Музыкальным сервисом пользуется? И еще 1024 подобных вопроса. И во всех них будет ровно тоже самое, что и с Гугл, просто про Гугл и еще пару кампаний говорят, а про остальные не говорят.
Вообще все это просто один в один копирует когда-то популярную борьбу с компьютерами как таковыми. Прекрасно помню, например, историю в 90-х в Японии, где в одном городе начальство издало приказ, что один день в неделю все городская администрация обязана работать без компьютеров, дабы не быть от них настолько зависимой.
Ну или более глобально — это такой современный вариант луддитов. Раньше боролись против машин на производстве и против автомобилей, потом против видеомагнитофонов, компьютеров и мобильников, сейчас модно воевать с онлайном и ГМО, потом еще какую-нибудь технологию найдут в качестве врага. В общем с чем только не воевали, но как, показывает история, результат всегда один: попытки воевать с техническими новшествами неизменно проваливаются, т.к. выгода от их использования превышает их недостатки.