Оригинальную рукопись этой статьи мне прислал читатель. Я подумал, что она действительно хороша, поэтому разобрался сам. Адрес офлайн-версии в формате PDF также указан в конце статьи. Надеюсь, она поможет мои друзья немного. (побег
Прежде всего, давайте посмотрим на требования к инженерам Google: опыт работы в известной школе, профессиональный опыт в области компьютерных наук, докторская степень и отличные технологии?
Сложно ли стать инженером Google в таких суровых условиях? Младший брат по имени Джон Вашэм за границей говорит вам: Нет, ты можешь учиться сам 8 месяцев!
Джон Вашэм мечтает стать инженером-программистом Google, но без профессионального опыта в области CS он может достичь своей цели только собственными усилиями.
Итак, за 8 месяцев младший брат провел тысячи часов за чтением книг, написанием кода, просмотром технических лекций по CS, преодолением препятствий, борьбой с монстрами и апгрейдом.
В конце концов, хотя он и не стал Google, он успешно стал техническим экспертом Amazon AWS, с годовой зарплатой в миллион (Amazon действительно хорош).
Что еще более похвально, так это то, что младший брат также объединил свой опыт самообучения в учебник, который с момента запуска на GitHub получил более 140 тысяч звезд.
Адрес проекта следующий:
Младший брат сказал: «Даже если у вас нет мечты о Google, этот урок можно считать хорошим обогащением для себя».
Первоначальная цель младшего брата заключалась в том, чтобы «попасть в Google», поэтому он научился работать по 8-12 часов в день в течение более 8 месяцев. Во время учебы я разобрался с этим проектом самообучения.
Брат сказал:
Независимо от того, в какой компании-разработчике программного обеспечения вы проходите собеседование, эта программа хорошо подготовит вас, включая таких технологических гигантов, как Amazon, Facebook, Google и Microsoft.
Далее мы пойдем по стопам моего брата, чтобы узнать об этом сборнике интервью.
Первое, что нужно сделать, это выбрать язык программирования, в Google это обычно C++, Java, Python, иногда JavaScript и Ruby.
Затем начните изучать некоторые компьютерные знания, например, как компьютер обрабатывает программу, как работает компилятор и как хранятся числа с плавающей запятой.
Затем идет алгоритмическая сложность, Big-O (математическая нотация для описания асимптотического поведения функций), асимптотический анализ, структуры данных (массивы, связанные списки, стеки, очереди, хеш-таблицы, графы). А также бинарный поиск, побитовые операции.
Также есть дерево, в котором очков знаний больше, рисую интеллект-карту:
В сортировке этого куска также много очков знаний, продолжайте до интеллект-карты:
Также рекурсия, динамическое программирование, комбинаторика и вероятность, NP (наборы недетерминированных полиномов, одно из важнейших множеств в теории вычислений) и NP-полные и приближенные алгоритмы, кэширование, потоки и процессы, проектирование систем.
Вы чувствуете себя немного запутанным с таким большим количеством знаний?
Давайте посмотрим на опыт моего брата:
1) осознаватьВы не можете запомнить все точки знаний сразу, эта психологическая конструкция очень важна.
2) Сделайте карточки с точками знаний, которые необходимо повторить: нормальные и с кодами, подобныезапоминать слова. Затем делайте заметки на карточках и спросите себя еще несколько раз, прежде чем вы действительно поймете, как решить проблему. Повторяющиеся вопросы и ответы могут помочь вам лучше запомнить этот момент знаний.
3)обзор, просматривайте, просматривайте, делайте перерыв каждые полчаса программирования и просматривайте свои карточки.
4)фокус. В процессе обучения часто возникает множество отвлекающих факторов, которые отнимают наше драгоценное время. Поэтому очень трудно сосредоточиться и сконцентрироваться.
После того, как вы узнали определенный уровень, вы можете подготовиться к собеседованию. Первым шагом на собеседовании, конечно же, является хорошее резюме, которое поможет вам получить ценные возможности пройти собеседование.
10 советов от Стива Ягге, которые помогут составить достойное резюме.
1) Вначале никому до вас нет дела, поэтому не говорите о своих надеждах, целях, мечтах, амбициях в резюме.
2) Попробуйте использовать обычный текст, не заморачивайтесь.
3) Не забудьте проверить, чтобы избежать опечаток. Некоторые английские термины должны быть чувствительны к регистру.
4) Не указывайте в резюме, чем вы занимались, а то, чем вы занимались на самом деле.
5) Не преувеличивайте слепо.
6) Не указывайте в резюме нерелевантные данные.
7) Пожалуйста, не говорите "опытный" легко.
8) Не принижайте себя, будьте уверены.
9) Не пишите скучный контент.
10) Ищите правду в фактах.
Стив Ягге работал в Amazon и Google, поэтому его совету стоит прислушаться.
Вот 20 вопросов, которые вы можете задать на собеседовании:
- Почему вы хотите получить эту работу?
- Какую самую сложную проблему вы решили?
- Какова самая большая проблема, с которой вы столкнулись?
- Какой лучший или худший дизайн вы когда-либо видели?
- Предлагайте улучшения продукта Google.
- Как вы работаете с максимальной отдачей как индивидуально, так и в команде?
- Какие у вас есть навыки или опыт, необходимые для вашей роли? Почему?
- Что вам больше всего нравится в работе или проекте?
- Какова самая большая проблема, с которой вы столкнулись на работе или в проекте?
- С какой самой раздражающей ошибкой вы столкнулись в работе или проекте?
- Чему вы научились благодаря работе или проекту?
- Где вы могли бы быть лучше в работе или проекте?
На каждый вопрос лучше подготовить 2-3 ответа, на которые можно ответить в виде истории, которую интервьюеру будет приятнее услышать.
После того, как вы ответили на все вопросы, это не значит, что все кончено. Если интервьюер спросит вас: «У вас есть вопросы?» Ничего не говорите о себе! Попробуйте эти вопросы:
- Насколько велика команда?
- Каков цикл разработки, будет ли использоваться каскадное/экстремальное программирование/гибкая разработка?
- Часто ли вы работаете сверхурочно, чтобы уложиться в сроки, или это гибкий график?
- Как проводить технический отбор в команду?
- Сколько встреч вы проводите в среднем в неделю?
- Считаете ли вы, что рабочая среда помогает сотрудникам сконцентрироваться?
- Какую работу вы выполняете в настоящее время?
- Нравятся эти вещи?
- Каков рабочий период?
Если вы успешно нашли работу своей мечты, поздравляем! Конечно, это не значит, что все кончено, вам все еще нужно продолжать учиться, а получение работы — это только новое начало.
Следующее содержание рекомендуется для продолжения изучения:
Конечно, есть причина, по которой младший брат так хорош.
Еще со школы мой младший брат изучал программирование на языке BASIC, который был еще в 1990-х годах. После окончания колледжа по специальности «Экономика» он сначала два года служил в армии, дислоцированной в Южной Корее.
Выйдя на пенсию, он остался в Южной Корее, чтобы преподавать английский язык, и вдруг обнаружил, что за последние несколько лет, с тех пор как он ушел из области CS, появилось слишком много новых технологий и новых инструментов, а структура его знаний была нарушена, и он больше не мог поддерживать карьера программиста.
Поэтому он проводил все свое свободное время, изучая Perl, HTML, CSS (который был новым в то время), JavaScript и SQL, трудным путем.
Наконец, в 2001 году младший брат официально стал программистом веб-разработки и начал 19-летнюю карьеру в качестве фермера кода.
По состоянию на 2017 год карьеру Джона можно охарактеризовать как очень успешную: он работал в больших и малых компаниях, создавал и руководил проектными командами, управлял и развивал стартапы, а также лично основал 3 софтверных компании, 2 из которых все еще находятся в здоровом состоянии. работа пиши.
По словам младшего брата, за десять лет работы он стал квалифицированным программистом, отличным продакт-менеджером, генеральным директором и маркетологом.
Но его цели не останавливаются на достигнутом. Он мечтает работать инженером-программистом в Google и развиваться в умной и творческой команде.
Сначала он думал, что сможет легко получить работу с его опытом работы, но после того, как он получил вопросы для собеседования в Google, он понял, что ему слишком многого не хватает.
Хороший инженер-программист должен владеть структурами данных и алгоритмами, языком ассемблера, дизайном памяти и т. д., а также всесторонне учитывать влияние кода и структуры программы на машину в сценариях приложений.
Поэтому он начал изучать программирование, руководствуясь тестом Google. И создал «Проект 9894» на GitHub, потому что Google был основан 4 сентября 1998 года. Позже проект был переименован в нынешний «Университет кодирования интервью».
Основываясь на собственном опыте обучения, младший брат дал три предложения по самообучающемуся программированию.
1)Спрашивайте заранее, планируйте заранее, не принимайте это как должное
Самый большой урок моего брата в том, что он тратит слишком много времени на изучение вещей, которые он вообще не может использовать.Например, однажды он потратил 3 недели на чтение более 1000 страниц материалов по C++, но в итоге он использовал Python для интервью. и работа.
Этот пример не означает, что C++ не нужно изучать. Вместо этого в нем подчеркивается, что вам необходимо заранее собирать информацию, чтобы строить планы, распределять разумное время на изучение различных проектов и повышать эффективность. Избегайте «я думаю…».
2)Для новичков видео более эффективно, чем чтение книг
В начальной школе,Видео как учитель, чтобы вы начали быстро. Но если вы хотите углубиться, вы должны углубиться в изучение через чтение, и свободное время также очень важно.
3) Повторный просмотр
Многократное повторение — ключ к формированию воспоминаний.Как мы упоминали выше, мой брат рекомендует использовать карты памяти.
Он сделал для себя 1792 электронные карты памяти и брал их для просмотра всякий раз, когда у него было свободное время, например, в очереди в супермаркете, в автобусе, при скоплении людей в метро и т. д.
Младший брат сказал, что теперь он полностью освоил базовые навыки разработки программного обеспечения, и не боится никаких трудностей в работе, и день, когда он осознает свой собственный скачок, все ближе.
Для нас, простых людей, мы должны быть как младший брат, определить цель, затем составить план, усердно работать и, наконец, получить вознаграждение за усердие.
Младший брат может быть поклонником «правила 10 000 часов», но даже согласно его 12 часам в день и 8 месяцам (31 день в месяце) это всего 2 976 часов — далеко не 10 000 часов.
Но через 8 месяцев с такой твердой целью младший брат успешно завоевал признание большой фабрики (хоть это и не Google, а среднегодовая зарплата инженеров-программистов Amazon — более миллиона юаней).
Это самая вдохновляющая история, которую я видел на GitHub, и это также причина, по которой я надеюсь, что больше людей увидит ее, и искренне надеюсь, что больше людей создадут свои собственные истории благодаря этому опыту и обмену.
Слишком много анекдотов про «от входа до отказа», но есть и люди «от входа до миллионной годовой зарплаты».
жизнь длинная, так что добавь масла, Продолжай идти~
PS: Давайте взглянем на неполный каталог этого гида по интервью с более чем 140 тысячами звезд:
Действительно хорошо, вставьте онлайн-адрес из перевода редкоземельных самородков:
Я знаю, что должны быть некоторые друзья, которым нравится офлайн-версия, потому что GitHub иногда открывается очень медленно, поэтому я тщательно организовал его.Адрес PDF-версии:
Ссылка на сайт:disk.baidu.com/is/1toy MQ3SG…Код извлечения: om0i
Другими словами, когда вы сталкиваетесь с хорошим ресурсом, вы можете немного заработать, если вы можете немного научиться, позволяя ему есть пепел, верно? Знания безграничны, но пока мы узнаем немного больше, чем все остальные, разве это не выходит за рамки?
Нравится, я надеюсь, что больше людей увидят это!