Почему не работает поиск Google? Продемонстрируйте свои инженерные навыки. Проблемы поиска у провайдера

Почему не работает поиск Google? Продемонстрируйте свои инженерные навыки. Проблемы поиска у провайдера

16.05.2019

О своём опыте трудоустройства

Я постараюсь описать весь свой опыт и те подводные камни, которые я встретил при подготовке к собеседованию в Google и другие компании Долины (Microsoft, Amazon, Snapchat, Evernote, Cruise Automation, Uber и др.). Я ставил цель получить оффер от Google или Facebook, а еще лучше от обеих, все остальные компании были из разряда «ну если там будет очень интересно, то можно». С первого дня, когда я начал подготовку, до момента, когда я получил оффер от Google, прошло 1 год и 5 месяцев. Первый оффер я получил после 1 года и 2 месяцев подготовки. Всего было 7 онсайтов (интервью в офисе компании), из них 3 оффера (Google, Evernote, Cruise Automation). Таки приступим.

Предыстория

Я был вендором в Google в Mountain View на протяжении полутора лет. Там же было несколько гуглеров, которые тоже были вендорами до этого. Конечно, мозг постоянно подсказывал, что они «другие», что они «умнее-лучше-круче», чем я. А мой удел - быть вендором. Я даже один раз попробовал решить задачку на LeetCode. Осилить я смог 5-ю easy задачку, которая получилась на 120 строк кода и в результате так и не прошла тесты. На это ушло 5 часов прекрасного субботнего калифорнийского дня. Я окончательно понял, что вот всем вокруг «дано», а мне нет.

Но все же, проводя с друзьями-гуглерами много времени, я понял приблизительный алгоритм - что и как нужно делать. Я сделал в точности, как они сказали, и получил оффер (чему был немало удивлен). Второй нюанс - в Google я делал front-end, все мои друзья были back-end, и подготовку они описывали именно для back-end. Я подумал и решил: «А back-end тоже хорошо (я же когда-то писал на.NET, хотя и давно), буду идти в точности как они, но сделаю больше, чем они, и тогда точно получу оффер».

Мотивация

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

Что я имею в виду

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

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

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

Пример 1 : «Я хочу в Google, потому что это круто», «Я хочу в Facebook, потому что там много денег» - это для себя. В любой момент можно найти статью о том, что Google - это тлен, что денег там дали меньше, чем в другой компании, что там скучно, много политики. И что? И все, мотивация упала, книжки с алгоритмами летят в окно.

Пример 2 : «Я хочу в Google, чтобы вывезти свою семью в США и дать детям хорошее образование», «Я смогу, имея деньги от Facebook, сделать это и это» . В моем случае мотивация звучала так: «Я хочу быть ближе к дому» . Я рассматривал переезд в Лондон либо Цюрих. Когда я начал подготовку, я себе так сказал: «Пацан, ты следующий раз полетишь домой, когда получишь оффер, и только так». Домой хотелось, и это давало энергию. Я думаю, это работает не для всех и не всегда, но для меня сработало.

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

Процесс в общем

Весь путь можно разделить на несколько этапов:

  1. Решение задач на LeetCode или InterviewBit .
  2. Изучение алгоритмов и структур данных.
  3. Повторение решенных задач на LeetCode.
  4. Подготовка к дизайн-интервью.
  5. Mock-интервью (телефонные и на вайтборде).
  6. Реальные интервью.
  7. Оффер и алкогольное забвение.

Решение задач

Это самая важная и самая длительная часть подготовки.

Сколько задач нужно решить? Я считаю - 200-250, из которых 40-50% easy, 40-50% medium, 10-20% - hard. Я решил около 300, мои друзья - 120-160.

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

А что если я сначала прочитаю всю книжку «Cracking Coding Interview» с решенными задачками и уже весь подготовленный пойду в бой? Не стоит:) Решение, которое я просто прочитал, я не мог вспомнить даже под конец того же дня, не говоря уже через несколько дней.

Можно прочитать начало «Cracking Coding Interview». Там хорошо описан сам процесс интервью, как общаться, базовые вещи об алгоритмах и структурах данных, как анализировать сложность алгоритмов и т. д. К примеру, как анализировать сложность рекурсивных алгоритмов я понял именно из нее.

Перед тем как начать решать задачки на определенную тему можно прочитать решение схожих задач в «Cracking Coding Interview». Причины тут две:

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

А какие вообще существуют задачи, какие темы нужно покрыть?

Понять, какие вообще тематики существуют, можно с InterviewBit. Мне не очень понравилось там решать задачи, но вот общее представление я получил. Ну и кроме того, можно полистать «Cracking Coding Interview».

В какой последовательности стоит решать задачи?

Нужно идти от простых тем к сложным (InterviewBit подскажет порядок). В каждой теме решать задачки до тех пор, пока не начнет хоть чуть-чуть получаться, и в этот момент сразу переключиться на следующую тему. Начинать, конечно, с уровня easy. Я пытался решать каждую задачу на протяжении около получаса-часа. Если не смог - шел смотреть решение. На LeetCode к каждой задаче есть форум, где люди постят свои решения, обсуждают, голосуют. Я выбирал топ решений и изучал их, так и учился. Наверное, эти форумы - самое ценное место для обучения. Далеко не все решения просто понять, даже те, под которыми стоят комментарии «This is absolutely awesome!!!».

Например, начал я решать задачи на строки. 1-я - не решил, пошел смотреть решение, 2-я… 5-я - то же самое. 6-я, 7-я - решил. Значит, пора переключиться на следующую тему. Секрет такой - переключаться между темами нужно как можно чаще, так лучше запоминается. Но если переключиться до того, как начнет получаться, то через несколько тем можно демотивировать себя полостью. Мозг услужливо подскажет: «Ну раз ты ничего не можешь решить - то иди выпей пивка и посмотри футбол, это просто не твое». Нужно быть готовым к тому, что самооценка и настроение будут как американские горки: получается - мы несемся вверх, не получается - унываем и падаем вниз. Просто нужно помнить, что и первое, и второе - это временно, нужно продолжать. Если долго нет результата - брать задачки проще.

Как происходит решение задачи?

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

  1. Читаем условие задачи, ни в коем случае не пытаемся придумать решение до того, как условие прочитано до конца. Это важно!!! Мозг пытается найти похожую задачу, решение которой он знает, и выдать за требуемое.
  2. Пытаемся придумать уточняющие вопросы.
    1. Пример 1: есть задача, в которой нужно как-то трансформировать строку. Что спрашивать? - Какие символы могут быть в строке - ASCII или Unicode? Могут ли рядом стоять несколько пробелов? Могут ли быть пробелы в начале или конце строки? Есть ли спецсимволы типа -,.^/ ? Есть ли разница для анализа между большой и маленькой буквами? Насколько длинная входная строка? Помещается ли она в память машины?
    2. Пример 2: есть массив из Integer, в нем нужно что-то найти. Вопросы: есть ли повторяющиеся элементы? Есть ли отрицательные числа? Что если в результате подсчета мы получим больше, чем Integer.MAX_VALUE?
  3. Рисуем примеры, лучше парочку - один классический, второй с corner cases. После этого мы +/- должны быть уверены в том, что задачу мы поняли правильно.
  4. Придумываем решение «в лоб» и оцениваем его сложность. Сложность решения нужно уметь определить всегда.
  5. Придумываем более оптимальное решение, оцениваем его сложность.
  6. Разрабатываем API решения - какие будут методы (приватные и публичные).
  7. Пишем код в тетрадке.
  8. Дебажим код по тетрадке на новом примере. Не нужно брать один из примеров, который мы рисовали в начале. В этом случае очень высока вероятность, что мы написали решение именно для этого случая, а не для всех возможных. Лучше взять новый пример с corner-кейсом, такой, чтобы потенциально мог решение сломать.
  9. Перебиваем код в любимую IDE, при этом не смотрим в бумажку. Таким образом, мы повторяем решение два раза.
  10. Копируем код из IDE в LeetCode и запускаем. В случае идеального выполнения должно cработать правильно с первого раза. У меня такое получалось в 10% случаев.

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

А что же делать, если задачка не решается?

Когда я не смог придумать решение за полчаса-час (сначала бывало, что я по полдня страдал над одной задачей), то шел смотреть лучшие решения на форуме. Разбор решения - почти всегда непростая задача и требует времени: нужно пересмотреть и понять несколько решений, понять сложность, дочитать ссылки на алгоритмы, которые указывают авторы решений. Большинство алгоритмов я нашел и изучил после того, как встретил их в реальных решениях. А что же дальше с этим делать? А дальше нужно повторить с этой задачкой все шаги, которые я привел выше. И куда лучше сделать это на следующий день или как минимум под конец этого дня.

Все свои решения я заливал на GitHub . Хорошо видна статистика, и всегда есть доступ к коду. Это я начал делать после того, как LeetCode затер все мои решения. Так что LeetCode - не лучшее место для хранения своих решений.

Алгоритмы

Я изучал алгоритмы по курсам дедушки Седжвика на Coursera (часть 1 , часть 2). Видео этих курсов можно найти на торрентах.

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

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

Дизайн-интервью

Дизайн-интервью состоит из так называемых открытых вопросов по дизайну, типа «как задизайнить YouTube». По началу я совсем не мог понять, что требуется и как это должно выглядеть. Потом я нашел курс , который мне открыл глаза. Он стоит свои 80 баксов.

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

Behavioral-интервью

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

Например, на таком интервью в Facebook меня спросили следующее. Вот две команды. В первой есть менеджер, аналитики, задачи пишутся, процессы построены, все знают, кто и что должен делать. Вторая - не структурирована, нет четкого лидера (эта роль переходящая), как делать - не ясно, понятно только, что должно получиться в результате (то есть полная неопределенность). В какой команде тебе более комфортно работать? Вопрос был еще более сложно завернут. Суть такая - в Facebook команды не структурированы, второй вариант хорошо описывает, как у них все строится. И если тебе с этим не комфортно жить, значит, наверное, нанимать тебя не стоит.

Mock-интервью

Mock-интервью - это то же самое, что и обычное интервью с той разницей, что его проводят друзья, коллеги или специальные компании. А потом дают свой отзыв - что хорошо, что нужно поправить. Это тоже критически важный шаг, упускать его не стоит. Конечно, будучи в Долине, сделать это в разы проще. Вокруг меня было много друзей гуглеров, действительно клевых ребят, которые мне провели порядка 20-ти mock-интервью. Я был как Том Сойер, который взялся красить забор, а в результате красили забор все. Интервью мы проводили, конечно, на английском на вайтборде со строгим ограничением по времени.

Телефонные mock-интервью (а потом и реальные) я проходил на interviewing.io . Я просто полюбил этот ресурс, ребята реально молодцы. Но они сейчас заточены под США и предоставляют этот сервис по США. Бывали дни, когда у меня в неделю было около 7-8 собеседований на interviewing.io.

Сначала было страшно и некомфортно. Но к 10-му разу я привык, и стало нравиться. Первые интервью я валил, потом стало получаться. Средняя конверсия была 50%, то есть половину прошел, половину - нет. Всего телефонных собеседований (реальных и mock) было около 30-35.

Как подаваться

Самый простой и самый малоэффективный метод - заполнить форму на сайте компании. Но иногда и он дает результаты. К примеру, я заполнил форму на сайте Snapchat, и на следующий день со мной связался рекрутер, мы договорились о телефонном интервью. С Google, я думаю, это абсолютно бесполезно, так как эту формочку заполняют тысячи раз в день.

Второй способ - сайты работ типа Hired.com . Ты заполняешь все данные о себе, а потом компании, которым ты подходишь, сами с тобой связываются. Сервис ориентирован на рынок США. Без H1 или грин-карты там делать нечего.

Способ третий - interviewing.io, о котором я упоминал выше, и схожие сервисы. Они работают так: сначала ты проходишь на их платформе телефонные mock-интервью. Как только ты успешно проходишь два, они дают тебе возможность проходить анонимные телефонные интервью с реальными компаниями на их платформе. К примеру, сотрудник Uber и ты заходите в одно и то же время, и он тебя собеседует. Если прошел - дальше онсайт. Mock-телефонное и реальное телефонное интервью не отличаются вовсе. Минусов в interviewing.io несколько. Первый - они больше сотрудничают со стартапами, больших компаний мало. Второй - ориентированы на Штаты (нужна H1 или грин-карта).

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

Резюме

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

Лариса, инженер в Google, много пишет на тему интервью, Google, Долины в своем блоге . У нее есть интересный раздел «Резюме на проверку» . Здесь люди открывают доступ к Google doc со своим резюме, Лариса и другие читатели его комментируют и пытаются улучшить.

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

Стандартное телефонное интервью включает в себя общение голосом (по телефону, скайпу, hangouts и т. д.) и написание кода в shared Google doc или shared online IDE. Занимает по времени 1 час либо 45 минут, это нужно уточнить заранее.

Первые пару минут уходят на знакомство - интервьюер расскажет немного о себе, соискатель в ответ тоже должен рассказать, кто он и что он. У меня сначала с этим было туго, потом я написал и отточил self-presentation на 2 минуты, отрепетировал ее с помощью диктофона. Это, по сути, первое впечатление о тебе, и лучше его не испортить.

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

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

Самый эпический пример этой ошибки у меня случился на онсайт-интервью в Evernote. Задача была следующая - распарсить CSV-файл с расписанием поездов и написать программку, которая будет подбирать оптимальный поезд по определенным условиям. Можно гуглить. Я до этого код для работы с файлами на джаве не писал и растерялся. Решил так, я сейчас быстренько с файлами разберусь, а там уже как-то алгоритм построю. Времени на все - 1 час 15 мин. Я полчаса строил красивые врапперы вокруг чтения из файла, пучок сущностей, описывающих поезда, маршруты и прочий мусор. При этом мало представлял, как алгоритм выбора будет работать. Дальше я понял, что я не успеваю, не понимаю, как строить алгоритм, подступила паника. За 12 минут до конца собеседования я понял, как оно должно быть. За 15 минут (с опозданием в 3 минуты) я написал код (с парой ошибок, правда). Так быстро я не писал код никогда в своей жизни.

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

Если телефонное интервью прошло успешно, следующий шаг - онсайт. Компания покупает тебе билеты на самолет, оплачивает отель, и ты летишь к ним в гости. Я так летал в Лос-Анджелес на интервью в Snapchat.

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

Какие бывают типы интервью на онсайте и как к ним подготовиться

Классическое техническое интервью с задачами

Тут все относительно понятно - то же самое, что и на телефонном. Нужно держать в голове следующий факт - уложиться нужно в ⅔ времени и ⅓ оставить на непредвиденные обстоятельства, поверьте они будут. В Google одно интервью 45 минут, это означает, что после знакомства у вас есть 25 минут на все. Из них 2-5 минут на то, чтобы понять задачу и нарисовать примеры, 2-5 - чтобы придумать решение и 15-20 на написание кода и дебаггинг. Во время дебаггинга, конечно, всплывут ошибки, и их нужно быстро и красиво пофиксить. Именно на это и нужна та заветная ⅓.

Нюанс - всегда нужно идти на интервью со своим лэптопом. Первым делом нужно спросить, можно ли кодить на нем. В Facebook меня спросили: есть лептоп? хочешь на нем кодить? Ответ - конечно, да! Это быстрее, и вероятность ошибки в разы ниже. К тому же, переписывать код на вайтборде и в IDE - это две большие разницы. У меня неоднократно была ситуация, когда я исправлял ошибки на вайтборде, в результате чего код становился абсолютно нечитаемым (и, скорее всего, с новыми ошибками). Интервьюеры смотрели на это с грустью и слезами.

На лэптопе должны быть любимая IDE и проектик с типовыми шаблонами:

  • работа с файлами;
  • парсинг CSV-файлов;
  • считывание по http;
  • HTML- документ с подключенными стилями.

Еще помните мой печальный опыт с Evernote? Так вот, на следующем онсайте меня тоже попросили распарсить CSV, это заняло 3 минуты. Интервьюеры не против, если ты используешь такие шаблоны - это экономит время, и они понимают, что ты способен нагуглить, как распарсить файл.

Важный момент - нужно всегда контролировать время. На одном из интервью в Google мой интервьюер, парень лет 25-ти, задал мне хитрую задачку на динамическое программирование. Я нашел способ, как ее решить за квадратичное время, на что он спросил: «А лучше можно»? И я начал искать, как это сделать, подступала паника, но решение «лучше» найти я не мог. Наш диалог дальше:

Я: Не могу придумать решение лучше. Может, напишем мое решение и после этого подумаем?
Он: Давай еще 10 мин подумаем. Если не найдешь, напишем твое.
Я: Мне кажется, что времени может быть мало. Давай все же напишем мое сначала.
Он: Ну ок.

Я успел дописать свое решение с опозданием в 5 минут. Если бы послушал его, то не написал бы ничего и провалил интервью на 100%. А после такого в космонавты не берут. Штука в том, что он прикидывал, сколько времени нужно ему для написания задачки на доске, зная решение досконально.

Рассказ о предыдущем проекте

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

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

Дизайн-интервью

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

Мои выводы по этому типу интервью:

  • Первым делом нужно собрать требования. Очень четкие и конкретные требования, которым должна отвечать система. Типовые вопросы, которые можно задать: how many users, active users, time zones (one or few). Acceptance criteria - network bandwidth (in-going/ out-going traffic), RAM, storage, latency, battery life (for mobile) etc.
  • Представь, что интервьюер - это твой заказчик (или пользователь), для которого строится система. Что ему нужно? А что можно предложить сверх этого (сбор статистики, админпанель)?
  • Какие будут пользователи у этой системы? Часто их несколько - general users и administrators. И требования для них могут быть кардинально разные. Понимая это, нужно собрать все use cases. Один use case будет отвечать одному методу в API.
  • Определяем три ключевых элемента - UI (если таковой имеется), API, DB schema. Часто, рисуя UI, можно найти новые use cases и обговорить их.
  • Оценить все, что только можно, - number of users, requests (queries) per second (QPS), latency, API latency, disk space you need (for 5 years for instance), cache space, in-going/out-going traffic.
  • Отдельно оценить read-write ratio. Наша система read heavy или write heavy? В зависимости от этого, как мы будем писать и читать данные?
  • Как будет организовано хранилище данных, кеширование? Возможно, нужна очередь для обработки дорогостоящих операций? Как будут организованы replicas и shards (нужно хорошо понимать различие между этими понятиями)?
  • Для упрощения понимания сначала можно построить систему для 100 пользователей. После того как интервьюер согласится с таким дизайном, можно подумать, как будем его масштабировать до тысяч и миллионов пользователей.
  • Найти trade-offs и обсудить их. К примеру, это может быть trade-off между consistency и speed. Что важнее в данном контексте? Как этого добиться?
  • Когда мы рисуем диаграммы, ни один блок не должен быть в единичном экземпляре, это всегда сет из многих. При падении одного узла его тут же должен заменить его клон. Нужно продумать, какие могут быть аварийные ситуации и как мы будем с ним бороться.
  • И самое главное - внимательно слушать интервьюера и никогда-никогда с ним не спорить. Это кажется очевидным, но многие (и я среди них) об этом забывают.

Вопросы интервьюеру

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

Пример плохих вопросов: на каком языке программирования вы пишете? На каком клауде у вас стоит инфраструктура? Какая у вас СУБД? В чем тут проблема - компания нанимает универсального солдата, который за месяц-два должен разобраться в технических деталях. То есть это, по сути, не важно, это как-бы слишком узко.

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

За 10 дней до важного онсайта

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

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

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

Финал

Через несколько дней после онсайта мне позвонил рекрутер. Поздравил, сказал, что я молодец, все прошло хорошо. Мне нашли команду в Швейцарии в Цюрихе. Официальная позиция - Software Engineer. Я выдохнул. Голова была абсолютно пустой, я добежал. Забег в 1 год и 5 месяцев объявляется закрытым.

Если при поиске в Google у вас высветилось сообщение с таким текстом: «Мы зарегистрировали подозрительный трафик, исходящий из вашей сети», то начинается паника и сам собой возникает вопрос - за что меня забанил Google? Что делать и как с этим жить?

«Подозрительный трафик» - это запросы с вашего устройства (компьютер, ноутбук, планшет, телефон), которые формируются программами - в основном это вирусы, поисковые запросы от роботов, сервисов, сборщиков контента.

«Исходящий из вашей сети» - как так? Какая сеть? У меня только ноутбук или телефон сейчас в руках! А вот как: вы получаете доступ в сеть Интернет не напрямую, а через провайдера, которому вы платите за предоставление данной услуги. Провайдер ваш трафик перенаправляет в саму сеть Интернета, где он (трафик) находит вашу цель (сайт или поисковую систему). Получается, что вы не напрямую обращаетесь к сайту, а используете посредника .

Почему это происходит?

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

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

Как решить проблему?

При подозрительном трафике вам возможно будет предложено ввести код с картинки, подтверждающий, что вы не робот, а нормальный пользователь. Вводим код (капчу) и работаем с поисковиком дальше. Если кода нет, то проблемы серьезнее.

Если вам предлагают разблокировать поиск за sms, то не попадайтесь на удочку мошенников. Посмотрите адресную строку! Гугл не восстанавливает за sms доступ к поиску!

Действия по восстановлению работы поиска

  1. Для начала выполняем рекомендации Google и проверяем компьютер (телефон, планшет, мобильный) на вредоносные программы. Опять же, возможно, проверка устройства не даст никаких результатов.
  2. Сброс настроек модема или роутера может разрешить проблему блокировки поиска, но не факт, что надолго.
  3. Если у вас дома роутер, то проверьте - защищен ли wi-fi вашей домашней сети от посторонних. Отключите wi-fi и попробуйте снова воспользоваться поиском. Если в домашней сети несколько устройств (компьютеров, планшетов, мобильных) - отключите все и попробуйте только через одно из них войти в поисковик. В конце концов пробуйте сетевой кабель включить не в роутер, а напрямую в компьютер. Если результата нет, то нужно обращаться к провайдеру.
  4. Если у вас мобильный интернет - сбросьте кеш браузера. Отключите и снова включите передачу мобильных данных. Попробуйте перезагрузить мобильное устройство. Если нет результата - обращаемся к провайдеру.
  5. Обращение к провайдеру
    1. Покупка у провайдера внешнего IP-адреса, если таковые у него имеются.
    2. Идем на форум провайдера и пишем жалобу. Вас много? Пишите коллективную - среагируют быстрее.
    3. Не реагируют? Отключаетесь, переходите к другому провайдеру.

Провайдеры обманывают, экономят трафик, чтобы другие висели в вконтакте без ограничений. Провайдерам такая блокировка только на руку. Никогда не задумывались, откуда провайдеры берут скорость и бесплатно их на тарифах увеличивают? За счёт тех, которые молча будут сидеть и дуться на Google.

Проблемы поиска у провайдера

Из-за недостатка свободных адресов протокола IPv4 провайдеры переводят всех пользователей за NAT. То есть, если у многих ранее были выделенные IP, то теперь они на одном IP. Вот и получается, что на одном адресе, выданным провайдером, может сидеть множество пользователей, исчисляемых сотнями и даже тысячами, читай - та самая «ваша сеть».

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

Что делать в итоге, когда ничего не помогает? Пинать провайдера! В 99,99% провайдер ответит - У нас проблем нет! Проблемы у Гугла! Скорее всего провайдеру нет желания разбираться с данной проблемой, так как это большие финансовые затраты и доля пользователей, которые жалуются именно на недоступность поиска, не так велика. Или же провайдер не может навести порядок в своей сети.

Проблемы поиска у Google

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

Чего ждать от провайдеров?

Введение в эксплуатацию нового оборудования, поддерживающего IPv6, должно решить проблему. А пока вы платите ему деньги за услуги предоставления доступа в сеть Интернет. Вот качественные услуги или нет - это уже вопрос, и Google в этом взаимоотношении не принимает никакого участия. Получается, лжет злобный Google? Провайдер ведь не будет лгать?

Чего ждать от Google?

Когда подозрительный трафик из вашей сети прекратится, то блокировка поиска снимается автоматически. Требовать от Google разблокировать ваш IP бесполезно - процесс этот полностью автоматический и человеческого фактора тут нет.

Команда поиска в курсе, что у многих пользователей высвечивается «We"re sorry...», но смены алгоритма пока не анонсирована, поскольку это является коммерческой тайной. Информации более чем то, что описано в статье Справки, предоставляться не будет. Надеюсь, что в скором времени подвижка все таки произойдет в лучшую сторону и постараюсь держать вас в курсе событий.

Если ничего не помогает

Установите Tor Browser. Анонимайзер Tor произведет маршрутизацию вашего сетевого трафика по распределенной сети, запущенной добровольцами по всему миру. Однако при этом скорость загрузки сайтов может снизиться.

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

Почему в работе Android-устройств с сервисом Google Play Маркет возникают неполадки? Многим пользователям хорошо знакомы подобные ситуации. Причиной могут стать технические проблемы сервисов Google или сбои в работе самого смартфона (планшета), с которого вы действуете. Вариантов великое множество, но мы выбрали дюжину наиболее часто встречающихся сложностей и описали способы, дающие возможность найти выход из положения.
Перезагрузка смартфона или планшета - это первое, что стоит попробовать, если вдруг Play Маркет отказался работать. Как вариант, причиной могло стать зависание системы (с этой ситуацией пользователи сталкиваются довольно часто). Самое интересное, что перезагрузка частенько помогает не только при сбоях в работе с Play Маркетом, но и при проблемах, возникающих с другими сервисами и приложениями. Случается и так, что устройство перезагрузилось, но маркет работать не хочет. Тогда можно попробовать применить другие способы.

Способ 2: Сброс настроек Google Play Маркета
Сброс настроек сервиса тоже помогает довольно часто, и делается он следующим образом :
1. Заходим в меню настроек смартфона (планшета);
2. Выбираем раздел «Приложения » или «Диспетчер приложений »:


3. Находим в списке Google Play Маркет , выбираем его;


4. В открывшемся окне управления приложением выбираем «Очистить кэш » или «Стереть данные », нажимаем на эту кнопку.


5. Выполняем перезагрузку Android-устройства, чтобы система отреагировала на внесенные в настройки изменения.
6. Если Play Маркет не заработал, пробуем другие способы.

Способ 3: Удаление обновлений Google Play Маркета
Всё делается так же, как в описанном выше способе 2, с той только разницей, что вместо «Очистить кэш» выбирается кнопка «Удалить обновления ». Приложение вернется к первоначальному варианту, в котором до установки обновлений работало нормально. Если проблема, действительно, в новой версии софта, или Android-устройство в силу технического несовершенства эти обновления «не тянет», то сервис заработает в привычном для пользователя режиме. Без новых возможностей, но исправно.

Способ 4: Сброс настроек приложения «Сервисы Google Play»
Сброс настроек - один из эффективных вариантов решения проблем с работой Play Маркета. Порядок действий в этом случае следующий:
1. Меню «Настройки »;
2. Раздел «Диспетчер приложений » или «Приложения »;


3. Выбрать «Сервисы Google Play »;


4. Открыть меню, выбрать «Очистить кэш », нажать.


Способ 5: Активация «Диспетчера загрузки»
Возможно, что в процессе эксплуатации своего планшета или смартфона вы случайно отключили «Диспетчер загрузки » и не придали значения тому, что сервисное приложение работать перестало. Чтобы вновь активировать его, необходимо зайти в меню настроек Android-устройства, затем в «Приложения», далее с помощью свайпа «Все», после чего найти «Диспетчер загрузки» и включить его нажатием нужной кнопки. Перезагрузите смартфон и проверьте, работает ли Play Маркет.


Способ 6: Удаление аккаунта Google
Сразу предупреждаем: удалив аккаунт Google, вы можете лишиться нужной и важной информации, поэтому рекомендуется заблаговременно создать резервную копию (выполнить синхронизацию данных).

1. Зайти в меню настроек;
2. Выбрать «Аккаунты » и найти свой в открывшемся меню, нажать;


3. В открывшемся меню синхронизации нажать на свой почтовый ящик;


4. Выбрать пункты для синхронизации (сохранения в резервной копии). Обычно это «Контакты» и прочая информация личного характера, имеющаяся в памяти устройства. Для выбора разделов достаточно клика на них. Если вам дорога вся информация, содержащаяся в Android-устройстве, кликните на «Опции», после чего выберите «Синхронизировать » - вы получите резервные копии всех имеющихся приложений.


Теперь вы готовы к удалению своего аккаунта Google. Когда вы вновь войдете с него на устройство, то получите предложение восстановить информацию с резервной копии.

Но вернемся к процедуре удаления Google-аккаунта для нормализации работы маркета. После создания резервной копии нужно вернуться в предыдущее меню и на этот раз выбрать «Удалить », а не «Синхронизировать». Кликните на соответствующую кнопку, после чего выполните перезагрузку смартфона (планшета) и войдите в аккаунт заново. Обычно удаление аккаунта помогает избавиться от проблем, связанных с работой сервисов Google. Если же этого не произошло, пробуйте другие методы.


Способ 7: Удаление несовместимых приложений
Иногда пользователи самостоятельно устанавливают приложения, наличие которых отрицательно сказывается на работе сервиса Play Маркета, а в ряде случаев может привести даже к его блокировке. Список таких программ очень длинный, но самым частым виновником проблем оказывается популярный у геймеров софт Freedom , который дает возможность бесплатно совершать покупки внутри игры. Вероятнее всего, именно это приложение и придется удалить, чтобы решит проблему с маркетом.
1. В меню «Настройки» найдите «Диспетчер приложений», затем «Установленные».
2. Листайте список, пока не найдёте Freedom , выберите его.
3. Нажмите на «Stop » в открывшемся перед вами меню приложения.
4. Удалите Freedom. Очень важно именно сначала остановить работу программы и только потом выполнить удаление приложения.
5. Выполните перезагрузку Android-устройства.
6. Проверьте, заработал ли Google Play.
Не помогло? Пробуем другие варианты решения задачи.

Способ 8: Настройка «hosts»
Данный системный файл в Android-устройствах находится по адресу /system/etc/hosts. Используется он для блокировки доступа к нежелательным ресурсам. Изначально файл содержит единственную запись localhost 127.0.0.1 . Из-за действий злоумышленников, пожелавших заблокировать ваш Google-аккаунт и получить деньги за разблокировку, там может оказаться и адрес маркета. Удалите эту строку, вернув файл hosts в исходное состояние. Для таких действий может понадобиться получение root-прав. Как это делается на различных устройствах мы неоднократно рассказывали на нашем сайте.


Способ 9: Полный сброс всех настроек Android-устройства
Полный сброс - метод радикальный и действенный, но к нему необходима подготовка. Иначе можно потерять ценную информацию. Выполните синхронизацию данных - создайте резервную копию, как показано в способе 6. Убедитесь в удачном завершении этой процедуры. Теперь можно перейти в «Настройки», найти раздел «Восстановление и сброс», где выполнить «Сброс настроек». Устройство после этого перезапустить и восстановить информацию, воспользовавшись резервной копией.


Способ 10: Проверка интернет-соединения
Прежде чем настраивать Android-устройство и что-то с него удалять, убедитесь в наличии доступа в интернет. Проверьте скорость соединения, перезапустите роутер и снова перепроверьте качество связи.

Способ 11: Активация аккаунта Google
Довольно часто аккаунт Google оказывается отключен . Это можно проверить, зайдя в соответствующий раздел меню. Найдите приложение «Аккаунты Google», активируйте его, если оно отключено. Проблема с маркетом 100% решится.

Способ 12: Корректировка времени и даты
Некорректно заданная дата или время могут послужить причиной возникновения проблем с работой Google Play. Это связано с лицензиями и прочими нюансами работы сервисов Google, зависящими от временных ограничений. Если подключение к сети есть, и его качество не вызывает нареканий, переустановите время и дату. Не забудьте верно указать часовой пояс . Делается это в меню «Настройки» в пунктах «Дата и время», «Дата и время сети», «Часовой пояс сети» с помощью выделения галочками нужного варианта.


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

Google Pay - ранее известный как Android Pay - это сервис, который позволяет оплачивать покупки в магазинах, на сайтах и в приложениях через смартфон.

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

Для оплаты через Google Pay достаточно поднести смартфон к такому терминалу вместо карты. Это удобнее, так как гаджет всегда под рукой и воспользоваться им быстрее, чем достать нужную карту или наличные из кошелька. Тем более к смартфону можно подключить несколько карт. Интернет для оплаты не нужен.

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

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

Какие устройства и банки поддерживают Google Pay

С Google Pay совместимы все смартфоны, которые работают на Android 4.4 и . Кроме того, чтобы вы могли расплачиваться через терминалы, ваш телефон должен поддерживать технологию беспроводной передачи данных NFC.

Узнать версию операционной системы можно в настройках аппарата, нажав «Система» → «О телефоне».

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

Если вы получили на смартфоне права суперпользователя, то есть , Google Pay может отказаться работать.

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

Как подключить и настроить Google Pay

  1. Установите на смартфон бесплатное приложение Google Pay.
  2. Откройте системные настройки и включите NFC.
  3. Настройте блокировку экрана с помощью PIN-кода, пароля, графического ключа или отпечатка пальца.
  4. Запустите Google Pay и следуйте инструкциям программы по подключению карт.

Как оплачивать покупки в магазинах

  1. Если сумма превышает 1 000 рублей, экран смартфона. Если нет, просто включите подсветку.
  2. Поднесите мобильное устройство задней панелью к терминалу и дождитесь дальнейших инструкций. Запускать приложение Google Pay для этого не нужно.
  3. Следуйте подсказкам на экране смартфона. Скорее всего, приложение просто попросит ввести PIN-код от карты.
  4. Если вы подключили к сервису несколько карт и хотите оплатить покупку через карту, которая не указана в качестве основной в Google Pay, перед покупкой запустите приложение. Откройте раздел «Карты», выберите нужную и поднесите смартфон к терминалу.

Безопасен ли Google Pay

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

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

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

Можно ли оплачивать покупки через смарт-часы

Сервисом можно пользоваться и на умных часах. На данный момент функция работает на территории Австралии, Великобритании, Испании, Канады, США, Польши и России. На часах, которые поддерживают Google Pay, приложение сервиса доступно из коробки.

Настройка и использование сервиса на часах происходят почти так же, как на смартфоне. Только перед оплатой нужно вручную запускать приложение Google Pay. Сам смартфон для оплаты через часы не нужен.

Проблем в работе компьютерных программ избежать невозможно, но в нашем распоряжении всегда есть поисковая строка, куда можно ввести любой запрос, например: «Почему не работает Google Chrome?». И здесь всегда найдутся знатоки, которые дадут исчерпывающий и доходчивый ответ.

Так почему же не запускается Хром, когда мы щелкаем по его значку на рабочем столе? по нескольким причинам:

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

Что делать в этом случае? На скорость могут влиять установленные расширения. Для проверки открываем страницу в режиме «инкогнито», при котором все плагины выключены. Для этого кликаем на закладку страницы правой клавишей мышки и в появившемся меню выбираем опцию «Открыть в режиме инкогнито». Если в данном режиме скорость загрузки выше, значит, причина в одном из расширений, которое нужно отключить.

Делается это через который открывается одновременным нажатием на клавиши Shift и Esc. Здесь можно видеть все запущенные на компьютере процессы. Расширения нужно выделить и закрыть, а затем проверить скорость работы браузера. После того как будет найден плагин, тормозящий работу, его нужно отключить. Для этого следует открыть в меню раздел «Инструменты» и перейти в «Расширения». Здесь требуется поставить галочки около неугодных плагинов. Вполне возможно, что среди расширений будут такие, которые вы никогда не устанавливали. Эти программы были загружены автоматом с другими приложениями.

Вот и все, что нужно знать, если вдруг не работает Google Chrome.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows