Эта головоломка помогает компании Google отбирать сотрудников: проверьте свою логику

Загадки при прохождении собеседования в крупные корпорации

Эта головоломка помогает компании Google отбирать сотрудников: проверьте свою логику

Часто, всемирно известные компании во время собеседования с потенциальным сотрудником предлагают ему справиться с каверзными загадками. Мы выбрали десять увлекательных примеров таких загадок.

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

Посмотрите, смогли бы вы осилить поставленные задачи?

Логические загадки от Apple

Первая загадка. Шелдону Куперу (гению физику из популярного сериала) удалось дойти до финального испытания в игре поиска сокровищ. Ему предстоит сделать выбор между двумя дверьми. За одной находится ящик с сокровищами, за другой – лабиринт со смертельно опасными испытаниями.

Каждая комната защищена стражниками, которые знают, где находится драгоценный приз. Одному стражнику постоянно свойственно говорить правду, второй постоянно лжет. Шелдону не известно, кто лгун, а кто честный человек.

Перед принятием решения, предоставлена возможность одного вопроса и лишь одному из защитников.

Вопрос: У кого и какой вопрос Шелдону задать, чтобы добраться до сокровищ?

Ответ: Неважно у кого спрашивать, главное – поставить вопрос таким образом: «За какой дверью, как считает второй защитник, расположены драгоценности?».

Если вопрос будет задан правдивому – Шелдону скажут, где путь к лабиринту, потому что лживый защитник постоянно обманывает.

Если вопрос задастся врущему – то он узнает про те же двери с лабиринтом, так как тот соврет про дверь, которая будет указана защитником, говорящим всегда правду.

Вторая загадка. Земля захвачена инопланетными существами. В их планах – уничтожение всей планеты, но они приняли решение предоставить возможность выжить нескольким людям.

Пришельцы отобрали десять умнейших человек, отвели в полностью темное помещение и расположили в ряд.

Всем людям надели головные уборы, которые представлены только в розовом и зеленом цветах, и затем включили освещение.

От инопланетного существа последовал вопрос к тому, кто находился в конце ряда: «Какой у тебя цвет головного убора?». Человеку запрещено игнорировать вопрос или озвучивать иные слова, помимо «розовый» и «зеленый». Ответ правильный – будет жить, неправильный – убьют.

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

Вопрос: Какой ответ нужно дать, чтобы максимальное количество человек было спасено?

Ответ: Тот, кто отвечает первый, должен посчитать зеленые шляпы других: число нечетное – дать ответ нужно «зеленый», четное – «розовый».

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

Используя данный метод, могут выжить девять из десяти человек. У того, кто первый отвечает, шансы пятьдесят на пятьдесят.

Вопросы компании Adobe

Третья загадка. Вы имеете пятьдесят байков с полным топливным баком на сто километров поездки.

Вопрос: На какое расстояние есть возможность уехать, если воспользоваться всеми байками (следует учесть, что их первоначальное расположение – условно одна точка пространства)?

Ответ: Легче всего – завести все, проехать сто километров. Но также можно изначально переместить каждый на пятьдесят километров, после перелить топливо из двадцати пяти байков в оставшиеся двадцать пять.

Следовательно, половина байков будет с целым баком топлива и можно будет проехать еще пятьдесят километров, а затем повторить процедуру.

Данным образом, можно проехать на 350 км (если не учитывать «лишнее» топливо одного транспорта, оставшееся при делении 25 надвое).

Загадки от Microsoft

Четвертая загадка. Вы владеете нескончаемыми водными запасами и двумя ведрами. Одно ведро на пять литров, другое на три.

Вопрос: Как налить ровно четыре литра?

Ответ: Наливается вода в ведро с пятью литрами и переливается в емкость с тремя. В первом ведре останется два литра.

Нужно вылить воду из небольшого ведра и перелить в него остатки из первого. Далее следует опять заполнить ведро побольше и долить воду в маленькое.

Во втором было два литра воды, поэтому добавить нужно будет один. В результате, в ведре с пятью литрами выйдет ровно четыре литра.

Пятая загадка. Вы имеете 2 отрезка бечевки. Каждый одинаково сгорает ровно за шестьдесят минут, если поджечь один конец.

Вопрос: Имея в руках только одну коробку со спичками, как отмерить благодаря двум отрезкам данной бечевки сорок пять минут (разрывать бечевку запрещено)?

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

Какие загадки предлагают решить в Google?

Шестая загадка. Вы имеете восемь шариков одного вида и размера.

Вопрос: Каким образом можно отыскать самый тяжелый шарик, с помощью весов и возможности два раза их взвесить?

Ответ: Нужно отобрать шесть шариков, распределить их на две равные группы и взвесить. Перевес чаши будет у группы с тяжелым шариком. Затем из нее следует выбрать любые два шарика и перевесить. Если шарик с большим весом среди них – будет известно; если вес равный – тяжелым будет оставшийся. Если такого шарика из двух частей не было, тогда он среди тех двух, что остались.

Загадки от Qualcomm

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

Предположим, что передаются десять пакетных данных по беспроводной сети. У канала не совсем хорошее качество, поэтому с вероятностью 1/10 пакет не передастся. Трансмиттеру известно, удалась ли передача. Если она не осуществилась, ему нужно совершать передачу до преуспевания.

Вопрос: Какая наибольшая скорость передачи информации по каналу связи выходит?

Ответ: Девять пакетов в секунду, но работодатель другого мнения. Верным ответом он не поделился, но утверждал, что по причине того, что произошла ретрансмиссия, требуется уменьшение пропускной способности более чем на 1/10.

Загадки от компании «Яндекс»

Восьмая загадка. Игра вмещает в себе равные и свободные коны. Во всех вероятность победы – p. Игроку, если он победил, выплачивают один доллар, если проиграл – забирают один доллар. Когда сумма достигнет размера N, он становится победителем и исключается.

Вопрос: Какой шанс проигрыша всей суммы игроком, отталкиваясь от капитала K, который он имел изначально?

Девятая загадка. Данная загадка имеет отношение к программированию, задавалась во время интервью с потенциальными разработчиками.

В морфологическом словаре, с приблизительно ста тысячью входами, перфективные и имперфективные виды глаголов размещены в разных статьях (например, «делаю» и «сделаю» относятся к отдельным словарным входам). Нужно отыскать в нем данные пары одного вида, а также провести «соединение» статей.

Вопрос: Как прийти к решению данной задачи, и какая будет приблизительная последовательность операции нахождения видовых пар?

Решений на загадки от «Яндекса» мы не имеем.

Загадка Альберта Эйнштейна

Считается, что Альберт Эйнштейн придумал эту загадку, и что благодаря ей он набирал к себе ассистентов-помощников. Но бытует и иное мнение: ее сочинителем является Льюис Кэрролл. К решению достаточно легко прийти с помощью бумажки и ручки.

На улице находится 5 домов.

У англичанина покраска дома красная.

Испанец – владелец собаки.

В зеленом доме выпивают кофе.

Украинцу нравится чай.

Дом с зеленым цветом стоит с правой стороны от дома с белым.

У того, кто покуривает Old Gold, есть улитки.

Жители дома с желтым цветом курят Kool.

Хозяева центрального дома – любители молока.

Владелец первого дома — норвежец.

У соседа того, кто курит Chesterfild, есть лиса.

Соседи владельца лошади, курят Kool.

Курящий Lucky Strike, обожает сок с апельсинами.

Parliament – любимые сигареты японца.

Норвежец живет возле соседей с синим домом.

Цвета дома имеют разные, как и национальности хозяев, проживающих в них. У всех есть свои питомцы, все предпочитают пить определенный напиток и курить разную марку сигарет.

Вопрос: Кто обожает воду? Кто хозяин зебры?

Ответ: Норвежец любит пить воду, японец хозяин зебры.

Источник: https://brainapps.ru/blog/2018/11/zagadki-pri-prokhozhdenii-sobesedovan/

Головоломки Google и Microsoft: 5 хитрых задач на собеседованиях

Эта головоломка помогает компании Google отбирать сотрудников: проверьте свою логику

  • Все знают, что в Индии существует кастовое разделение. Каста неприкасаемых никогда не пересечется с кастой брахманов, и последние первых никогда…
  • Сейчас наблюдаю такую картину, что много моих знакомых в свете коронавирусной истерии стали заядлыми дачниками. Кто собирался продавать дачу,…
  • Требование властей о предустановке российского программного обеспечения на заморские смартфоны, компьютеры и Smart TV наделало много шума. Но, тем…
  • Все знают, что в Индии существует кастовое разделение. Каста неприкасаемых никогда не пересечется с кастой брахманов, и последние первых никогда…
  • Сейчас наблюдаю такую картину, что много моих знакомых в свете коронавирусной истерии стали заядлыми дачниками. Кто собирался продавать дачу,…
  • Требование властей о предустановке российского программного обеспечения на заморские смартфоны, компьютеры и Smart TV наделало много шума. Но, тем…

Page 3

  • Все знают, что в Индии существует кастовое разделение. Каста неприкасаемых никогда не пересечется с кастой брахманов, и последние первых никогда…
  • Сейчас наблюдаю такую картину, что много моих знакомых в свете коронавирусной истерии стали заядлыми дачниками. Кто собирался продавать дачу,…
  • Требование властей о предустановке российского программного обеспечения на заморские смартфоны, компьютеры и Smart TV наделало много шума. Но, тем…

Page 4

  • Все знают, что в Индии существует кастовое разделение. Каста неприкасаемых никогда не пересечется с кастой брахманов, и последние первых никогда…
  • Сейчас наблюдаю такую картину, что много моих знакомых в свете коронавирусной истерии стали заядлыми дачниками. Кто собирался продавать дачу,…
  • Требование властей о предустановке российского программного обеспечения на заморские смартфоны, компьютеры и Smart TV наделало много шума. Но, тем…

Page 5

  • Все знают, что в Индии существует кастовое разделение. Каста неприкасаемых никогда не пересечется с кастой брахманов, и последние первых никогда…
  • Сейчас наблюдаю такую картину, что много моих знакомых в свете коронавирусной истерии стали заядлыми дачниками. Кто собирался продавать дачу,…
  • Требование властей о предустановке российского программного обеспечения на заморские смартфоны, компьютеры и Smart TV наделало много шума. Но, тем…

Page 6

  • Все знают, что в Индии существует кастовое разделение. Каста неприкасаемых никогда не пересечется с кастой брахманов, и последние первых никогда…
  • Сейчас наблюдаю такую картину, что много моих знакомых в свете коронавирусной истерии стали заядлыми дачниками. Кто собирался продавать дачу,…
  • Требование властей о предустановке российского программного обеспечения на заморские смартфоны, компьютеры и Smart TV наделало много шума. Но, тем…

Page 7

?

|

alexkolosДома на Красной планете: проект культового архитектора Нормана ФостераБританский архитектор Норман Фостер (бюро Foster + Partners) решил построить на Марсе дома, которые можно напечатать на 3D-принтере. По его задумке, сначала на Марс должны прилететь роботы, которые выкопают кратер и установят в нем надувные модулиМодули станут основой для будущей базы на Марсе. Дома будут возводиться при помощи роботов — по принципу 3D-печати, с использованием марсианского грунта. В роли смеси выступит реголит, подвергнутый воздействию микроволнПо задумке Фостера, марсианская база площадью 93 квадратных метра будет разделена на жилые помещения и общественное пространство. Всего один дом будет рассчитан на комфортное проживание четырех астронавтовКомнаты будут защищены от воздействия радиации и экстремальных температур при помощи реголита — поверхностного слоя сыпучего грунта на Марсе. Вместо окон на стенах будут установлены экраны. На них будет транслироваться панорамы планеты ЗемляПока проект Фостера является концептом и одним из главных претендентов на победу в конкурсе, который проводит космическое агентство NASA совместно с американским институтом инноваций «Амэрикэн Мэйкс». Одним из условий участия в нем является использование в проекте технологий 3D-печатиКонкурс «Амэрикэн Мэйкс» был объявлен в мае 2015-го. Призовой фонд первого тура — 50 тысяч долларов. Во втором туре авторы 30 лучших концепций будут бороться за приз в размере одного миллиона долларов
GEO

Источник: https://alexkolos.livejournal.com/1502585.html

5 задач, которые предлагают решить на собеседованиях в Google и других крупных компаниях

Эта головоломка помогает компании Google отбирать сотрудников: проверьте свою логику

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

1. Задача об испорченных таблетках

На столе стоят пять баночек с таблетками. В одной из них все таблетки испорчены. Определить это можно только по весу. Обычная пилюля весит 10 граммов, а испорченная — 9 граммов. Как узнать, в какой баночке лежат испорченные таблетки? Можно воспользоваться весами, но только один раз.

Шанс, что при первом замере нам сразу же попадётся та самая испорченная таблетка, равен одному из пяти. Значит, нужно одновременно взвешивать пилюли из нескольких баночек.

Если взять по одной таблетке из каждой банки и положить их все на весы, получится такая сумма: 10 + 10 + 10 + 10 + 9 = 49 граммов. Но это понятно и без взвешивания.

Таким способом невозможно узнать, в какой именно из банок находится испорченная пилюля.

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

Если бы все таблетки были нормального веса, результат получился бы такой: 10 + 20 + 30 + 40 + 50 = 150 граммов.

Но в нашем случае вес будет меньше как раз на то количество граммов, которое соответствует номеру баночки с испорченными таблетками.

Например, у нас получился вес 146 граммов. 150 − 146 = 4 грамма. Значит, испорченные таблетки лежат в четвёртой банке. Если вес 147 граммов, то испорченные таблетки в третьей банке.

Есть и другой вариант решения. Взвешиваем одну таблетку из первой банки, две из второй, три из третьей, четыре из четвёртой. Если вес меньше 100 граммов, то количество недостающих граммов укажет на бракованную упаковку. Если вес ровно 100 граммов, то испорченные пилюли находятся в пятой баночке.

Оригинал задачи можно посмотреть здесь.

2. Задача о муравьях‑путешественниках

В трёх углах равностороннего треугольника сидит по муравью. Каждый из муравьёв начинает двигаться в другой случайно выбранный угол по прямой. Какова вероятность того, что ни один из них не столкнётся с другим?

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

Каждый муравей может пойти в две стороны, всего муравьёв три. Значит, число возможных комбинаций направлений таково: 2 × 2 × 2 = 8. Из всех комбинаций только две удовлетворяют условию, что они не встретятся.

Вспоминаем формулу вычисления вероятностей: p = m ÷ n, где m — число исходов, благоприятствующих осуществлению события, а n — число всех равновозможных исходов. Подставим наши цифры: 2 ÷ 8 = ¼. Значит, шанс избежать столкновения — один из четырёх.

Оригинал задачи можно посмотреть здесь.

3. Задача о горящих верёвках

Есть две верёвки, пропитанные бензином для лучшей воспламеняемости. Каждая из них сгорает ровно за час. Известно, что верёвки горят с непостоянной скоростью: некоторые отрезки быстрее, некоторые медленнее. Но для завершения процесса всегда требуется час. Как можно узнать, что прошло 45 минут, используя только эти две верёвки и зажигалку?

Нужно одновременно поджечь первую верёвку с двух концов, а вторую верёвку только с одного конца. Эти верёвки не должны соприкасаться.

Первая сгорит за 30 минут — именно через столько встретятся подожжённые с обеих сторон кончики. Когда это произойдёт, у второй верёвки останется длины только на 30 минут горения.

Нужно быстро поджечь её со второго конца, тогда огоньки встретятся через 15 минут, а всего пройдёт 45.

Оригинал задачки можно посмотреть здесь.

4. Задача о переливании воды

Есть два ведра ёмкостью 3 и 5 литров, а ещё неограниченный запас воды. Как можно отмерить ровно 4 литра воды с их помощью? Наливать и выливать жидкость на глаз нельзя, переливать её в какие‑то ёмкости и места, не обозначенные в условии, тоже.

Решение 1. Нужно налить 5 литров воды в большое ведро, потом перелить из него 3 литра воды в маленькое. В большом ведре останется 2 литра воды.

Теперь выливаем из маленького ведра 3 литра воды и переливаем в него те 2 литра, что оставались в большом ведре. Заново наполняем до краёв пятилитровое ведро, отливаем из него один литр в трёхлитровое ведро, в котором уже есть два.

Значит, в большом ведре останется 4 литра, которые нам и были нужны.

Решение 2. Наполняем до краёв трёхлитровое ведро, переливаем его целиком в пятилитровое. Потом повторяем эти действия ещё раз, пока пятилитровое ведро не заполнится до краёв, а в маленьком не останется 1 литр. Теперь выливаем воду из пятилитрового ведра. Переливаем 1 литр в пятилитровое ведро, наполняем маленькое ведро до краёв, переливаем в большое. Вуаля!

Оригинал задачи можно посмотреть здесь.

5. Задача о фруктах и коробках

Перед вами три коробки с фруктами. В одной из них только яблоки, в другой — только апельсины, в третьей — и яблоки, и апельсины. Что за фрукты находятся внутри коробок, вам не видно. На каждой из коробок есть этикетка с надписью, но информация на ней неверна.

Вы можете с закрытыми глазами взять из любой коробки один фрукт и потом рассмотреть его. Как определить, какие фрукты находятся в каждой коробке?

Фишка в том, что все коробки помечены неправильно. Значит, в каждой лежит не то, что указано на этикетке. То есть в коробке с надписью «Яблоки + апельсины» могут быть либо только яблоки, либо только апельсины. Достаём оттуда фрукт. Допустим, нам попалось яблоко. Значит, это коробка с яблоками. Осталось две коробки: с пометкой «Яблоки» и с пометкой «Апельсины».

Помним о том, что информация на этикетках неверная. Значит, в коробке с пометкой «Апельсины» могут быть либо яблоки, либо смесь фруктов. Но яблоки мы уже нашли.

Следовательно, в этой коробке находится смесь фруктов. В оставшейся коробке с надписью «Яблоки», получается, находятся апельсины.

Аналогичные рассуждения позволяют решить задачу, если бы мы достали из коробки с надписью «Яблоки + апельсины» апельсин.

Оригинал задачи можно посмотреть здесь.

При подготовке статьи использовалась информация с сайта Glassdoor.com, где бывшие и нынешние сотрудники делятся опытом прохождения собеседований в разные компании.

Источник: https://Lifehacker.ru/zadachi-s-sobesedovanij/

Разбор задачи с собеседования в Google: синонимичные запросы

Эта головоломка помогает компании Google отбирать сотрудников: проверьте свою логику

Это новая статья из разбора задач с собеседований в Google. Когда я там работал, то предлагал кандидатам такие задачи. Потом произошла утечка, и их запретили. Но у медали есть обратная сторона: теперь я могу свободно объяснить решение.

Для начала отличные новости: я ушёл из Google! Рад сообщить, что теперь работаю техническим руководителем Reddit в Нью-Йорке! Но эта серия статей всё равно получит продолжение.

Дисклеймер: хотя собеседование кандидатов является одной из моих профессиональных обязанностей, в этом блоге я делюсь личными наблюдениями, историями и личным мнением. Пожалуйста, не считайте это официальным заявлением Google, Alphabet, Reddit, любого другого лица или организации.

Вопрос

После двух последних статей о ходе конём в наборе телефонного номера мне пришли критические замечания, что это не реалистичная проблема. Как ни полезно изучить навыки мышления кандидата, но вынужден признать: задача действительно немного нереалистичная.

Хотя у меня есть некоторые мысли по поводу корреляции между вопросами на собеседованиях и реальностью, но я пока оставлю их при себе. Будьте уверены, я везде читаю комментарии и мне есть что ответить, только не сейчас.

Но когда задачу про ход конём запретили несколько лет назад, я принял критику близко к сердцу и попытался заменить её вопросом, который немного больше относится к сфере деятельности Google. А что может актуальнее для Google, чем механика поисковых запросов? Так я нашёл этот вопрос и долгое время его использовал, прежде чем он тоже попал в паблик и был запрещён.

Как и прежде, я сформулирую вопрос, погружусь в его объяснение, а затем расскажу, как использовал его на собеседованиях и почему он мне нравится. Итак, вопрос.

Представьте, что вы управляете популярной поисковой системой и в логах видите два запроса: скажем, «рейтинги одобрения Обамы» и «уровень популярности Обамы» (если я правильно помню, это реальные примеры из базы вопросов, хотя сейчас они немного устарели…). Мы видим разные запросы, но все согласятся: пользователи ищут по сути одну и ту же информацию, так что запросы следует считать эквивалентными при подсчёте количества запросов, показа результатов и т. д. Как определить, что два запроса являются синонимами?

Давайте формализуем задачу. Предположим, есть два набора пар строк: пары синонимов и пары запросы. Если говорить конкретно, вот пример входных данных для иллюстрации: SYNONYMS = [ ('rate', 'ratings'), ('approval', 'popularity'),] QUERIES = [ ('obama approval rate', 'obama popularity ratings'), ('obama approval rates', 'obama popularity ratings'), ('obama approval rate', 'popularity ratings obama')] Нужно выдать список логических значений: являются ли синонимичными запросы в каждой паре.

Всё новые вопросы..

На первый взгляд, это простая задача. Но чем дольше думаете, тем сложнее она становится.

Может ли у слова быть несколько синонимов? Имеет ли значение порядок слов? Являются ли синонимичные отношения транзитивными, то есть если А синонимично B, а B синономично С, то является ли А синонимом С? Могут ли синонимы охватывать несколько слов, как «США» является синонимом для фраз «Соединённые Штаты Америки» или «Соединённые Штаты»? Такая неоднозначность сразу даёт возможность проявить себя хорошему кандидату. Первое, что он делает — выискивает такие двусмысленности и пытается их разрешить. Все делают это по-разному: одни подходят к доске и пытаются вручную решить конкретные случаи, а другие смотрят на вопрос и сразу видят пробелы. В любом случае, выявление этих проблем на раннем этапе имеет решающее значение. Фаза «понимания проблемы» имеет большое значение. Я люблю называть программную инженерию фрактальной дисциплиной. Как у фракталов, приближение раскрывает дополнительную сложность. Вы думаете, что понимаете проблему, потом смотрите поближе — и видите, что упустили какую-то тонкость или деталь реализации, которую можно улучшить. Или другой подход к проблеме.
Множество Мандельброта

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

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

Часть 1. (Не совсем) простой случай

Если кандидаты задают вопросы, я всегда начинаю с самого простого случая: у слова может быть несколько синонимов, порядок слов имеет значение, синонимы не транзитивны. Это даёт довольно ограниченную функциональность поисковой системе, но в ней достаточно тонкостей для интересного собеседования.

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

Визуально это выглядит так: В коде: def synonym_queries(synonym_words, queries): ''' synonym_words: iterable of pairs of strings representing synonymous words queries: iterable of pairs of strings representing queries to be tested for synonymous-ness ''' output = [] for q1, q2 in queries: q1, q2 = q1.split(), q2.split() if len(q1) != len(q2): output.

append(False) continue result = True for i in range(len(q1)): w1, w2 = q1[i], q2[i] if w1 == w2: continue elif words_are_synonyms(w1, w2): continue result = False break output.append(result) return output Легко, правда? Алгоритмически это довольно просто. Никакого динамического программирования, рекурсии, сложных структур и т. д.

Простая манипуляция стандартной библиотекой и алгоритм, который работает за линейное время, верно? Но здесь больше нюансов, чем кажется на первый взгляд. Безусловно, самым сложным компонентом является сравнение синонимов. Хотя компонент прост в понимании и описании, существует много способов ошибиться. Расскажу о наиболее распространённых ошибках.

Для ясности: никакие ошибки не дисквалифицируют кандидата; если что, я просто указываю на ошибку в реализации, он исправляет, и мы идём дальше. Однако собеседование — это, прежде всего, борьба со временем. Вы будете делать, замечать и исправлять ошибки, но это отнимает время, которое можно потратить на другое, например, на создание более оптимального решения.

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

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

Случайные убийцы производительности

Во-первых, некоторые кандидаты реализовали обнаружение синонимов с помощью простого обхода списка синонимов: …elif (w1, w2) in synonym_words: continue…
На первый взгляд, это кажется разумным. Но при ближайшем рассмотрении идея оказывается очень, очень плохой. Для тех из вас, кто не знает Python, ключевое слово in — синтаксический сахар для метода contains

Источник: https://habr.com/ru/post/437702/

Бизнес
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: