My Ali Road + Центр очного тестирования Java

интервью Java алгоритм исходный код

2017 был для меня напряженным годом, я готовился к весеннему набору на стажировку с начала года, и я работал над исходным кодом JDK в 30-х годах, я прошел пять интервью с Али в марте, и успешно получил предложение стажировки в апреле. Затем Мэй начала стажировку в Ant Financial с тревожным настроением. В августе, после еще двух раундов собеседований, я наконец получил очередное предложение. Пока что я наконец-то могу в полной мере насладиться последним временем в кампусе. Надеюсь, мой опыт и знания помогут вам.

Мой опыт учебы

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

Мой план в то время был таким: я работал над опасным для жизни проектом, ведь написание кода — это навык, который делает совершенным, а написание большего количества кода, естественно, углубит мое понимание технологии. Факты действительно доказали это. На летних каникулах, когда я заканчивал выпускной курс, я впервые столкнулся с "Глубоким пониманием виртуальной машины JVM". Прочитав его, я был ошеломлен. Я знал все китайские иероглифы, но почему не Разве я не понимаю этого после того, как они были объединены в предложение? Затем, с этим растерянным выражением лица, он насильно дочитал книгу, но так как не понял ее достаточно глубоко, то вскоре забыл ее. Затем, после года сумасшедших проектов, когда я снова взялся за эту книгу, мое отношение к книге изменилось на 180 градусов, что было легко понять. Я задавался вопросом, почему я был таким глупым в то время. В этом году я сделал четыре проекта в общей сложности. Таким образом, написание кода может немного улучшить ваше понимание технологии.

Помню, в конце марта были объявлены результаты вступительных экзаменов в аспирантуру нашей школы, когда я узнала, что меня приняли, то ненадолго обрадовалась, а на следующий день пошла в лабораторию к тьютору для участия в проекте. Поскольку мой разум очень ясен, моя цель — Али. Когда я впервые пришел в лабораторию, я почувствовал себя полным идиотом, я не мог понять ни слова из того, что братья обсуждали на собрании, и мне было трудно выполнить поставленную в начале работу. Но я человек, который рождается неубежденным, и чем больше я не понимаю, тем больше мне приходится побеждать. (PS: То же самое касается погони за девушками. В то время я влюбился в хладнокровную богиню. Чем хладнокровнее, тем больше я должен победить... опустить 10 000 слов... и, наконец, преуспел) . Я постепенно не отставал от своих братьев, и со второго проекта я был руководителем проекта. Направление, которое я выбрал для себя, — это Java, и есть различные проекты в лаборатории, Qt, C++, графика и т. д., но в глубине души я знаю, что эти проекты могут расширить мой кругозор, тренировать мои способности к обучению и способы обучения. думаю, но это необходимо Технология, которая глубоко изучена, по-прежнему Java. Поэтому я воспользовался окном проекта, чтобы прочитать много книг по Java, и в конце статьи я составил список для справки.

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

Однако по разным причинам я отправился на стажировку в стартап-компанию. Поскольку у меня нет выбора, я принимаю перемены. Как только это произойдет, я надеюсь, что время, которое я провожу, будет полезным. Поэтому я вкладываю душу в свою работу. Компания устроила меня заниматься фронтендом, хотя это и не то, чем я хочу заниматься, но выбора у меня на данный момент нет. Я провел месяц, изучая интерфейс, изучая Angular, React, разбираясь в их дизайнерских идеях, изучая принципы, лежащие в основе JS, и наблюдая за текущим развитием интерфейса. Интерфейсная технология повторяется очень быстро, но принципы, лежащие в основе технологии, схожи, поэтому очень важно понять суть технологии. Эта стажировка продлилась до января этого года.Я четко знаю, что набор на стажировку Али начнется в конце февраля и начале марта, поэтому я выжал перерыв в полдень, время после работы вечером и время выходных, чтобы пересмотреть то, что я накопил раньше.

3 марта, первое интервью в моей жизни, когда я увидел телефонный звонок из Ханчжоу, я одновременно нервничал и волновался. До этого я не знала, какой у меня уровень среди всех новоиспеченных выпускников, а до подключения звонка я была полностью психологически готова и представляла различные сцены повешения и избиения со стороны интервьюера. Первое интервью длилось 54 минуты, интервьюер казался терпеливым, и весь процесс интервью был очень приятным. Это интервью придало мне огромную уверенность, потому что я знал, что я был на один шаг ближе к своей цели. В течение следующего месяца я получил один за другим пять звонков с интервью.Каждое собеседование – это возможность учиться, открывать собственные недостатки, узнавать о новейших технологиях в процессе общения с интервьюером. , лучший метод реализации.

14 апреля я вспомнил тот день, когда только что давал своему репетитору урок алгоритмов для студентов, и после обеда я получил предложение от Али. Радость в то время была неописуемой, и столь долгие усилия не прошли даром. Но я также знаю в глубине души, что уровень стажировки Али всегда был очень низким, и пройти стажировку нелегко. Поэтому на следующий вечер после того, как я получил предложение от Али, я перепланировал следующий учебный план и обновил свою краткосрочную цель: выиграть предложение от Али.

5:20, прекрасный день, я вошел в здание Alipay с тоской, опасениями и волнением и начал свою трехмесячную стажировку. Трехмесячная стажировка многому меня научила, я увидела свой ежедневный прогресс и свои недостатки. За последние 100 дней я пережил слишком много вещей и получил слишком много опыта.Когда у меня будет время, я напишу отдельную статью о своих инсайтах во время стажировки, чтобы поделиться с вами.

В 11 часов вечера 9.1 мой статус изменился с "собеседование" на "будет предложено", я понимающе улыбнулась, и я добилась цели первого этапа своей жизни. В тот момент я не был слишком взволнован, после 8 месяцев затяжных боев в 2017 году это предложение уже соответствовало моим ожиданиям.

На следующий день была суббота, и я дал себе два выходных в эти выходные. Хотя я пробыл в Ханчжоу 102 дня и хотя здание Alipay находится рядом с Западным озером, я никогда не был на Западном озере по работе в два часа каждый день. Той ночью мой друг купил билет сразу после того, как узнал, что я получил предложение, и сел на ночной поезд в Ханчжоу, чтобы отпраздновать за меня. Благодаря ему я впервые посетил этот прекрасный город в эти выходные.

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

несколько советов

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

Я выработал привычку вести блог с самого начала исследований, и теперь я начну с этого.За последние два года я написал в общей сложности 185 статей с 22 Вт трафика, и я имею честь называться эксперт блогер. Мой блог теперь стал одним из моих самых ценных активов, документируя всю архитектуру моей технологии, а также мысленный путь изучения технологий.

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

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


Прочесывание тестового сайта Java-интервью

Эта статья основана на моем опыте прохождения собеседований и посвящена организации системы знаний, необходимой для собеседований с Java-программистами.

Часть 1: Основы работы с компьютером

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

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

1. Компьютерные сети

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

【Тестовый сайт】

  • Роль транспортного уровня
  • Значение мультиплексирования и демультиплексирования транспортного уровня
  • Разница между транспортным уровнем и сетевым уровнем
  • Особенности протокола UDP
  • Структура сообщения протокола UDP
  • Особенности протокола TCP
  • Структура сообщения протокола TCP
  • Процесс трехстороннего рукопожатия TCP
  • Четырехволновой процесс TCP
  • Как достигается надежная передача TCP
  • перестать ждать соглашение
  • Протокол скользящего окна
  • управление TCP-потоком
  • Контроль перегрузки TCP
  • HTTP-протокол
    • Рабочий процесс HTTP
    • Формат HTTP-запроса
    • 8 методов запроса в HTTP 1.1
    • Формат HTTP-ответа
    • Важные поля заголовка запроса и ответа в HTTP
    • Общие коды состояния HTTP и их значения
  • протокол HTTPS
    • Разница между протоколом HTTPS и протоколом HTTP
    • Рабочий процесс протокола HTTPS

【Расположение данных】

2. Структура данных

Знание структуры данных — это самая базовая грамотность программиста.Выбор подходящей структуры данных в реальной разработке сильно повлияет на эффективность программы. Интервьюеры обычно не задают вопросов о структурах данных напрямую, но проверяют ваше понимание структур данных и возможность их гибкого применения в реальных проектах, задавая некоторые вопросы по алгоритмам, включающим структуры данных. Вы можете улучшить эту часть способности, почистив вопросы алгоритма, порекомендуйте «Предложение фехтовальщика» и «Золотой код собеседования программиста» (обратите внимание, чтоДжиндиан! ). Из этих двух книг выбраны банки вопросов по алгоритмам многих компаний.

Конечно, цель чтения этих двух книг не в том, чтобы заучить темы наизусть, темы постоянно меняются, и интервьюер может менять их по своему желанию. Самое главное в прочесывании вопросов по алгоритму — воспитывать представление о решении проблем и умение решать практические задачи. В процессе причесывания вопросов следует многое обобщать, опять же, не зазубривать!

3. Алгоритмы

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

4. Операционная система

【Тестовый сайт】

  • Четыре характеристики операционной системы.
  • Основные функции операционной системы.
  • Каковы состояния процесса, диаграмма перехода состояний и события, которые приводят к переходу.
  • Разница между процессом и потоком.
  • Несколько способов взаимодействия процессов.
  • Несколько способов синхронизации процессов
  • Разница между пользовательским режимом и режимом ядра.
  • Понятие тупика, причина тупика.
  • Четыре необходимых условия для возникновения взаимоблокировки.
  • Четыре способа борьбы с взаимоблокировками.
  • Способы предотвращения взаимоблокировок и способы избежать взаимоблокировок.
  • Алгоритм планирования процесса.
  • Существует несколько алгоритмов непрерывного выделения памяти, их преимущества и недостатки.
  • Базовое управление хранилищем подкачки.
  • Базовое управление сегментированным хранилищем.
  • Сравнение методов сегментированного пейджинга имеет свои преимущества и недостатки.
  • Несколько алгоритмов замены страниц рассчитывают необходимое количество замен страниц.
  • Определение и реализация виртуальной памяти.

【Расположение данных】

5. База данных

【Тестовый сайт】

  • Что такое индекс?
  • Классификация индексов
  • Анализ преимуществ и недостатков индексов
  • Когда мне нужно использовать индекс? Когда мне не нужно использовать индекс?
  • Что такое транзакция?
  • Четыре характеристики транзакций
  • Три парадигмы базы данных
  • Какие объединения таблиц есть в базе данных?

【Расположение данных】

Часть 2: Java

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

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

1. Виртуальная машина Java

【Тестовый сайт】

  • Особенности и функции модели памяти виртуальной машины Java
    • счетчик команд
    • Стек виртуальной машины Java
    • область локального метода
    • куча
    • область метода
  • процесс создания объекта
  • процедура доступа к объекту
  • структура памяти объекта
  • Алгоритмы сборки мусора
  • Как определить, какие объекты нуждаются в переработке?
  • Стратегия выделения памяти объекта
  • Механизм гарантии распределения
  • Сравнение сборщиков мусора
  • Структура файла класса
  • время загрузки класса
  • процесс загрузки класса
  • Модель родительского делегирования

[Организация ресурсов очков знаний]

2. Параллельное программирование на Java

【Тестовый сайт】

  • Что такое тупик? Как избежать тупика?
  • Что такое переупорядочить?
  • Каковы характеристики летучих?
  • Что такое видимость памяти?
  • Почему volatile может гарантировать видимость памяти?
  • механизм прерывания
  • Каковы способы связи потоков?
  • Какова роль пула потоков?
  • Как используется ThreadPoolExecutor?
  • Как установить размер пула потоков?
  • Как обеспечить потокобезопасность?
  • Какие оптимизации были сделаны для блокировок в JDK 1.6?

[Организация ресурсов очков знаний]

3. Тестовый сайт контейнера Java и организация данных

4. Центр тестирования Java IO и организация данных

5. Краткое изложение других пунктов знаний Java