Посмотрим, с чем постоянно сталкивается Али (письменный тест + компьютерный тест)

Java

предисловие

Текст был включен в мой репозиторий GitHub, добро пожаловать, звезда:GitHub.com/bin39232820…
Лучшее время для посадки дерева было десять лет назад, затем сейчас

болтовня

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

причина

На Боссе 28 февраля ко мне подошел большой начальник с Али поздоровался со мной и сказал что может мне помочь с внутренними рефералами Я не думая дал ему свое резюме а потом все время про него забывал. Потому что я думаю, что я мусор в мусорной школе, как у меня может быть возможность пройти собеседование, и я также ни с того ни с сего, что позволил мне подготовиться.

Затем я также получил внутреннее push-сообщение от Али.

Начать первый раунд телефонных интервью

Затем 8 часов вечера 4 марта № (Али, кажется, работает очень долго, я думаю, часть интервью - их KPI Bar), странный телефонный звонок пришел из Ханчжоу

интервьюер

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

я

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

интервьюер

Знаете ли вы о многопоточности, расскажите мне о Synchronized и lock, скажите мне разницу между ними

я

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

интервьюер

Потом интервьюер сказал, что блокировка незнакомая, все в порядке, значит, вы использовали что-нибудь для обеспечения потокобезопасности?

я

Тут я вдруг подумал про CAS,а потом сказал про CAS.Думаю это 7788.По крайней мере могу сказать как обеспечить безопасность.Сначала запишите исходное значение и рассчитанное значение в локальный поток,а потом прошивайте на время основной памяти, сначала сравните исходное значение. Но когда он попросил меня сказать, что нижний слой был изначально, я, кажется, был неправ. Я перепутал его с voliate. Я на самом деле сказал, что это потому, что там была шина памяти. Это действительно смутило. Можно сказать, что другие локальные потоки недействительны., На уровне ЦП (это результат такого рода спинки, эй), по сути, нижний слой CAS представляет собой многоядерную систему, реализованную блокировочной инструкцией, так или иначе, и все. . Я занимался распределенными блокировками. . . Я чувствую, что техника открытия темы самостоятельно все еще возможна, ха-ха

интервьюер

Вы сказали, что ваша компания использует redisson для реализации распределенных блокировок.Если вам не нужен redisson, вы можете реализовать распределенные блокировки.Используйте redis сами или расскажите, как redisson реализует распределенные блокировки.

я

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

интервьюер

Я думаю, вы хорошо знакомы с Redis, так что давайте поговорим о Redis и его структуре данных.

я

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

интервьюер

Так как вы так знакомы с Redis, вы знаете, что 啥 啥 啥 啥 так быстро?

я

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

интервьюер

Итак, что вы знаете о многопоточности, такой как пулы потоков или атомарные классы?

я

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

интервьюер

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

я

На самом деле это очень просто: отправитель — это механизм подтверждения, получатель — это механизм подтверждения, а затем ссылка на Aop, используемая нашим собственным проектом, для сохранения ошибочного сообщения в Redis и уведомления соответствующего ответственного лица о том, как с ним справиться. , так что затем я пришел, чтобы поговорить об окончательной согласованности надежных сообщений, которые я использую для выполнения распределенных транзакций, потому что это то, что я расширил и сказал в прошлом, и я должен быть лучше в этом. Я говорил о том, как сделать его идемпотентным и предотвратить повторение.Потребление, а потом вставить в середину RocketMQ.К сожалению, я не очень знаком с механизмом транзакций в нем.Поговорим немного о нем.

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

интервьюер

Я вижу у вас есть понимание настройки JVM, давайте поговорим о JVM, а потом из-за алгоритма сборки мусора сборщик мусора.

я

Это к счастью.Я ведь читал знания в этой области, а потом сказал знания JVM.Да и вообще я знаю всякую фигню.

интервьюер

Расскажите мне, как вы обнаруживаете онлайн-проблемы, такие как ЦП или память

я

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

ЦП: Найдите процесс с наибольшим потреблением ЦП с помощью команды top и запомните идентификатор процесса. Найдите идентификатор потока с самым высоким потреблением ЦП с помощью top -Hp [идентификатор процесса] снова, затем найдите, что идентификатор потока является десятичным, преобразуйте его в шестнадцатеричный, затем используйте jstack, чтобы найти моментальный снимок jstack.log текущего потока, а затем проанализируйте его проблему.
Память: На самом деле, для памяти это не что иное, как два вида переполнения памяти, а другой — нездоровая память, то есть утечки памяти. В случае переполнения памяти можно добавить параметр -XX:+HeapDumpOnOutOfMemoryError, который используется для вывода файла дампа при переполнении памяти программы. С файлом дампа нам очень просто найти проблему, например, мы используем MAT и т.д., чтобы найти причину Если это утечка памяти, вы должны проанализировать частоту вашего молодого GC и частоту полного GC, Если она полностью отличается от обычной, мы также можем использовать MAT, чтобы проанализировать, занимает ли это память каждым объектом. Он очень большой, и он еще не был переработан, а затем найти этот объект, чтобы проанализировать его логику и решить эту проблему с утечкой памяти.

интервьюер

Давайте поговорим о mysql, как делать запросы и оптимизировать

я

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

интервьюер

Не беда, поговорим об уровне изоляции mysql

я

Я запомнил их еще несколько раз (к счастью, этот запомнить легко, потому что раньше он действительно был мертвым)

интервьюер

Тогда расскажите мне о лежащем в основе принципа реализации повторяемого чтения.

я

Я вытер его и снова упал в яму. . . . Увы, должен сказать, у меня не было времени узнать об этом.

интервьюер

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

я

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

интервьюер

Тогда расскажи мне, как реестр обеспечивает его высокую доступность

я

На самом деле это не плохо.Я это уже читал хаха.У меня вылетело и восстановилось процесс выборов 2пк,а процесс синхронизации данных опять потянул.

интервьюер

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

я

Мой внутренний коллапс, на самом деле, я не знаю, говорю ли я все равно, но я знаю это, я определенно говорю снова, потому что я не знаю, что я сказал, тогда я могу только сказать, это не очень ясно

интервьюер

Хороший вопрос, все в порядке. Затем вы сказали, что для распределенных систем, помимо 2pc 3pc, мы часто говорим, какой лучший способ обеспечить согласованность данных.

я

И тогда я не знаю, что сказать, я могу только сказать, что не знаю

интервьюер

Затем я снова спросил Spring, чтобы понять исходный код Spring.

я

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

интервьюер

У тебя сейчас есть компьютер, давай проверим компьютер,

я

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

Начинаю первый компьютерный тест Али, наверное, в последний раз (ха-ха)

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

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

Тогда вопрос на самом деле очень простой, это 24 вопроса на Likou, но я не знал этого, когда делал это в то время, и я не могу Baidu.К сожалению, я написал его за 30 минут, но это было завершено, и я не понял, что делать.

В конце концов, единственный выбор - сдаться

Завершение моего пути к интервью с Али

конец

Хаха на самом деле я еще слишком хорош.Хоть я и не сдал ни одного(еда - первородный грех),это интервью мне очень помогло.Оно дало мне узнать мой уровень без подготовки.Вполне реально.Еще Дело в том, что большая часть нашей работы - это CV Дафа, поэтому я не очень хорошо разбираюсь во многих основных кодах, и основа не прочная. Хотя этот компьютерный тест является алгоритмом, многие из моих простых кодов не будут завершены без завершения. Baidu реализует множество простых задач, что значительно ослабляет их практические возможности. Это будет изменено позже, что насчет меня? Поделитесь этим опытом со всеми, я надеюсь, что каждый сможет извлечь из этого урок. Учитесь усердно и имейте прочную основу.

ежедневные комплименты

Хорошо всем, вышеизложенное является полным содержанием этой статьи. Люди, которые могут видеть это здесь, всенастоящий порошок.

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

Six Meridians Excalibur | Text [Original] Если в этом блоге есть какие-то ошибки, прошу покритиковать и посоветовать, буду очень признателен!