Комментарии 179
Senior software architect detected!
по металлическим стенкам волна
гораздо быстрее перейдет до приемника, думаю много придётся играться с напором и направлением что бы отделить полезный сигнал от помех
Хм. А можно ли догадаться о таком способе, если не знать, что он существует? Не каждый имеет опыт работы с пьезокристаллами, опыт работы с измерительной техникой для этого применения, опыт работы со звуком в жидкости. А если человек уже знает о такой конструкции счётчика — он моментально "решит" задачу.
а ещё программатор, дебаггер, среда разработки, паяльник, электричество и чип и дип в шаговой доступности
К сожалению, такие задачи ничего о кандидате не скажут.
Вот не соглашусь с вами. Именно для поиска таких как вы такие задачи и нужны.
Конечно, для вас они выглядят как некоторое унижение, но, камон, это же собеседование — тут вас и так пытаются унизить каждым вопросом.
Приношу свои искренние извинения всем, кого на собеседовании заставлял на бумажке написать регулярку для IPv4.
Зато код не заставлял писать.
Никого не интересует правильный ответ (если он есть). Интересно посмотреть как человек мучается и страдает размышляет над неожиданным вопросом — может ли он в стрессе это делать.
Ну как бы нет. Техническое собеседование не про унижение, по крайней мере в нормальной компании.
Многие вопросы на таких собеседованиях сильно улучшили мои знания. Но не такие угадайки, конечно.
На нормальных собеседованиях никто никого не старается унизить, если что.
И можно найти огромное количество адекватных вопросов не из серии «про козу и капусту/квадратные люки/...», которые отлично определяют мышление кандидата.
Мне встречалась недовольство отсутствием правильного с их точки зрения ответа
Сейчас в очередной раз начнется холивар про собеседования и глупые или сложные вопросы.
И правда, пятница же.
2.
В общем решения есть. Но весьма причудливые для столь простой задачи. И все они сложнее очевидного — дойти до конца трубы. В реальном мире бесконечные трубы не встречаются.
Существует основанный на тепловом принципе способ измерения скорости кровотока в подкожных сосудах. Он конечно не может быть точным, но в каких-то условиях может быть и пригодится.
Вода может в составе иметь ядовитый компонент. Ну, сотую часть процента пирита, к примеру.Пирит — это железная руда, сульфид железа. Он не ядовит, и не растворяется в воде. Может быть вы имели в виду что-то другое?
1) электромагнитное поле (вода — проводник), если адамантий не экранирует
2) поднять техническую документацию по водопроводу и посмотреть, если документация есть в природе
3) найти в отделе человека, который делал эту фичу или знает, кто её делал, и спросить автора
1) Освящённый императором адамантий экранирует все известные виды излучений и полей. А также неизвестные.
2) Вас всё же реинкарнировало в бурундука. У вас лапки.
3) Вы в бесконечном поле. Там нет отдела.
пришла идея тоже с электромагнитным полем. а не подскажете с практической стороны как это сделать? двумя обмотками?
Вода течёт со скоростью 1 см/час на дне трубы слоем высотой в 1/100 диаметра. Труба, напомню, бесконечная.
Приподнимем трубу (сделаем горку), по разнице веса «плеч» узнаем направление.
Разрежем. И окажется, что вода течёт в глаз :))))
На одном собеседовании я предложил пару подобных деструктивных вариантов в задаче с таблетками. Как ни странно, собеседование прошёл.
«Есть труба по которой течет вода, требуется не разрушая трубу определить направление течения воды»
Самое смешное решение было:
"Не сказано, что вода течет внутри трубы, так что достаточно просто посмотреть..."
А способов решения, действительно, множество. И распространение звука и нагрев и много чего еще, в том числе и дойти до конца трубы :)
P.S. Задача из той-же серии (плохо сформулированных), вытащенная из одного из самых продаваемых у нас задачника по физике для старших классов:
Вы стоите на балконе и вертикально вверх кидаете камень весом m, через какое время камень упадет на землю?
Ответ одного студента (который учился на преподавателя и потому там разбирали задачи для старших классов) был следующим:
-товарищ преподаватель, я знаю ответ — бесконечность!
-почему вы так решили?
-Вы стоите на балконе и вертикально вверх кидаете камень, куда он упадет?
-ммм… на балкон…
-ну вот...
P.P.S.
В реальном мире бесконечные трубы не встречаютсяНо встречаются закольцованные…
Посмотреть надписи и положения элементов управления на насосе
Значит это сверхтекучая вода. Нагреть, подождать разрушения сверхтекучести и наблюдать в какую сторону дернется кольцо.
У камней скорость от массы не сильно зависит...
Тогда можно и просто обрезать трубу и посмотреть, с какой стороны течёт вода.
Добро пожаловать в гидравлику)
Давление будет разным если падение давления на участке трубопровода будет существенным и достаточным для измерения. Нужен дроссель в таком случае)
1 дырку и воткнуть щуп.
Да, разное. Это как в электрической цепи. Для электрического тока должна быть разность потенциалов. Для воды аналогом будет разность давлений.
В реальных трубах вода охлаждает быстрее с той стороны, с которй течет. Тоесть греете посредине, после чего открываете кран, смотрите, с какой стороны стало холодное ближе. Реальный кейс.
Зачем они это делают? Ну чтоб знать, какую сторону трубы после разреза затыкать. Да, желательно знать заранее. Или чтоб понять, перекрытие рядом крана закроет отрезок или нет(слева или справа от крана резать).
Теплопроводность то у метала лучше, но тут движение и теплоемкость у воды — больше.
так смысл что вода будет охлаждать трубу при этом сама немного нагреваться, и если предположить что поток слева-направо то слева, на одинаковом расстоянии от места нагрева, металлическая труба окажется чуть холоднее чем справа.
И все они сложнее очевидного — дойти до конца трубы. В реальном мире бесконечные трубы не встречаются.
гхм, даже с обычными трубами в стояке уже может быть проблемой «дойти до конца трубы».
С обычными трубами в стояке единственная возможная проблема — у вас нет ключей от подвала или чердака.
У вас есть труба, оба конца уходят под плитку, рядом. С другой стороны через 4 метра выходит… один.
Если вам интересно где второй — второй — ввод в квартиру и выходит у соседей из стены.
А на этом куске кран, в котором приржавел шарик закрытия и его надо заменить.
Взять источник нейтронного излучения. Померять гамма-излучение на некотором расстоянии справа и слева. Где больше туда и течет. Если модулировать поток нейтронов, то можно ещё и скорость потока определить. Видел реальную установку, которая на таком принципе работала, только там не вода была в трубах.
Вы находитесь в бесконечном поле. Перед вами металлическая труба толщиной не более стандартной водопроводнной.
Самая дешевая ножовка по металлу уложится в 100 рублевый бюджет. В задаче спрашивают в какую сторону течет вода?.. Через 5 минуты работы я отвечу куда она текла.
Бесконечная труба весит бесконечно много, зачем ее дополнительно фиксировать?
Во всём нужна сноровка, закалка, монтировка.
я тут что подумал. Мы ведь находимся в пустыне? Нам разве действительно важно в какую сторону течет вода?.. Через день-два философии нам будет важно чтобы эта вода текла вот прямо нам в рот…
Для простоты расчёта возьмём теплоту сгорания пропана такой же, то есть 50МДж. В секунду мы сможем получить 700 Дж. Этого хватит для нагрева 170 грамм воды.
Раз уж вы взялись примерять умозрительную задачу на реальность, будьте последовательны.
1. Не нужно прогревать весь объем жидкости в трубе. Достаточно прогреть пристеночный слой — а это гораздо меньше жидкости по объему.
2. Если копать дальше, то движение жидкости в трубе неравномерно: ближе к центру трубы жидкость движется быстрее всего, по мере приближения к стенкам замедляется. Нам это только на руку: медленно двигающуюся жидкость легче прогреть.
3. Для определения направления достаточно определить, на каком расстоянии от места нагрева труба имеет примерно одинаковую температуру. Если слева у нас труба становится ощутимо теплее в 5 см от места нагрева, а справа — в 7 см, то очевидно, что поток идет по трубе слева направо: слева металл охлаждается набегающей холодной водицей, справа — тоже охлаждается, но уже водицей потеплей.
Прикручиваем камертоны к трубе на одинаковых расстояниях так, чтобы их ноги перекрывались и мы видели, как они резонируют. Ударяем по центральному и смотрим, какой зазвенит быстрее. Фокус в том, что хотя скорость звука и большая и отличается мало, но и механическая связь слабая, поэтому даже небольшие отличия в акустической длине пути будут заметны.
Можно еще попробовать саму трубу в двух тисках зажать и возбудить на этом отрезке стоячую волну, а потом посмотреть, где у нее пучность. Скорее всего она будет смещена от центра симметрии, но чтобы понять куда — нужно немного пописать, интуитивно кажется, что в направлении движения.
Эта задача все-таки близка к реальности. Не надо греть всю воду в объеме, достаточно греть трубу и понаблюдать с какой стороны труба охлаждается быстрее.
Гораздо чаще встречается другая принципиально ошибочная задача:
Из ванны вода вытекает за 4 мин, а кран наполняет ее за 3 мин. (цифры — условные) За сколько ванна наполнится при вынутой пробке?
Когда я слышу подобную задачу, я внутренне бешусь, а внешне с улыбкой спрашиваю: вам какой ответ давать, общепринятый и неправильный, или полный и правильный?
Как посчитать 1/3 — 1/4 учат в 6-м классе. Но это — не решение, потому что скорость истечения воды константой не является. Приравняв статическое и динамическое давление ρgh = (ρv^2)/2 мы получим, что скорость истечения пропорциональна корню высоты столба жидкости. Ах да, надо оговорить, что считаем площадь ванны много больше площади сливного отверстия, считаем что в сливном отверстии нет разрыва потока и т.д. А потом записать красивое уравнение.
В общем, правильное решение требует кучи дополнительных параметров для последующего решения дифференциального уравнения. А это уже как-то не вписывается в собеседование на разработчика.
Эхх, так и до Навье-Стокса недалеко…
Когда я слышу подобную задачу, я внутренне бешусь, а внешне с улыбкой спрашиваю: вам какой ответ давать, общепринятый и неправильный, или полный и правильный?
Правильным ответом будет школьный. В задаче сказано, что вода вытекает за 4 мин, значит именно за это время она и вытекает. Может у ванной сливное отверстие расширяется, может насосы используются, сказано 4 мин — значит 4 мин. А вы пытаетесь подменить начальные условия.
При наполнении с 0 скорость будет меняться как-то по другому. И если засечь время от старта до финиша, то, скорее всего, средняя скорость не будет равной 1/4 ванны в минуту
Не-а.
Она вытекает за 4 мин — это значит, что некий определенный интеграл равен 4 минуты.
Как объяснить-то…
Давайте без формул проведем качественную оценку.
Ну вот когда вы сливаете воду из ванной, она течет быстро, так? А когда осталось совсем чуть-чуть — она течет медленнее. Намного медленнее.
А скорость воды из крана считаем постоянной.
У вас никогда не было небольшого засора ванной? Ну или попробуйте наполовину закрыть пробку, но так, чтобы вода при полной ванной вытекала быстрее чем наполнялась.
Тогда с полной ванной и открытым краном вначале уровень воды будет уменьшаться, а потом — остановится.
То есть, формально, ванна опустеет за бесконечное время.
А в школном решении с дробями бесконечности быть не может ))
Ну в контексте собеседования программиста, можно ожидать, что программист в состоянии выписать дифур хотя бы в самом простом из возможных приближений, правда?
А если не похоже на то, что его можно быстро аналитически решить, от программиста я бы вполне мог ожидать способности быстро написать хотя бы явную схему Эйлера для его решения.
Ну я бы дифур написал. Хотя и с трудом и возможно с ошибками. Но я по специальности — физик, любил раньше всякие физические головоломки, хотя и работаю разработчиком.
Однако считаю, что требовать от всех программистов знаний физики и математики первого курса — не стоит. Ну то есть это клево, если чел это помнит, но дальше-то что?
Задавая вопрос на собеседовании мы должны приближаться к цели. Цель — понять, подходит нам кандидат или нет. И если кандидат не помнит уравнение Бернулли — что с того?
Если даже не попытается начать — значит, новые задачи ставят человека в тупик, что красный флаг, по крайней мере — для разработчика.
Дальше вкусовщина, но: если скажет «ну наверное тут надо погуглить X и Y и скорее всего я найду, как в подобных задачах выписывают дифуры. Дальше, наверное, найдется метод, как их решать в книжке Z. Ну и дальше возьмем библиотечку S и решим» — то скорее зеленый флаг, хотя задача и не решена.
Или если бросится писать дифуры «от балды», не признаваясь, что не знает, что тут происходит, лишь бы создать видимость решения — скорее красный, ибо лапша на ушах в реальном проекте нам не нужна.
Надеюсь, вы баги в софте чините не аналогичным способом.
Zero bug policy ;)
А зачем вообще определять направление течения жидкости? Ну типа, какая разница?
Я имею в виду — окей, предположим, что этот вопрос — имитация задания от реального заказчика. Есть вероятность, что заказчику на самом деле нужно что-то другое, но он уже сам себе придумал, что для этого нужно определить, в какую сторону течет вода в трубе.
Т.е. есть смысл попробовать докопаться до первопричины, может быть все проще? Ну или таким образом отсечь заведомо неподходящие способы (разрушительные, например).
Всё же по моему скромному мнению компании где ВАМ задают такие вопросы лучше не ходить, даже если они очень крутые. Поверьте если им действительно нужно найти специалиста, такой ерундой они заниматься не будут
"… камертон… услышать эффект Доплера"
Эффекта Допплера не будет ни при каких скоростях. Проявление эффекта Допплера — это изменение частоты, т.е., грубо, за секунду приходит другое, например, бОльшее, количество периодов, чем уходит. Если заниматься прослушиванием бесконечно долго при неизменных условиях, то откуда возьмутся лишние периоды?
Математик измерил диаметр и по нехитрой формуле вычислил объем.
Физик измерил объем вытесненной жидкости.
А если пустить кораблик из спичечного коробка )
При хорошем раскладе, можно узнать как мыслит кандидат, боится или пасует перед неизвестными задачами и тп. НО люди и интернет всё испортили, всё перевернулось с ног на голову. Причем как со стороны кандидатов, так уже нередко и со стороны тех кто нанимает.
А решения особого изначально, конечно же у таких задач нет. Есть только ход мыслей, креативность и/или системность мышления и тп. Штука интересная на самом деле и жаль что её начали «взламывать» пытаясь часто искать решения. Впрочем это ожидаемо.
Задачка, как вы догадываетесь, очень многогранна. :) Если не привлекать никаких сторонних инструментов, то гарантировано можно определить только окно шириной в сумму времени самого быстрого из пакетов, отправленных за всю сессию туда плюс время самого быстрого из всех отправленных пакетов обратно.
Это и то только в предположении, что таймер одного из устройств не уплывает за время сессии на сопоставимое время.
Возможно, эта задача для того, чтобы определить как разработчик будет решать задачи в формулировке пользователей. Часто они просят что-нибудь добавить/переделать в программе, но это их видимость "решения" какой-то другой задачи.
В данном случае я бы спросил: "Для чего это? Какой нужен полезный эффект?" Возможно, в результате оказалось бы, что это нужно для опеределения направления местонахождения водонасосной станции.
Садитесь — два. Ужасно не верные расчёты, как и ход мысли. И условное собеседование автор «завалил», т.к. потратил много времени на сомнительные расчёты исходы из ошибочной изначальной модели (греть всю воду в трубе).
Интересующий нам перенос тепла осуществляться в слое толщиной несколько миллиметров — вот его и нужно считать, если очень хочется. На практике же нужно прогреть небольшой участок оболочки трубы до состояния хорошо различимого человеком перепада температуры (20..30 градусов) и потом смотреть, как изменяется градиент температуры.
А про нагрев я бы и не заикнулся, из-за профдеформации. Мне совесть не позволяет подходить к этой задаче даже так, как автор. Не работает это так типа «вот тут грамм воды нагрели, и он уплыл по трубе». А как же учесть диаметр трубы? А материал трубы = коэффициент теплопередачи, а площадь нагреваемого участка? Какова температура воды, окружающей среды и пламени, и, страшно спросить, число Рейнольдса у потока воды в трубе?
Я из-за образования просто не возьмусь и думать над такой задачей без томиков Касаткина/Павлова-Романкова-Носкова или хотя бы необходимых таблиц трубопроводов и номограмм теплоемкостей под рукой.
Как минимум я сильно сомневаюсь, что первичный нагрев самой трубы горелкой не будет обгонять вторичный нагрев трубы потеплевшей изнутри водой — это раз. Два — если я прав, я опять же не готов ответить, нагретый участок будет эффективнее охлаждаться более длительным прямотоком воды со стороны «по ходу» или же более коротким, но более эффективным противотоком с другой стороны. Намекаю, что при некоторых условиях возможно, что труба после нагреваемого участка будет остывать чуть раньше, чем до: )
С другой, в подавляющем большинстве кейсов от программистов требуют строго шаблонизированной и стандартизированной работы. И, проводя аналогию, если он начнет определять направление потока, пристраивая к трубе нагревательную спираль и два датчика температуры, то его коллеги завернут на код ревью и заставят разобрать конструкцию, и установить внутрь трубы датчик направления потока воды, или вообще вместо одной трубы поставить две, оборудованных клапанами, чтобы по одной вода могла течь только в одну сторону, а по другой — в другую. Даже, если это потребует в 10 раз больше кода.
Ровно до тех под, пока это решение не станет intellectual property. Напоминаю, что процессор — это кусок кремния, который обманом и наркотой заставили заниматься вычислениями.
в подавляющем большинстве
Понятно, что есть позиции, где надо мыслить подобным образом. Антивирусы писать, например, или биржевые адаптеры, позволяющие пихнуть ордер на одну микросекунду быстрее врагов, или извлекать фичи о реальных людях, парся открытые и полуоткрытые источники.
Но, вот, когда подобное спрашивают при поиске разрабов еще одной унылой CRM, ERP, или банковской платформы, то непонятно, чего ожидают
Вы думаете в мире унылых ERP/банков нет intellectual property? А как насчёт того ужасного кода, который связал две легаси системы и таки работает? Наверное, его надо рефакторить, но в начале никто не знал что с ним делать и никто не понимал как можно связать ПЕРСВ (или что там у банков его эквивалент) и swift. А кто-то покумекал и связал.
Я к тому, что кулибинство на местах не надо недооценивать. Как в положительном смысле (они делают что-то, что казалось невозможным), так и в отрицательном (после них — выжженая земля).
Спорно. Кулибинов топы не особо любят. Как правило, жирным корпоративным крысам важен не результат, а прогнозируемость, предсказуемость, планирование, прикрытие жопы. Сказать акционерам или СЕО "сделаем командой в 20 человек за год", и сделать за год, предпочительнее, чем сказать "сделаем втроём, наверное, за неделю, а может месяцок", и сделать за два месяца.
Вы сразу говорите про воображаемых "жирных корпорартивных крыс". Вопрос: в Тесле жирные корпоративные крысы? В фейсбуке? В эппл? В гугле?
Понятно, что есть застывшие предприятия в которых инновации мертвы. Но если говорить про создание новых продуктов — бизнес удивительно открыт к новым идеям (в т.ч. от кулибиных), потому что бизнес, который не открыт к инновациям либо нерыночный (монополии, господдержка), либо смывается рынком.
Нафига это программистам, конечно непонятно, даже студенты мехмата по специалиции термех неспособны были решить большинство этих наших задачек.
Как сейчас помню у меня на вступительных была задачка «На сколько улетит жёваная бумага из харкушки космонавта на луне, если известно, что лёгкие способны создать перепад давления примерно 0,1 атм.»
Мне нужна болгарка. Я распилю трубу и посмотрю, с какого конца вытекает вода.
Ну серьезно, в постановке задачи нет условия "трубу нельзя повреждать".
Суммируя всё вышесказанное, задачу нужно было бы поставить следующим образом: Вы находитесь в бесконечном поле. Перед вами металлическая труба толщиной не более стандартной водопроводнной. В ней течёт вода, температуры не выше 50 градусов Цельсия, со скоростью не более 1 м/с и не менее 1мм/с. Начала и конца этой трубы вы достигнуть не сможете.
Не умеете Вы издеваться над интервьюером. Вот как надо!
Посмотрю с какого края вытекает. Очевидно же.
Все стандартные решения подобных задач, подразумевают, что неявные условия интерпретируются в вашу пользу.
Да просто все. Открываем Хабр, пишем статью, собираем парсером ответы. Профит.
Здесь так-же — одно отверстие и туда воздух или шарик стальной. И потом слышно будет в какую сторону пойдет поток.
Турист в густом лесу, заблудился. Обнаруживает трубу, по которой явно течёт вода. Труба существенного диаметра, трубный дюйм, не менее. Вода течёт, понятно, в сторону населённого пункта, который и ищет турист.
Как узнать, куда она течёт, не разбирая трубу?
Важное входное условие — ты турист. Т.е. человек с комплектом, необходимым для проживания на дикой местности.
Ответ — разводишь костёр под трубой и определяешь, где труба теплее. Туда и течёт.
Т.к. вода течёт явно с существенной скоростью, то других вопросов не возникает.
Труба существенного диаметра, трубный дюйм, не менее.
Ответ — разводишь костёр под трубой и определяешь, где труба теплее.
Интересно, кто-то проверял этот совет на практике?
Какого размера должен быть костёр, чтобы заметно прогреть дюйм воды, текущий с неизвестной (возможно, большой) скоростью?
Насколько я понимаю, бытовые газовые котлы, прогревающие текущую воду, сильно отличаются от конструкции "труба над костром".
В какую сторону течёт вода?