Предстоящее интервью Google, в поисках совета по подготовке [закрыто]

29

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

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

Быстрая рыба
источник
3
Это может быть более подходящим на ИМХО careeroverflow.com. Кроме того, вы не говорите об уровне должности, например, начинающий, старший и т. Д., И о своем происхождении, оставляя многое для предположения.
vpit3833
3
@Fast Fish: Расскажи что, просто расслабься. Пройдите тест IQ, и если вы набрали 135+ баллов Google или нет, вы знаете, что он у вас есть.
Fanatic23
9
Здесь здорово, так как это про программистов ??? Почему люди с более высокой репутацией любят классифицировать и организовывать вещи вплоть до кварка?
Джонатан.
3
Уже есть много вопросов о собеседовании. Чем ваш вопрос отличается? Если ваш ответ "Google", то вот почему это не здесь. Существует бесчисленное множество сайтов, посвященных интервью Google, многие из них будут предоставлять вам более качественную информацию, чем эта.
Николь
2
И вы предполагаете, что ваш предстоящий интервьюер не скрывается на P.SE? :)
хайлем

Ответы:

30

Вещи, которые вы должны знать

  • Google хочет нанять вас!

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

  • Google сделает все возможное, чтобы оценить вас как можно точнее. Это их работа.

    Google - компания, управляемая данными. Решения о найме не принимаются управляющим. Вместо этого каждый интервьюер делает подробные записи во время интервью, которые объединяются в пакет. Затем этот пакет будет рассмотрен отдельным комитетом , который в конечном итоге примет решение. Так что, если вы просто не «желились» с одним из ваших интервьюеров, не волнуйтесь! Важно то, насколько хорошо вы выступите на собеседовании.

Навыки, которые вы должны иметь

Обязательно ознакомьтесь со следующими навыками / приемами перед собеседованием. Даже если вам не задают вопрос по ним напрямую, их рассмотрение, безусловно, поможет вам в правильном мышлении.

  • Структуры данных

    В чем разница между массивом и связанным списком? Дерево и График? Когда бы вы использовали один поверх другого? Как это повлияет на компромисс между скоростью и памятью?

    Вопрос интервью не заканчивается рабочим решением. Уметь объяснить время выполнения вашего подхода и какие компромиссы вы могли бы сделать. Например, «если бы я все кешировал, потребовалось бы X гигабайт оперативной памяти, но он работал бы быстрее, потому что ...». Или «если бы я сохранял сортировку двоичного дерева во время выполнения операций, X был бы медленнее, Y был бы быстрее и т. Д.»

  • Алгоритмы

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

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

  • Хеш-таблицы

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

  • Говоря о себе

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

    Например, в одном из интервью я говорил с интервьюером о программе, которую я написал для игры в го в колледже. Очень сложно написать ИИ для игры в Го, и у меня есть ужасный Го-бот, чтобы доказать это! Суть в том, чтобы быть самим собой, а не просто умным человеком, который умеет программировать.

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

Крис Смит
источник
7

Расслабьтесь

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

РЕДАКТИРОВАТЬ: это было только начальное телефонное интервью, я не знаю ничего больше, чем это ... и если бы я сделал, я, вероятно, не мог бы сказать вам в любом случае!

Стивен А. Лоу
источник
2
Ты получил работу?
Маной Р
1
@Manoj: лол - нет, но это не главное. я на самом деле не хотел работу, для которой они брали интервью, но мне было интересно узнать о процессе и возможностях. я не собирался переезжать в Калифорнию!
Стивен А. Лоу
2

Заимствовал следующую статью из http://get-that-job-at-google.blogspot.in/

Знание кодирования C / C ++ и Java являются предпочтительными языками программирования для интервьюеров Google. Вы должны знать хотя бы одного из них очень хорошо. Вы должны будете написать код в интервью на экране телефона, а также в интервью на месте.

Рекомендуемые книги для интервью CS : Введение в алгоритмы - Кормен

Программируемые интервью

Взломать интервью

Алгоритмы для интервью

Рекомендуемые сайты для практики кодирования : InterviewStreet, Topcoder

Big-O Это должно стать отправной точкой в ​​подготовке к алгоритмическому интервью. Вы не должны бороться с базовым анализом сложности, так как это гарантирует, что вас не наймут. Вы должны быть знакомы и понимать обозначения O, Θ и Ω. Я рекомендую прочитать раздел об анализе сложности из книги «Структуры данных и алгоритмы».

Сортировка Вы должны легко писать алгоритмы O (n * lgn), такие как QuickSort и MergeSort. Сравните и поймите лучшие, худшие и средние сложности. Я нашел эту таблицу в вики очень удобной; в нем перечислены важные свойства всех алгоритмов сортировки. Не пренебрегайте базовыми алгоритмами O (n ^ 2), такими как Bubble sort или Insertion sort, так как другие алгоритмы улучшают их. Интервью больше об улучшении основной идеи, алгоритмы сортировки помогут в этом процессе.

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

Деревья Проходят базовые алгоритмы построения дерева, обхода и манипуляции. Вы должны быть в состоянии реализовать алгоритмы, основанные на бинарных деревьях поиска. Вы должны быть знакомы со сбалансированными деревьями, хотя вы не должны писать для них код в интервью: деревья AVL, красно-черные деревья, три, n-арные деревья и т. Д. Тщательные знания об обходах по порядку, по порядку и по предварительному заказу необходимы, потому что мы можем решить многие проблемы дерева, выполнив простые модификации одного из этих обходов.

Графики Графики являются очень важной концепцией в области компьютерных наук. Потренируйтесь в трех основных представлениях графиков (объекты и указатели, матрицы и список смежности) и ознакомьтесь с их плюсами и минусами. На собеседовании не так много времени, поэтому не стоит ожидать чего-то очень сложного. Тем не менее, базовые алгоритмы обхода графа (DFS и BFS) являются обязательными, вы должны реализовать их во всех базовых представлениях. Вы должны быть в состоянии реализовать алгоритмы Дейкстры или Флойда-Варшалла, а также алгоритмы минимального связующего дерева (Крускал и Прим). Узнайте о топологической сортировке, так как она удивительно полезна во многих задачах заказа.

Динамическое программирование Это, вероятно, самая важная тема, поскольку реализации невелики. Вы должны быть в состоянии реализовать 2-3 динамических алгоритма за 35-40 минут. Посмотрев ресурсы в этом блоге или в Интернете, вы обнаружите, что вам следует ожидать как минимум один вопрос о динамическом программировании на одно интервью.

Операционные системы Узнайте о процессах, потоках и проблемах параллелизма. Знать о мьютексах, семафорах, мониторах и как они работают. Понять, что такое тупик и livelock и как их избежать. Узнайте о переключении контекста, планировании и т. Д.

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

Публикации Google Если у вас есть время, прочитайте новаторские публикации Google, перечисленные ниже. Файловая система Google

Google Bigtable

Google MapReduce

Chinmay
источник
Вы должны опубликовать соответствующий текст здесь и избегать ссылочной гнили.
Смертельно
Извините, я новичок в этом форуме. Я улучшил свой ответ
chinmay
1
«... Java ... предпочтительные языки программирования для Google» Я этого не знал. Объясняет, почему Chrome использует в 3 раза больше ресурсов, чем другие браузеры. (Тук-тук. Кто там? ... долгая пауза ... Ява!)
Джош Кэмпбелл
1

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

Фанат
источник