От Facebook HackerCup 2011 до стажировки в Facebook

Начало

Всем привет! Часто, пробегая утром глазами заголовки на Хабре, я вижу статьи о том, как кто-то уехал учиться зарубеж. И каждый раз я думаю, что пора уже перестать лениться и описать свою историю о том, как я уехал стажироваться в Facebook.

Коротко о себе на начало 2011 года, о том, что я помню сейчас. Я занимался спортивным программированием. Не очень успешно, но не сказать, что провально. Рейтинги на TopCoder и на Codeforces были вполне высокие, и я готовился к последней попытке пробиться в финал. Я поучаствовал в Facebook Hacker Cup 2011, как в одном из постоянных контестов, где просто можно порешать задачи. Там я дошел до 2 раунда и получил футболку, решив 1 задачу (самое классное, что я не знал как ее решать и думал уже выключать компьютер, но вдруг озарило). И эта задача перевернула всю мою жизнь.

Через 2 месяца, в апреле, мне на почту пришло письмо от рекрутера Facebook, что мое выступление в HackerCup было хорошим, и не рассматриваю ли я возможность поработать в их компании. Ну сказать, что я был удивлен, не сказать ничего! До этого еще двое моих друзей ездили на стажировки: один в Microsoft (впоследствии остался там), другой в Facebook (теперь работает в Google). Я был наслышан о жизни инженеров «там» и взялся за составление резюме. Резюме вышло крайне скудное, в основном соревнования, где я участвовал, а опыта работы-то и не было. Но телефонное интервью мне назначили. И позвонили почти сразу. Отмечу, что я собеседовался на работу, а не на стажировку.

Телефонные интервью

Первый звонок был от рекрутера. Надо сказать, что английский я начал учить года в 3 и учил до института с очень хорошим преподователем. В институте вроде тоже на пары ходил и практика была, но я не понял процентов 80 из того, что говорила рекрутер. Она говорила очень быстро, спрашивала, на чем я пишу, мои интересы. Потом было назначено первое техническое интервью. Через пару дней оно состоялось. Простые задачи на алгоритмы. Только последяя вызвала некоторые затруднения. После мне написали, что надо назначить второе. Назначили. Пришло время для него. Задача на алгоритмы — легко, а вот потом надо было спроектировать news feed. Я на самом деле что-то говорил, пытался рассуждать, приободряла фраза «yes, that makes sense!», но после этого попросили назначить третье. Я до сих пор думаю, что это из-за моего «дизайна» news feed'а. Третье было проще, опять задачи на алгоритмы. Довольно простые. Тогда первый раз мне дали задачу, которая потом стала уже самой классикой — найти в массиве k-ый максимум. В контестах мы всегда делали это используя stl — nth-element, и я знал, что сложность его линейна, но тут надо код писать руками, но тоже осуществимо!

Через пару дней мне пришло письмо, что меня зовут на онсайт интервью в США. При чем оплачивают проживание и перелет. Я до этого никогда не был в Америке, и это было просто ВАУ — нахаляву слетать туда! Но уже был май, а лететь надо в июне. Визы нет, в посольстве очереди из Work And Travel'ов, но все-таки я успел все сделать до рейса, который был забронирован Facebook'ом, и полетел на интервью.

Онсайт интервью

В Калифорнии было очень круто! Мои друзья, которые переехали туда относительно давно, показали мне Сан Франциско, я посмотрел окрестности. Но само интервью было жестким. 4 интервью подряд по 45 минут — куча задач. Код пишешь на доске. Три я отстрелял отлично, а вот 4ое… Я завалил самый лекгий вопрос по javascript (сейчас для меня это кажется ерундой написать свою реализацию функции bind, а тогда я не знал, что она делает, так как на js писал только легкий front-end для своего диплома), а потом был дизайн на 40 минут.

Вернувшись домой, я вставал в 5 утра каждый день, так как разница во времени 13 часов — нехилая. И в одно утро прочитал на почте: unfortunately… Сразу как-то стало грустно! Но уже так просто я не хотел отступать! Я ответил на письмо, что если на работу не подхожу сейчас, может тогда на стажировку? Через пару дней мне дали согласие. Даты: с сентября до середины декабря. Тут стало ясно, что я пропускаю чемпионаты по спортивному программированию, которых ждал и готовился все это время. И в этот момент я осознал, что моя карьера олимпиадника завершилась в пользу другого направления. Надо сказать, что за пару месяцев до отъезда я начал усиленно читать книги, статьи (до сих пор не разобрал кучу вкладок с Хабра), но уровень был все равно очень низкий. Я не умел и не знал много чего, но тогда мне не казалось это страшным.

Стажировка

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

Стажерам дают квартиры — по 4 человека в квартире, по 2 — в комнате. Аренда квартиры уже оплачена и не надо платить коммуналку. Так как я хотел, чтобы моя жена прилетела ко мне на пару месяцев — для меня это был не вариант. В группе на Facebook'e для стажеров мы списались с парнем из Канады — он тоже хотел снимать жилье сам. Мы договорились, что будем соседями. Когда я прилетел, мой будущий сосед сообщил, что он уже 2 недели не может найти квартиру. У меня было 4 дня до старта стажировки и я принялся за поиски. Нашел объявление — поехал, не понравилось. А рядом увидел еще один дом — пошел туда и там уже все было круто! Мы сняли 2-спальную квартиру + гостинная за 2020$ в месяц. Еще взяли машину в аренду. Правда я ездил на работу на шатле — это такие маршрутки от компании — на них ездят только работники — очень удобно. Сейчас, например, в наших шатлах есть еще и вай-фай, и я слушаю курсы Coursera по пути на работу и домой. Итак, жилье было найдено, стажирока началась.

Если честно, первое время было очень трудно — плохо понимал команду, задания вызывали ужас, но я работал часов по 12-13 в день и ходил на работу на выходных — по 6-7 часов. Мой менеджер мне не помогал так, как надо, я делал все сам. По началу я не понимал важность вопросов — спрашивайте! — я стеснялся, чувствовал себя некомфортно из-за своего английского, поэтому первый месяц разбирался с каждой штукой очень долго. Потом пошло быстрее. В конце, я уже свободно ориентировался в коде, понимал все и отвечал на вопросы новичков. Так у меня появился скилл чтения кода, что сейчас очень помогает. Все задания я сделал. Многое ушло в production. Приятно было услышать от друга, с которым мы начали стажировку (ему дали оффер после и он сейчас работает в facebook), что недавно он разбирался в моем коде.

Попробую резюмировать стажировку:

Офис

Недавно мы были в новом офисе Facebook — это уже не то! Он, конечно, большой, стало много кафешек, но тогда мы работали в Пало Альто. Небольшой офис (относительно), но очень крутой! Теннис, рядом баскетбольный корт, настольный футбол, куча диванов, игровые автоматы, постеры, просто hack атмосфера.

Еда

В компаниях подобного уровня обычно кормят бесплатно. Три раза в день и очень вкусно! По началу ощущение шведского стола где-нибудь в Турции и хочется попробовать все. Добивает то, что куча micro-kitchen со сникерсами, твиксами, бочками M&Ms и т.д. Еще холодильники с любым напитком, какой хочешь и все это бесплатно. Я прибавил в весе килограм ..., в общем, много. Сейчас вернулся в свой вес и не повторяю таких ошибок. Мой метод — беру утром на кухне снеки на весь день и стараюсь брать только орехи и йогурт. А на обед, завтрак и ужин не брать тортики, а только фрукты (которых тоже очень много).

Люди

Ребята очень крутые. Очень! И все дружелюбные. Любой бросит все, если ты что-то у него спросишь и будет это объяснять. Поработав так, я сам стал таким. У команды многому учишься. Еще многому учишься, читая код на code review. Я узнал много очень классных хаков C++ и javascript. Если поставить себе цель научиться и спрашивать — очень быстро станешь учителем сам :)

Условия

Я работал на 15 дюймовом MacBook Pro. Тогда я пересел на маки, хотя первую неделю не понимал, как им пользоваться. Любой софт — бесплатно (если по работе, конечно). 32 дюйма монитор в офисе, эргономика везде — я заказал себе клавиатуру Microsoft natural ergonomic 4000 — принесли через 20 минут. Дали iPhone 4S (тогда это было в моде) с безлимитным интернетом и звонками по всему миру (тоже не наглеть, ведь безлимит — это просто счет идет компании). В общем все для тебя, только пиши код. Сейчас я заказал себе Kinesis, ergo мышь и все это мне предоставили!

Программирование и технологии

Отдельный пункт. Расскажу как работал на стажировке.
Во первых, я научился пользоваться терминалом. find, grep — это просто клад. Я стал пользоваться VIM. Не просто так, а дошло до того, что я снес все IDE. Я обязательно поделюсь своим конфигом для VIMа, если кому-то будет интересно! Более того, сейчас я дописываю свой плагин для вима, но об этом в другой статье. Git — это то, что я не умел и чему научился. Code review — без него вообще не понятно как работать. Ведь идея отличная — проверить код до того, как его отправить. Чтобы избежать лишнего рефакторинга, лишних багов, чтобы все уже знали, что ты написал, а не узнавали это случайно, через месяц, когда потратили N часов, для написания этой же фичи. Вот в принципе все. Это все, что нужно для того, чтобы работать! И сейчас я использую все то же самое! В Facebook это вообще культура — культура «hacker». За это время я стал работать на javascript, python, java. Продолжаю писать на C++. Узнал много паттернов и тонкостей, кучу новых инструментов и приемов.

Зарплата

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

Друзья и знакомые

Тут все ясно без слов.

А что дальше?

В моем резюме появилась еще одна строчка. Благодаря ей я получил пару десятков собеседований и теперь работаю в центральном офисе Google. Мой уровень резко растет. На почте тонны предложений о собеседованиях. Много хакатонов, свои проекты, команды, люди, которые увлекаются тем же! Тогда в 2011 году я и не думал, что через 2 года окажусь там, где я сейчас!
Я описал все скомкано и кратко! Если у Вас есть вопросы — спрашивайте в комментах, отвечу с радостью!

P.S.
У меня взяли интервью, когда я вернулся после стажировки. Кому интересно — вот ссылка.

P.P.S
Пишите мне, если вы хотите попробовать свои силы в Google! Отвечу всем! Моя страница ВК уже ощутила старт хаброэффекта, так что я думаю лучше на почту alexffeta@gmail.com — сделайте в теме [TryGoogle] — я настрою на это фильтр!
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

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

    +3
    Восхищаюсь!
      +7
      Воспользуюсь возможностью :)

      Желающие повторить подвиг Александра (со стажировкой или полной занятостью) могут обращаться по адресу romanchadnov@fb.com
        +2
        Я добавил в пост свое пожелание, вдохновленный комментов Ромы! Пишите мне, если хотите попробоваться в Google!
          +2
          Поздно! :)
            +2
            Талантливых ребят хватит :) Хорошо ведь, когда у людей есть выбор
          +3
          Не каждый готов сорваться и уехать на другой конец планеты. Но если есть потребность в решении сложных и полезных задач дома, пишите мне — ivan.gorbachev@odnoklassniki.ru :-)
            +1
            Дома == в Москве? :)
            P.S. необычайно высокая концентрация вакансий от acm-щиков :)
              +1
              Дома == в России. Я это сказал на контрасте переезда в другую страну (другую часть планеты) :)
                +1
                Можно и в Питере :)
                +2
                Красавчик )
                0
                А где мыло Марины Морено? :D
                  +1
                  Моего мало? :)
              +1
              Мотивирует конечно, жаль пока уровень не тот, чтобы за бугор улетать :(
                +17
                По собственному опыту скажу, уровень всегда будет «не тот», так что нужно открыть ящик, чтоб проверить пульс кота.
                  +4
                  Как я понял у автора очень хорошо получалось реализовывать алгоритмы. Это к сожалению не каждому дано. Вроде смотришь на себя. Хм… ну да… знаю например как развернуть сложные веб приложения на фреймворках, ну на javascripte вроде хорошо выходит, юзаешь пару обкатанных библиотек, немного велосипедничаешь в свободное время на каком нибудь нод-вебкит, всеми силами стараешься расти на работе и в свободное время чтобы не быдлокодить, расширяешь кругозор «теплыми и ламповыми» mongo db и python, вроде и опыта немного есть, да и проблемы по проектам разные решал. Но так чтобы что то хакать, придумывать или использовать алгоритмы, решать головоломки, с ходу так с нуля написать bind, или observer какой нибудь, пройти стажировку в Фейсбук или Гугл это вряд ли… Объективно понимаешь что не тянешь этот уровень сейчас Так что хочется похвалить автора за его успехи! Так держать! По доброму завидую)
                    +1
                    1. Если все будут заниматься алгоритмами, то UI и прочего мы не увидим.
                    2. Если Вы будете заниматься алгоритмами(хотя бы уделять им немного времени), то Ваш уровень вырастет.

                    Никаких «ему дано, а мне нет», тут нет. Алгоритмы просто часть разработки ПО, и чтобы поднатореть в них нужно ими заниматься. Это как с DB, regexp и прочим. Разницы нет никакой.
                      0
                      Конечно я согласен вами. Я просто имел ввиду что всем по разному это дается. Кому-то легче, кому-то сложнее. Наверное как то так.
                        +2
                        Сразу извиняюсь за задержку моих ответов, просто только встал! По поводу Ваших коментариев — я плюсую — кому-то легче, кому-то сложнее. Недавно встретил человека, который проделал очень длинный путь, но в итоге добился своего. Мой личный опыт (а также опыт друзей) — попытка стажировки. Дело в том, что на стажировка дает много плюсов (помимо опыта!). Например, на моих интервью добрых 50 % времени я рассказывал о своих проектах. Ну и, конечно, Ваше резюме выглядит намного впечатляюще. Я, кстати, сейчас говорю не только о загранице. В России Яндекс и СКБ Контур (2 компании, о которых я знаю) проводят стажировки. Задачи на алгоритмы лично мне помогают держать мозги в тонусе. Я продолжаю решать регулярно. Очень рекомендую codeforces.ru и topcoder.com. Порешав может с пару месяцеа регулярно, увидите, что будет прогресс.
                  0
                  Вдохновляющая статья!
                    +6
                    Большая. Очень.

                    Можно в цифрах?
                      +2
                      Как правило — нельзя. Да и какая разница?
                        0
                        Что за правило? Если спросил, значит есть разница.
                          +2
                          NDA, которое. Не уверен про FB, но в аналогичных компаниях просят не рассказывать о зарплате.
                            0
                            Давайте подождём автора. Нет — так нет. Но мне, всё же, интересно, что за такая «очень большая» зарплата.
                              +2
                              К сожалению, я не могу назвать цифры, NDA. Однако вот — горжусь Гуглом — найдет все :) вторая строка. По зарплате есть градации. Допустим, бакалавр получит минимум из этой цифры, магистр — больше, ктн — еще больше. Мне еще давали надбавку на жилье, так как я отказался от корпоративной квартиры.
                          0
                          Спасибо, но я хочу услышать конкретную цифру от автора.
                            0
                            Вот я бы не назвал указанные там зарплаты как «Большие. Очень.»
                            Особенно после вычета налогов.
                              +2
                              Кормёжка, оплата квартиры для интернов, транспорт до офиса, железки, софт и телефон тоже многого стоят. Обычно эти вещи много от зарплаты отнимают.
                                0
                                Ой, надо читать все комменты. Да, Вы правы! Налоги большие, но платите только их и за квартиру. Все. Остальное уже накопление или траты на нужды. В сравнении с зарплатой России 50К рублей… Тут платят так, что хватит на все и останется. Не забывайте, что есть еще премии и другие бонусы. И зарплата не в месяц а в 4 недели. Ну и tax refund — тоже есть!
                                  0
                                  Эти вещи от зарплаты не отнимают
                                    0
                                    Я имел ввиду, что если компания это не оплачивает, то эти вещи «уходят» из зарплаты. Т.е. отнимает, конечно же, не компания, а вещи типа квартиры и обедов съедают часть дохода.
                              0
                              Зарплаты в долине на фул тайм для тех, кто только что выпустился, имеют порядок 90-120К в год.
                              Стажеры получают на помесячной основе в районе пяти-шести в месяц.

                              Это все очень примерно, и меняется, но идея должна быть понятна. Налоги — около 30%-35%.
                              +1
                              Подобные статьи читаю с удовольствием. Всегда было интересно читать он каких-либо достижениях подобного рода у других людей.
                              Как высказались выше — жаль уровень не тот, а быть может просто нет того «звоночка», чтобы все бросить и слетать куда-нибудь набраться опыта.
                                0
                                начнём с того, что у автора был хороший алгоритмический уровень. Попробуйте сначала занять в Hacker Cup место в первой сотне во втором туре ;)
                                  0
                                  Отличная история!

                                  А расскажи как у них там ведётся разработка? Как на счёт кучи надоедливых проджект-менеджеров, которые, вместо программирования, заставляют заниматься скрамом и прочим эджайлом?
                                    +1
                                    В Facebook такого нет, скорее наоборот — можно заставить менеджера программировать :)
                                      +1
                                      Да в Google тоже не замечал. Разработка идет очень динамично! Спасибо Facebook, сейчас это мой девиз — лучше сделать, сломать, починить, чем побояться, что сломаешь. Куча идей, и они не просто «когда-нибудь напишем», а сразу же делаются, подхватываются и пишутся. Это очень вдохновляет! ПМ скорее находится рядом, во все вникает, знает весь проект и слушает мнение разработчика! Это очень-очень помогает.
                                    +6
                                    Я вот, к сожалению, никогда не занимался спортивным программированием и плотно алгоритмами. С чего стоит начать, чтобы пройти алгоритмические задачи на собеседовании в Facebook, Google etc., в каком направлении «пилить»?
                                      +3
                                      В первую очередь стоит прочитать Кормена.
                                      Так же неплохой список литературы собран на e-maxx.ru/.
                                      Во вторую — решать задачи на acm.timus.ru/ и участвовать в соревнованиях topcoder и codeforces.
                                        0
                                        Рус, хоть бы черкнул в личку, как дела твои :)
                                          0
                                          Да не вопрос :)
                                        +1
                                        Читайте статьи, как в больших компаниях реализуют разный фунционал, и про архитектуру этих проектов. Примером такой статьи является www.facebook.com/note.php?note_id=76191543919.

                                        Обычно подобные статьи являются научными работами или докладами на конференциях. У гугла есть целый сайт: research.google.com/. Регулярно подобные статьи появляются на highscalability.com/. И, конечно же, надо отлично знать сложность базовых алгоритмов и операций со структурами данных в О-нотации.

                                        Задачи на собеседованиях обычно дают практического характера: как сделать top5 статей (и ответ «select * from… order by views limit 5 явно не подходит), как сделать новостную ленту типа фейсбучной, или как сохранить миллиард файликов. При этом обязательно надо понимать, какую производительность можно получить с диска и из памяти, на сколько хорошо параллелится задача при одновременных запросах от разных клиентов, и когда стоит записывать данные из памяти на диск.

                                        Когда вы решаете задачу — надо мыслить на уровне алгоритмов и структур данных. Если вы отвечаете „а вот тут поставлю mongo/mysql/oracle/btrfs“ — почти наверняка последует вопрос „а почему именно это“ и „почему оно выдержит требуемые нагрузки“. Кстати, какие именно нагрузки будут — отдельный вопрос, который надо задавать интервьюеру, и в том числе и по подобным вопросам становится понятна квалификация собеседуемого.

                                        Ну и отдельно стоит посмотреть задачки со всяких квалификационных раундов hacker cup и с собеседований, иногда там попадаются именно алгоритмические штуки. Можно почитать про штуки типа хэштаблицы локов, lock-free структуры или boost intrusive. Обязательно понимать, как могут синхронизироваться треды или процессы. В процессе использования готовых фреймворков-приложений-серверов пытаться понять, как именно они работают, и почему именно так.
                                          0
                                          Попробовать порешать, поучаствовать в соревнованиях на codeforces.ru или topcoder.com/tc например. В процессе этого (и при последующем чтении разборов и обсуждений) будет становиться понятно, каких знаний не хватает, о чем стоит почитать, что попробовать.
                                          На каждом из этих сайтов уже очень много материалов по теме и большое community.
                                            0
                                            Вам ответили отлично! Больше добавить нечего, разве что послушайте Coursera по алгоритмам. Для старта очень неплохо. Курс Седжвига. Есть еще классная книга. Рекомендую для подготовки к собеседованиям.
                                            0
                                            Очень классная статья, может и не особо познавательная, но вдохновляющая. Спасисбо.
                                              +1
                                              Когда я закончил читать — осознал, что вернулся в свой мир.
                                                0
                                                Класс! Нет подготовки топ-кодера, задумался может начать и сюда копать.) Как я понимаю все спрашивают алгоритмы и решения задачек, знание стека технологий определенного или тонкостей языка, на втором месте или даже на третьем?
                                                Расскажите, стажировка подразумевает какую то зарплату?
                                                И про переезд с семьей (уже я так понимаю это к гуглу относится) расскажите, помощь от компании, как жена нашла себя в другой стране (не все профессии к сожалению так «кроссплатформенны» географически, как программист).

                                                И про хакатоны немного, что делаете, в какую сторону копаете?
                                                  +3
                                                  Я в комментариях дал ссылку на книгу Cracking coding interview — там подборка задач с интервью старых лет. В журнале «Хакер» есть (или была, не читал после переезда) статьи об интервью. Обычно это легкие и средние задачи на алгоритмы. Тонкости языка — редко (2 раза спрашивали — bind (javascript), virtual functions (c++)) — это классические вопросы — есть в книгах, поэтому могу их открыть). Знание технологий — это по сути Ваши проеты до интервью. Вас скорее всего о них спросят. Меня просили на собеседовании не только алгоритмы написать, но и спроектировать что-то. После стажировки, я уже лучше это сделал :)

                                                  Стажировка предполагает зарплату + еще всякие мероприятия для стажеров, например, у нас был ужин в одном из самых крутых ресторанов в Пало Альто, поход на игру 49ers (это американский футбол — звезды San Francisco), sky fly, еще что-то было. Ну еще Вам предлагают жилье — когда едешь один — это клад — там уже есть мебель, за все заплачено. Дают велики — это основной транспорт для многих. Есть фитнес залы, спорт площадки, музыкальные комнаты (это когда там куча гитар, ударные, сентезатор, и еще Guitar Hero :) ). Зарплата на уровне зарплаты full-timer'а.

                                                  Переезд. Компания оказывает поддержку финансово + дает на первое время квартиру. Жена у меня экономист — что под ваше определение подходит, но она БОЛЬШАЯ МОЛОДЧИНА, не растерялась — пошла на курсы английского (тут много таких, при школах и библиотеках, вроде бы она ходит на 3ое), она волонтер (это типа неоплачиваемой работы (ей нельзя работать по ВИЗе за деньги)) и это пойдет в резюме. Она слушает по 8 курсов Coursera. И мы серьезно планирует учиться здесь, пока не может работать. Я стараюсь ее поддерживать как могу, но больше она поддерживает меня! То есть опять же, если захочешь…

                                                  Про хакатоны я напишу отдельно, если Вы не против — тут много что можно рассказать. Хочу поделиться опытом своего первого хакатона AT&T Hackathon — расскажу все в отдельной статье.
                                                    0
                                                    Спасибо за развернутый ответ. Конечно пишите про хакатоны — интересно.
                                                  +1
                                                  Прочитав название, тут же подумал про тебя и угадал :) А статья очень интересная.
                                                    0
                                                    Тоже после первых строк автора посмотрел :)
                                                      +1
                                                      Ну так! Давно думал написать, вот наконец-то сделал!
                                                      +1
                                                      Та же история — узнал автора по заголовку :)
                                                      0
                                                      Всегда было интересно, насколько потом в повседневной работе используются олимпиадные навыки.

                                                      Вот эта фраза прям говорящая:
                                                      > И в этот момент я осознал, что моя карьера олимпиадника завершилась в пользу другого направления
                                                      При приеме на работу основной упор я так понял на решение олимпиадных задач, но чтобы там работать, надо развивать другое направление. Почему упор на собеседованиях делается на навыки решения олимпиадных задач?

                                                      И вопрос в догонку, сейчас у вас как с олимпиадами? Тот же уровень, или вы лучше стали решать такие задачи? Принимали ли в последующих олимпиадах участие и как успехи?
                                                        +3
                                                        Навыки важны, вопреки мнению. Мне помогает умение читать чужой код. Научился на ТС (челлендж фаза), и в командной работе (когда у товарища не заходит задача). Помогает умение быстро отлаживать. Я редко пользуюсь дебаггером — в основном дебаг вывод — и быстро могу локализовать проблему. Это тоже идет оттуда. Алгоритмы… Ну если вы начнете например за квадрат сортировать, то Вас спросят, почему. Разные алгоритмы нужны по разному. Бьюсь об заклад, ребята из Facebook Social Graph довольно уверенно ориентируются в теории графов :) В поиске итого больше — там по моему такие алгоритмы, что не каждый мозг это выдержит :) Конечно, каждый день такие вещи встречатся не будут, но вы будете в выйгрыше, когда они вам встретятся!

                                                        Навыки решения нестандартных задач — так я это называю — помогает оценить, как кандидат умеет думать. Я читал давно, что Microsoft «выбирает 10%, а из них потом еще 10%». Умение делать все остальное выработается очень быстро, если знаешь основы, видишь то, что не видно. Кандидат, который знает много — хороший, кандидат, способный изобрести что-то — самый лучший. Ну и за 45 минут сложно расспросить человека обо всех технологиях. А за время пока Вы решаете, я могу, во-первых, посмотреть, как вы рассуждаете (не важно решили Вы или нет, важно как Вы пытались это сделать, поэтому ДУМАЙТЕ ВСЛУХ — это важно). Во-вторых, посмотрю как вы пишите код на доске — это тоже важно — человек оказывается в непривычной среде — умение искать ошибки и структурировать налицо.

                                                        Сейчас я продолжаю решать. Бросал на пол-года где то, но понял, что стал медленее думать, черственеть. Месяца 2 назад вернулся. Собрали команду на Open Cup. И не только Слава там решает :) (хотя, конечно, он просто великолепен) Снова пишу СРМы на TopCoder — был спад, очевидно, но вроде бы нормализовался. Code chef — недавно оказался 8ым — даже футболочку пришлют :) Решаю interviewstreet — крутой сайт. Тренерую вместе со SkidanovAlex команду Стенфорда. Прошел квал в Facebook Hacker Cup 2013 (пока только он и был). Решал SNWS 2013. В общем стараюсь порешивать. Но это просто хобби для меня. Основное время — это проекты, на работе и свои (я пишу сейчас open source проекты, чтобы набраться опыта и просто интересно)
                                                          0
                                                          Спасибо за столь развернутый ответ, но все равно в голове не укладывается, что допустим у frontend javascript разработчика встречаются задачи сходные со спортивным программированием. Согласитесь, написать bind это больше надо опыт и прикладное программирование, чем олимпиадное. Но при приеме на работу опять же его гоняют по алгоритмам. И есть много «прикладных» разработчиков, которые в спорт. программирование не будут особо блистать со старта.
                                                          В итоге если хочешь работать FB, Google, etc. — просто надо натренироваться решать такие задачи. Очень похоже как сдаются проходные предметы в университете, разгоняешь мозги под конкретный предмет, когда в зачетке получил нужную оценку — тут же по сути все забывается. И что самое интересное — чем крупнее фирма — тем больше идет склонность к интервью по алгоритмам.
                                                          И неужели в таких компаниях отсутсвует слой разработчиков который не имеет доступа к ядру, где да, каждая задача — вызов. Но ведь там целая вселенная вокруг этого ядра, и почему-то на интервью требуются знания, именно которые это ядро смогут расщепить на атомы :)
                                                            0
                                                            Я думаю, что Вы правы. Влияет на какую должность Вы претендуете. Если Вы обладаете специфияческими навыками — это и другое интервью, я думаю. Но все равно, задачи должны быть, проверить как кандидат думает — очень важно! Я просто не сталкивался с другим. Так что оставлю этот ответ тому, кто сталкивался. Но я спрошу у коллег, и набрав инфы, отвечу
                                                              0
                                                              Согласен, с мнением, что вопросы на собеседовании не совпадают с работой, и нужно специально тренироваться. Но работодатели вроде и не скрывают этого. Их цель — проверить знание базовых структур и алгоритмов и возможность быстрого обучения, т.к. технологии и продукты быстро развиваются, и знание конкретных технологий не столь важно в далекой перспективе. Для этого алгоритмические задачи хорошо подходят.
                                                              И конечно они понимают, что многие специально тренируются на решение подобных задач. Но тут ведь важен не столько правильный ответ, сколько ход мысли, цепочка рассуждений, ведение диалога с уточнением условий задачи, изменение решения на лету после добавления дополнительных ограничений. А это вызубрить невозможно.
                                                            +4
                                                            Почему упор на собеседованиях делается на навыки решения олимпиадных задач?


                                                            Я однажды собеседовался в одну компанию в долине, весьма известную, где после интервью двое основателей общаются с каждым кандидатом. Компании семь лет, они собесудуют в день по 5-10 человек, но в штате всего 50 программистов, по этому я спросил одного из них, что именно он ищет в кандидатах, и почему они задают олимпиадные задачи — как именно это помогает им отсеивать такое количество кандидатов. И он сказал, что так можно увидеть IQ человека. С его слов, любые скилы — ЯП, паттерны, все остальное, умный человек выучит легко, поэтому все, что надо от интервью, это понять, насколько человек умен. Для этого сложные алгоритмические задачки подходят отлично.
                                                              +1
                                                              Интересно узнать, что это за компания! Но на самом деле отлично сказано!
                                                            +2
                                                            Поздравляю! Тоже проходил телефонное интервью в Facebook, но, к сожалению, не прошел — не хватило алгоритмических навыков. Меня собеседовал индус, так что даже мой разговорный английский не помогал :-)
                                                              0
                                                              Ой! Кто меня только не собеседовал :) Я вас так понимаю! Мне поначалу очень трудно давался акцент, но потом привыкаешь. Смотрите сериалы на английском. How I Met Your Mother, Big Bang Theory,… Помогает. Особенно второй — там есть акцент :)
                                                                +3
                                                                У самого завтра тех.интервью в fb. Как оказалось, даже набраться смелости — попробовать свои силы не самая тривиальная задача
                                                                  +2
                                                                  Удачи Вам! Главное не волнуйтесь и не спешите! Лучше немного больше порассуждать и медленнее писать, чем выдать неверную идею и набажить в коде
                                                                    0
                                                                    Спасибо большое! Надо сказать рассуждение помогло, даже в одном месте нашёл ошибку благодаря этому, результаты пока не известны, но вроде всё закончилось хорошо =) Надо сказать, что у человека, который меня собеседовал был идеально понятный английский, я со своим жалким intermediate каждое слово понял)
                                                                      0
                                                                      Поздравляю! Надеюсь все пройдет гладко!
                                                                  0
                                                                  Дело даже не столько в акценте, сколько в том, что инженер решил совместить интервью с обедом и громко чавкал яблоком в микрофон :-D
                                                                    0
                                                                    Мой менеджер на стажировке любил отвечать на мои вопросы с полным ртом орехов. Когда ты только стартуешь и ничего не понятно, а понимание английского очень плохое (это нормально для первых недель — адаптация), то можете себе представить, как я себя ощущал :)
                                                                      0
                                                                      Я, конечно, люблю непосредственность западных людей, но это уж как-то слишком :).
                                                                        0
                                                                        В Амазоне (у нас в Orange county — насчёт Сиэтла не знаю) когда у кого-то интервью попадает на полдень или час дня, интервьюер часто берёт интервьюируемого на обед. Мне было тоже довольно некомфортно — во-первых, не всегда легко вопросы понять, во-вторых, не решаешься активно есть, т.к. только рот набил — тут тебе и вопрос :)
                                                                        Так и сидишь, клюёшь по полложки :)
                                                                        Но в принципе народ очень доброжелательный, и если заметят, что тебя что-то напрягает, сделают всё, чтобы как-то это облегчить.
                                                                    +1
                                                                    Спасибо за статью. Больше, больше подробностей! Новую статью про попадание и работу в Гугле!
                                                                      +6
                                                                      С радостью :) Отвечу по фейсбучному — «Если этот коммент наберет >= +50 то буду писать про Google» :))
                                                                        +2
                                                                        Сфотайся с табличкой :)
                                                                          0
                                                                          Обязательно :)
                                                                      0
                                                                      Круто, поздравляю, попасть в гугл — здорово! Ведь судя по опыту друзей, даже для сильных кандидатов — это полурандом.

                                                                      Мне жалко, что когда я учился в универе в России, я даже ничего не знал о таких возможностях.

                                                                      PS У меня в EMC2 в Калифорнии было 10 интервью подряд (9 по 45 минут и последнее с менеджером в полтора часа), так что не удивляйтесь:)

                                                                        0
                                                                        Часто езжу мимо зданий EMC2 — классный офис! Я слышал, что раньше интервью были более жесткими — целый день. Как Вы и описали. Сейчас вроде проще, но и цена ошибки выше! Но в одной крутой компании (не знаю уже называть ли их стартапом) ребята сказали, что и сейчас собеседуют так. Правда у них штат небольшой и каждый работник должен быть очень крутой
                                                                          0
                                                                          Вообще мое интервью было не раньше, а в всего 3 недели назад:) Разные компании делают разные подходы:)
                                                                        0
                                                                        Прочитал статью и хочу сказать, что действительно очень рад за автора и в тоже время завидую ему по хорошему :)
                                                                        Этот комментарий скоро обращение к пустоте, чем вопрос к хабрасообществу. Пройдешься так по компаниям. Тут требуют знания как у олимпиадников, там требуют активный коммитмент в оуперсорс сообщество и свои проекты, а еще где-то требуют и первое и второе (и компот) и быть в топ 1%. И кроме некоторого огорчения от того, что этого впринципе (мне лично) не достичь, возникает вопрос — а собственно, когда жить-то? То есть я не говорю о каких-то мифических лежаниях на диване круглый день, а о мелких радостям вроде спорта, игр, хобби, сериалов. Ведь раскручивая этот маховик нужно постоянно прикладывать еще большие усилия для поддержания себя на уровне. Может у таких людей какие-то особенные способности (вполне может быть чисто физически возможность воспринимать информацию быстрее или не уставать после 10 часового дня)? Или особенный подход к делу?
                                                                          0
                                                                          Ну когда… я например играю в баскетбол раз-два в неделю (когда прохладно пропускаю), увлекся вот Zumba (вообще как то латина и Сальса импонируют), по воскресеньям с женой бегаем рядом в парке. Раза два в неделю выбираемся в ресторан, или в кино, или просто погулять, а еще иногда просто спонтанно садимся и едем куда-нибудь. Просто иногда есть дни, когда ты вообще не вставая работаешь, но иногда надо и отдыхать — а то производительность упадет.
                                                                          0
                                                                          а много русских с вами работает?
                                                                            0
                                                                            В моей команде нет. Рядом на этаже двое. Еще подруга этажем ниже! Друг в соседнем здании (они оба еще с России). Так в принципе вроде все, кто сходу на ум пришел. Так просто это не важно! Но если поискать, то тут много ребят из России
                                                                            +1
                                                                            Если честно, первое время было очень трудно — плохо понимал команду, задания вызывали ужас, но я работал часов по 12-13 в день и ходил на работу на выходных — по 6-7 часов.

                                                                            И как долго это продолжалось?

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

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

                                                                            Я думаю мы не блещем знаниями алгоритмов. Вот если взять нас, и заменить на тех, кто блещет ими (aka facebook), интересно, что будет:
                                                                            1. Изменится ли общий процесс принятие решения (проектирования)
                                                                            2. Будет ли изменения во времени.

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

                                                                              Действтельно, было бы интересно :)
                                                                                0
                                                                                А что делать если бы заболели через 2 недели после стажировки. Аклиматизация, ну или просто переутомление и стресс?
                                                                                  0
                                                                                  Ну вообще так и вышло! Ходил работал больной. Когда было хреново, работал из дома.
                                                                                    0
                                                                                    Хм, а колеги тебя домой не отправляли? Кому приятно работать с человеком кто сидит хлюпает носом, кашляет и выглядит как мертвяк?
                                                                                      +1
                                                                                      Подкопите денег и приеприезжайте на 2 недели раньше, если боитесь именно акклиматизации ) Думаю, пары тысяч долларов хватит на оплату отеля, еды и транспорта на этот срок.
                                                                                        0
                                                                                        Совет неплохой — мы так и сделали в этот раз — не помогло :) Акклиматизация настала потом — когда работать начал — так как сил меньше намного отсается :) Но ничего страшного — все люди, все все понимают. Да и страховка есть — так что в больницу сходить можно и даже не накладно
                                                                                        0
                                                                                        Если Вы заболели — не ходите на работу. Работайте из дома, выздоравливайте или просто лежите. Улучшение — вперед. Я пришел когда — мне это и сказали — ну поработал из дома пару дней, улучшилось, чтобы коллего не заразить — и снова на работу :)
                                                                                0
                                                                                Александр, а расскажи, сильно ли отличается (и в чем) корпоративная жизнь там от таковой у нас, в том же контуре или яндексе, например?
                                                                                  0
                                                                                  Сложный вопрос. Наверное, не вопрос одного комментаря. Попробую подумать и сравнить. Хороший вопрос!

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

                                                                                Самое читаемое