Как стать автором
Обновить

Как с помощью практики на LeetCode я получил несколько офферов

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров53K
Всего голосов 36: ↑30 и ↓6+34
Комментарии54

Комментарии 54

Много где уже читал, что ~500 задач литкод золотая середина. Имхо главное чтобы easy составляли примерно 10-20%

500 задач — это не золотая середина, это P90, если не больше. С 100-150 задачами можно легко проходить собеседования (не все, не всегда, но это и не требуется, так как во время поиска работы будет множество этапов и множество собеседований).

А остальные 80% как распределяются?

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

Почему сразу в негативном русле? Может наоборот, "я сходил на 300 корпоративов за 2 года и получил повышение", "уровень 1 - пойти на корпоратив и общаться с 5ю случайными людьми, уровень 3 - пить с боссом твоего босса".

Опять пропаганда алгоритмиков (((

Фетиш какой то

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

Нужно же как то фильтровать кандидатов. ) К сожалению, никто не умеет нанимать малоизвестных, но толковых разработчиков прицельно. Если никто не знает, как правильно фильтровать, то какая разница как? Тем более, что это про программирование, а не про мячики от гольфа в автобусе и круглые люки. Прогресс.

Два менеджера по персоналу, опытный и стажёр, сидят в офисе и обсуждают дела.
Молодой достает огромную пачку резюме, штук 300.

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

  • А как же претенденты?! Опытный невозмутимо:

  • А зачем нам неудачники?

Баян, но блин, как же хорош!

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

НЛО прилетело и опубликовало эту надпись здесь

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

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

Поэтому видимо предполагается ,что на работе кандидат будет заниматься не чем-то интересным/полезным, а "будет стараться делать усилия" ради чего-то бессмысленного, только потому что так сказал менеджер. И тогда действительно такой отбор подходит.

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

Датели стараются оптимизировать свою работу в ситуации "вас тут много, а я один".

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

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

Датели стараются оптимизировать свою работу в ситуации "вас тут много, а я один".

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

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

Тут несколько проблем:
1) Это или тривиально, либо субъективно и менее формализуемо.
2) Ответы на несколько основных вопросов по технологии можно и выучить, вообще не умея написать ни строчки кода с этой технологией.
3) Этот фильтр будут запросто проходить практически все.
4) В ФААНГе своя кухня. Там свои технологии и фреймворки. Ну, потому что они там появились часто на несколько лет раньше аналогов снаружи. Спрашивать про них ни одного кандидата не получится. Можно, конечно, спрашивать про основы языка, но это быстро выродится в тест с вариантами ответов и статьи на хабре "зачем они эту муть спрашивают. Ну я же не буду компилировать код в голове. Да и в гугле все найти можно, если что".
5) Заболтать интервьювера можно не разбираясь в технологии. Ну, потому что это субъективно почти все, если спрашивать про какие-то чуть более сложные вещи, вроде какой подход лучше. В алгоритмическом интервью у вас либо есть решение задачи, либо нет.

1)Да, в какой-то мере субъективно. Но все-таки люди ищут людей, а не роботы роботов. А значит субъективность неизбежна и в каких-то отношениях она даже лучше, например в вопросе сходимости характеров.

2-3)НУ если это не заранее готовые вопросы из списка "топ 100 вопросов про Х", то все выучить не реально. А вот понимание и его глубину проверить можно, хотя это и требует определенных навыков интервьюера (помимо собственно знания технологии). И к слову, со стороны соискателя, если задают интересные и глубокие вопросы на интервью, то это сильно располагает в сторону этой вакансии при прочих равных.

4)Ну, по внутренним технологиям спрашивать смысла нет ,а вот спросить, как бы человек решал такую-то проблему с использованием своего стека и вообще про то с какими проблемами тот сталкивался может показать реальный опыт. Если конечно заменить онлайн проверку кода онлайн-тестом, то это будет глупо. Но конечно, у ФААНГа много претендентов, поэтому здесь хозяин барин, но я сомневаюсь что даже для них это лучший вариант.

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

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

1)


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

В больших компаниях умеют работать с разными характерами. Ну и проверка, что человек адекватен происходит на особом интервью (behavioral interview, ака "расскажите, были ли у вас конфликты на прошлой работе и как бы вы поступили вот в такой ситуации). А субъективность большим компаниям — только во вред. Ибо засудят за нее. Вспоминается эпическая история, где чувак судился с гуглом за дискриминацию по возрасту, потому что его спросили "соколько бит в байте", а в его время их было сколько угодно. Если давать разгулятся субъективности то иски посыпятся в изобилии.


2-3) Но конкретная технология — это весьма ограниченная область. Это задачек на бинпоиск можно генерировать счетное множество, а вот вопросы про технологию быстро закончатся.


4) Вопрос вида "как бы вы решали вот такую задачу" — это design interview. Там на "поболтать" но их задают только сеньерам. Имеет свою нишу, но уступает по остальным пунктам алгоритмическим задачкам (очень ограниченный пул интервьюверов, субъективность и все остальное)


Не хватило пяти минут, переволновался, не повторил конкретно это алгоритм, не понравилось решение интервьюеру, и так далее.

Нет, тут все объективно. Или не хватило 5 минут, или хватило. Решение или работет быстро, или имеет плохую ассимптотику. Двойных прочтений тут нет.


Да, это случайный шум. И даже матерый олимпиадник может переволноваться или затупить вот на этом конкретном вопросе. Но для уменьшения этого шума есть подсказки и градации оценки. Типа, код не успел написать, но идею решения рассказал — уже leaning hire. Если на остальных интервью не случится неудачи — то комитет кандидата одобрит. Кроме того, этому шуму подвержены любые другие интервью. И на "обсудить технологию" кандидат может вот конкретно эту часть подзабыть, или переволноваться, или интервьюверу вот этот подход кажется не лучшим (вообще, по технологиям-то холивары устраивают. А вот по решениям задачек — нет).

Может все и не нужны, но когда на каждом месте работы я вижу как люди регулярно допускают N+1 в базу, или создают три вложенных цикла что уводит время работы функции в полный ад. И кстати все эти люди успешно прошли собесы и рассказали о сложности функций и всем таком.

И кстати все эти люди успешно прошли собесы и рассказали о сложности функций и всем таком

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

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

Кроме того, такой метод все выше будет задирать планку, а в этом случае выгоду от этого получат те кто регулярно меняет работу, и hr департамент. Лояльные же сотрудники, готовые работать 5+ лет на одном месте будут проигнорированы.

По старому месту работы говорили, что человек в среднем уходит после 2х лет.

Это тот момент, когда kpi hr, приносит вред компании.

Но софт компаннии обладая большой нормой прибыли справляются с этим.

Автор оригинала: Minh Nguyen

Здесь можно уже заканчивать чтение. Есть ли вообще аналогичные истории о найме сотрудников из бывшего СССР иностранными или местными компаниями?

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

Полно таких историй. Достаточно открыть linkedin и поискать людей из России в фирмах из биг теха.

Да так же достаточно таких историй, чем люди из бывшего СССР отличаются в этом плане?

Сотрудников из бывшего СССР иностранные компании нанимают используя те же подходы. Задают те же вопросы. Они решают те же задачи. Никто не адаптирует процесс найма по географическому признаку. Нюансы географии это обычно вопросы визы, легального статуса, пакета релокации и т.д.

Нюансы географии это обычно вопросы визы, легального статуса, пакета релокации и т.д.

По большем счету эти вопросы для граждан России и Белоруссии стали актуальными с начала известных событий многие страны закрыли консульства, а какие-то и просто перестали выдавать рабочие/студенческие визы, до этого визовые вопросы были скорее даже на последнем месте при трудоустройстве в иностранные компании.

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

Задачи задачам рознь. 150 hard задач с хорошим покрытием разных тем это куда круче чем 600 medium задач с уклоном, скажем, только в графы.

Интересен и уровень позиции, странно что об это не написано. Middle?

Выполнив свою задачу получения должности в BigTech, я нацелен стать хорошим разработчиком ПО

Всегда казалось, что сначала надо стать хорошим разработчиком ПО, а потом получить хорошую должность, но нет.
Задрочил литкод, прошёл собес, теперь будет, собственно, учиться программировать.
"Что делать будем? Завидовать будем!"

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

НЛО прилетело и опубликовало эту надпись здесь

Нет, лотерея — это совсем рандом. А тут отбираются люди, которые 1) Могут учиться и чуть-чуть соображать. 2) Могут запрограммировать что-то чуть сложнее hello world и объяснить этот код. 3) Когда им встретится Задача На Алгоритмы, они ее хотя бы заметят а скорее и всего решат.


Первые два пункта 100% релевантны искомым качествам. Последний хоть и работает редко, но тоже работает. Мне встречались и ДП, и дихотомия по ответу, и хитрые стеки/очереди, и всякая математика.


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


Зато реальный равноправный шанс проявить себя в FAANG появится у каждого

Стоп. Шанс-то есть у всех. Хотите в фаанг — порешайте немного задачек. Одну-две книжки прочитайте — и пожалуйста. Сам ваш ник намекает, что это даже макака сделать может, ведь так?

Я вот не знаю что этими алгоритмами всех так пугают. Из личного опыта в FAANG на алгоритмах обычно дают задачи что обычных знаний и банальной логики полученных за годы программирования хватает с лихвой без всяких предварительных проходов по литкоду. Хотя конечно может мне просто везло так, но по отзывам коллег и друзей так было примерно у всех (хотя может на бэкэндеров или в общем на вэб позиции и сложнее в плане алгоритмов или если в резюме ничего нет например, но на всякий C++ с опытом 10+ лет вот так).

на литкоде немало задач плохого качества:

иногда просто невыносимо отвратительного, часто даже суть задачи сформулировать чётко не могут, порой доходит утрируя до "давайте сыграем немного в другую игру 21 (очко), пример1: пустое множество, пример2: два туза - выиграл(чо?)." сиди догадывайся, ах да забыл, в единственном хинте: use DP (спасибо помогли).

и таких задач тяп-ляп-итаксойдёт от фаанга особенно от гугла много
одна из последних
https://leetcode.com/problems/strange-printer/

вторая проблема - DP-дедовщина "раз мы страдали, а значит все должны именно этим страдать и знать и уметь". Часто задачи намеренно изменены до уровня практической неприменимости лишь бы ДПшечка их так глубоко любимая завелась, иначе up-down подход не сработает. (пример: один или даже нуль элементов это тоже комбинация или строка, но на вопрос почему пустых множеств подразумевается всегда одна штука а не бесконечность никто так и не ответил)

ну и банальное засилье однотипных задач "DP(func) mod 10e9+7 = leetcode". где func высосанная из пальца бесполезная на практике комбинаторика, но мигом улетающая в бесконечность, поэтому результат по модулю как костыль. (задача ради задачи, как гробы-вопросы с анаграммами в ЧГК)

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

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

я обычный разраб, разрабатываю с 90ых годов в начале с бейсика и паскаля/делфи потом железо си и теперь уже Rust. и вот еслиб не пара отказов по причине "у вас плохой рейтинг на литкоде", в жизнь не стал бы прокачивать эти имеющие мало общего с реальным кодингом задачи в моей firmware специальности. Точнее как прокачиваю - чтоб время не терять я их ломаю, сделал брутфорсом за 5 минут и далее. Воспользовался тем что тест кейсы ленивые и слабые - отлично, минута кодинга, однострочный итератор и забыл про эту чушь, идём к следующей.

Честно не встречал конторы, которых интересует именно рейтинг на литкоде (это конечно бред), даже в ФААНГ такого нет - решил на собесе, молодец, всем все равно даже есть акк на литкоде или нет. Может какие местные особенности или просто не повезло с фирмами (учитывая что вы упомянули йены - Япония?)?

еслиб не пара отказов по причине "у вас плохой рейтинг на литкоде"

Ну это действительно тупые наниматели. Вам повезло, что вы туда не попали. Это какой-то карго-культ. Вообще, то, что работает для ФААНГа, не всегда работает для "ООО Рога и Копыта". Бездумно копировать да еще и вот так искажать — это бред. В рейтинге на литкоде не проверяется почти ничего, что проверяется алгоритмическим интервью, ведь там не смотрится код, а сами решения могут быть спертыми с интернета.

Вот кстати если реально работодатели у вас доходят до того, что именно смотрят рейтинг, то вообще можете открывать любую задачу, идти в обсуждения, там в топ будет что то вроде "best C++ solution top 1% performance and memory", копируете оттуда код, вставляете, сабмитите, профит. Можете себе хоть сотни хард задач набивать, если вас само решение не интересует, а нужно просто рейтинг набить (в литкоде как раз самое веселое это придумывать как решить не брутфорсом, а максимально оптимально, по сути программерские головоломки, но понятие весело у всех свое, да и банально времени может не быть на это). Но я бы если честно сам поостерегся в таких фирмах работать.

да это Япония, они любят всякие рейтинги вплоть до маразма, например когда в Ракутене (азиатский амазон) проходишь все интервью, всем очевидно что английский есть т.к. беседуешь ртом а потом ещё по книжке а-ля "моя борьба" основателя пишешь сочинение и его проверяют. Но вот им под конец ну вот прям нужны баллы TOEC или подобный, вот возьми и принеси.

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

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

Ну в таком случае сочувствую что у вас такие правила игры, я конечно слышал что в Японии своя культура и она очень специфичная. В Сев.Америке попроще в этом плане, такие задачки на интервью я встречал всего 2 раза и оба раза в ФААНГ, как то в общем ощущение что остальные фирмы таким не злоупотребляют (и уж точно рейтинги никто не смотрит). Хотя с другой стороны и уволить в один день могут.

это работает в обе стороны.. все хотят устроиться в условный фанг или что то мировое и очень крупное. т.е. все идут условно говоря в топ 10 рейтинга или топ 100 фирм которые у всех на слуху которые занимаются всем, от строительства домов до нейросетей и автопрома.

Остальные 99% менее крупных фирм как-то выживают - им приходится конкурировать с рейтингами. Да, немало тех кто бездумно копирует практики крупных или импровизирует очень неудачно и безграмотно, но можно найти и адекватное что либо и с ЗП не в разы меньше фанга.

Что не так с задачей https://leetcode.com/problems/strange-printer/?
Вроде условие не допускает разночтений. Да еще и примеры показывают как работает перепечатывание текста сверху.


mod 10e9+7

Это специфика системы проверки. Можно было бы просить выдавать точное число, используя длинную арифметику. Но тогда сложности решений будут, например, не O(n^2) и O(n^3), а O(n^4) и O(n^5) — а это уже тестами разделить будет гораздо сложнее (ведь у решения с лучшей ассимптотикой часто константа чуть хуже). Или тогда надо поднять ограничения и давать каждому тесту работать не 100мс, а 10 секунд, что не масштабируется.


DP-дедовщина

Ну не знаю, мне из 5 задач на собеседованиях ДП задавали только один раз. При этом ДП я в прод коммитил, а вот Дейкстра ни разу не пригодился. Если вас ДП на литкоде достало, то пропускайте задачки с тегом DP. Там много и других тем.


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

Это один объект, ну потому что любые две пустые строки совпадают. Там нет различий. Приписав их к одинаковым строкам, вы получите одинаковые строки. Если считать, что их не 1, то вообще вся логика ломается. А так, если вам не нравится пустая строка в ответе, можно было бы просить посчитать без нее, ну было бы в решении -1 в конце и все.


четвёртая проблема — неадекватная оценка сложности и отсутствие потолка сложности.

Ну не знаю. Мне пока не встречался hard, который не решался бы за час максимум. Пару раз встречал medium, который можно было бы и в hard записать. И несколько раз hard, которые вполне себе medium. И да, я согласен, что hard давать на собеседовании — очень плохо и никогда так не делаю. Про весь faang не знаю, но в гугле на собеседованиях дают задачки максимум нижней половины medium. Да, иногда есть дополнительные вопросы, которые задачу и до hard дотянут, но они не предполагают решения кандидатом. Они на просто "поговорить о задаче". Если их кандидату задают, то это уже очень хороший знак. Даже если кандидат ничего про них не расскажет это будет лишь разделять hire от strong hire.


А так да, нигде не видел советов при подготовке к собеседованиям решать hard. Везде советуют делать упор на medium.

Добавлю к комментарию сверху:


ну и банальное засилье однотипных задач "DP(func) mod 10e9+7 = leetcode". где func высосанная из пальца бесполезная на практике комбинаторика, но мигом улетающая в бесконечность, поэтому результат по модулю как костыль. (задача ради задачи, как гробы-вопросы с анаграммами в ЧГК)

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

НЛО прилетело и опубликовало эту надпись здесь

А почему у вас эти два множества не пересекаются? Одно другому в общем то не мешает.

и как часто бизнесу надо чтоб разраб-одиночка разрабатывал только алгоритм с нуля за пол часа, порой без доступа к гуглу и без возможности обговорить и немного изменить ТЗ?

А почему вы думаете что собеседование в ФААНГ это только литкод задачки (по крайней мере на мидл+ уровень)? Там может быть по 6 раундов собеседований в день по несколько дней и задачки занимают может быть 10% от всего времени, остальное это те же самые обсуждения теха, резюме, подходов и так далее, просто вот ФААНГ может еще себе позволить в дополнение к этим темам поспрашивать немного задачек (которые в общем то особых сложностей у людей с опытом программирования вызвать и так не должны). То есть выбирают пересечение - может решать и решал реальные проблемы и более менее знает что такое структуры данных и простой алгоритм может написать.

зачем тогда превращать литкод в ещё одно высшее образование т.к. по факту "справка что не дурак"? они задают моду и этим нагло пользуются тем что другие подхватывают и нанимают меньшее кол-во людей из-за избыточной фильтрацией. В итоге не раз слышал соображения например "если надо готовиться по 6 раундов по несколько дней то зачем идти на 5 миллионов йен в год с 100 часами обязательной сверхурочки в месяц если проще сразу в фаанго-гугл пробовать"

Ну тут все просто, они хотят и могут и считают что знание алгоритмов и структур данных для кандидата маст хэв - их дело, вы можете к ним не идти если вас такие правила не устраивают (всё же фаанг не для всех, не том смысле что кто-то "не достоин", а в том что там определенная культура разработки которая понравится далеко не всем, многим более приятна атмосфера небольших фирм где есть сильное влияние программиста на проект). Если мелкие фирмы копируют и не могут из-за этого нанять человека - тоже их проблема, может и не стоит идти туда, где процессы настолько бездумно копируются. Я чаще вне ФААНГА алгоритмику встречал давольно редко.

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

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

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

Minh Nguyen

Я с прошлого ноября прособесил 12 вьетнамцев на джаву. Взяли всего одну девушку толковую. У остальных интервьюеров выхлоп такой же или вообще по нулям. Это прям очень специфичная публика. У нас в СНГ как-то по дефолту считается, что инженер должен шарить и понимать, что под капотом. А этим ребятам вообще все параллельно. Могут что-то там нашлёпать - и так сойдет. Типичный диалог с сеньором-помидором с 8 годами опыта:

Я: Зачем вообще нужен HashSet? В каком кейсе его применить можно?

Сеньор: ... бла бла, понятия не имею...

Я: Хорошо, а почему у него вообще приставка Hash?

Сеньор: Потому что у объектов есть методы hashCode и equals.

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

Короче, спрашиваешь какие-то реал-лайф кейсы - не знают. Переходишь на более приземленные вещи - не знают. Когда уже спрашиваешь "что такое Х" - начинают отвечать по учебнику. А вот "зачем нужен Х" - такой вопрос уже не тянут.

А еще мастерский скилл в области "для меня большая честь быть на этом интервью" и прочий корп-булшит. Так что удачи Амазону.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий