Во все времена к людям, способным учиться, не будут относиться плохо.
Всем привет, меня зовут да.
Такого рода проблема проектирования должна быть знакома каждому, и с ней можно более или менее столкнуться во время собеседований.
Например, как написать пул потоков? Как написать HashMap? Как написать RPC-фреймворк и т. д. Конечно, то, что здесь написано, на самом деле не просит вас написать его в коде, а просто говорит о концепции дизайна и общей архитектуре.
Этот вопрос для интервью исходит из опыта байтового интервью читателя.Я подробно расскажу о навыках интервью и дизайне промежуточного программного обеспечения для сообщений.
Я думаю, что основное внимание уделяется технике интервью, потому что она универсальна.
два крайних случая
Когда большинство учащихся сталкиваются с этой проблемой, возможны две крайние ситуации:
-
Первый тип: с растерянным лицом, пустыми глазами, не знаю с чего начать, все мысли превращаются в вздох.
-
Второй тип: риторика, как гатлинг во рту, да да да да да да да да, а там синий огонь.
Излишне говорить о первом типе, лучший интервьюер может направлять вас и задавать некоторые наводящие вопросы, шаг за шагом, чтобы привести вас к лучшему состоянию.Конечно, если у вас нет капли в груди, это все равно безнадежно, и сцена ненормальная.смущение.
Второй тип собьет интервьюера с толку: может быть, вы действительно много знаете, и многие детали понятны, но вы не можете выкинуть все это, будет казаться, что вы не понимаете сути.
Интервьюеры тоже люди
Этот момент на самом деле очень важен.Многие считают интервьюера роботом-вопросом без эмоций.Они думают,что он всемогущ и может полностью понять вашу точку зрения.Однако он может подумать,что вы говорите о змеиной коже,если вы ответите подробно которым вы гордитесь..
Если ты человек, у тебя будут чувства, тебе нужно общаться, хороший интервьюер будет контролировать общий прогресс, начиная с домашней работы, позволяя поле разогреться, а затем шаг за шагом копать глубже.
Конечно, есть несколько интервьюеров, которые относительно слабы, и вам нужно прийти в это время.Намеренно выделите немного пустого места, чтобы интервьюер мог что-то нацарапать., пусть интервьюер чувствует, что вам очень комфортно, и вы будете стабильны.
Конечно, даже перед лицом интервьюера, который контролирует аудиторию, вы должны проявлять инициативу, у каждого есть свои сильные стороны, вам нужно направить интервьюера на вопрос о ваших сильных сторонах.
поза правильного ответа
Правильная поза ответа — BFS (поиск в ширину) вместо DFS (поиск в глубину), что это значит?
это то, что нам нужноСначала расскажите ключевые моменты того, что нужно сконструировать из общей ситуации, а потом дождитесь, пока интервьюер продолжит задавать вопросы и копать глубже..
нам нужноПопробуйте разобраться в психологии интервьюера., Из его вопроса видно, в каком направлении он хочет знать фокус.
Например, возьмите HashMap в качестве примера, выпростоПоговорите о приобретении, написании, разрешении конфликтов, расширении и т. д., а затем дождитесь следующего вопроса интервьюера. Он может углубляться в безопасность потоков или углубляться в сторону расширения, например, расширение хэша, которое ведет к Redis. и т.д. Подождите.
Поэтому дайте интервьюеру возможность задавать вопросы и используйте его предпочтения или знакомые направления для ответа, чтобы, если вы хорошо отвечаете и общаетесь друг с другом, интервьюер высоко вас узнает.
И вГоворя о моментах дизайна, вы также должны обратить внимание на паузу и оставить интервьюеру возможность вмешаться, чтобы интервьюер мог полностью участвовать в вашем дизайне..
Возьмем для примера HashMap.Например, если вы сказали, что сделаете паузу после получения, написания и конфликта, есть большая вероятность, что интервьюер спросит, есть ли еще? Заставьте интервьюера чувствовать себя вовлеченнымПусть он почувствует, что дизайн постепенно совершенствуется под его руководством..
Конечно, хорошо, если вы не будете спрашивать, просто остановитесь и продолжите говорить.
Пусть собеседование станет техническим обменом, который является высшим состоянием собеседования., я считаю, что после интервью обе стороны будут чувствовать себя незаконченными.
Но с таким сценарием не так просто столкнуться, во-первых, у вас с интервьюером должны быть одинаковые предпочтения, например, у вас есть углубленное исследование JVM, а у интервьюера — углубленное исследование хранилища. JVM не понимает Deep, так что никакие искры не трогать.
Поэтому будет очень много людей, которые столкнутся с такой ситуацией: я завис на этой компании, а другая компания супер хороша.Это нормально.
Конечно, если вы говорите, что вы всемогущи, то я этого не говорю.
Резюме навыков прохождения собеседования
Прежде всего, вы должны правильно смотреть на интервьюера, вы такие же, как и интервьюер.
Во-вторых, отвечая на вопросы, нужно акцентировать внимание на ключевых моментах: не говорите все, что знаете, и оставляйте поле пустым, чтобы интервьюер мог задавать вопросы.
Контролируйте ритм интервью и ведите его в знакомом вам направлении.
Как написать промежуточное программное обеспечение для сообщений
Далее давайте посмотрим, как написать промежуточное ПО для сообщений.
Прежде всего, нам нужно четко предложить несколько важных ролей промежуточного программного обеспечения сообщений, а именно производителя, потребителя, брокера и реестра.
Кратко опишите процесс потока данных промежуточного программного обеспечения сообщений. Это не что иное, как то, что производитель генерирует сообщение и отправляет его брокеру. Брокер может приостановить сообщение, а затем потребитель получает сообщение от брокера для потребления.
Реестр, используемый для обнаружения службы, включает в себя: обнаружение брокера, обнаружение производителя, обнаружение потребителя и, конечно же, в автономном режиме.Можно сказать, что высокая доступность услуг неотделима от реестра.
Затем начнем кратко описывать основные моменты реализации, о которых можно говорить с коммуникацией: коммуникацию каждого модуля можно реализовать на базе Netty и далее кастомного протокола, реестр можно использовать zookeeper, consul, eureka, nacos и т.д. , или он может реализовать простой namerv, такой как сам RocketMQ (все эти слова являются ключевыми словами).
Чтобы учесть расширение и общую производительность, принимается распределенная идея, и концепция разделов принимается как Кафка.Тема разделена на несколько разделов, и для обеспечения надежности данных используется хранилище с несколькими копиями, то есть , лидер и ведомый В соответствии с производительностью и данными Надежные компромиссы обеспечивают асинхронную и синхронную флэш-память.
Алгоритм выборов используется для того, чтобы ведомый мог быть на вершине после зависания лидера, обеспечивая высокую доступность очереди сообщений.
Также для повышения надежности очереди сообщений для хранения сообщений используется локальная файловая система, а для повышения производительности применяется метод последовательной записи.
В соответствии с характеристиками очередей сообщений отображение памяти и нулевое копирование могут использоваться для дальнейшего повышения производительности, а идеи пакетной обработки, такие как Kafka, также могут использоваться для повышения общей пропускной способности.
На данный момент это почти то же самое.Главные моменты, которые следует сказать, почти те же.Интервьюер уже подумал в своем сердце, что этот человек, кажется, что-то есть.
После этого есть много моментов, которые можно копнуть глубоко, такие как упомянутая Netty, различные регистрационные центры могут много спросить, например, сравнение выбора между регистрационными центрами.
Вы также упомянули алгоритмы выборов, поэтому, возможно, спросите об алгоритме Bully, алгоритме Raft, алгоритме ZAB и т. д.
Вы также упомянули раздел, вы можете спросить, в чем разница между этим разделом и очередью RocketMQ? Как добиться определенного раздела?
Затем вы упомянули последовательное письмо, и вы можете спросить, почему вы хотите писать последовательно? Что вы подразумеваете под отображением памяти и нулевым копированием? Итак, вы знаете, какие RocketMQ и Kafka используют? (Я проанализировал их, вы можете видетьЧего вы не знаете о базовом хранилище RocketMQ и Kafka)
Конечно, также можно запросить различные детали, например, как сохранить написание сообщения, как сгенерировать индекс сообщения и т. д., чтобы копнуть глубже и посмотреть, видели ли вы исходный код сообщения. промежуточное ПО.
Есть еще много вопросов, которые можно задать, и я не могу подробно остановиться на каждом пункте этой статьи.Эти точки знаний по-прежнему должны полагаться на накопленное мышление каждого и ежедневное мышление..
Конечно, в будущих статьях вы можете написать о некоторых моментах, упомянутых сегодня, таких как Netty, алгоритм выборов, сравнение различных регистрационных центров и т. д.
Что интервьюер хотел спросить
Возвращаясь к этому вопросу интервью, на самом деле интервьюер хочет спросить о дизайне в общем направлении, включая общую структуру, поток данных и понимание некоторых функций.Так что он хотел услышать по этому вопросу ключевые моменты, а не детали.
Продолжение копания зависит от ключевых слов, которые вы выдвинули при ответе на этот вопрос.Как только интервьюер улавливает знакомые слова, он уже знает, что спросить у вас дальше.
такОтвечая интервьюеру, вы должны не только дойти до его точки зрения, но и подготовить почву для последующих ответов., не упоминайте то, чего вы не знаете, и упоминайте больше, если у вас это хорошо получается.
Наконец
Как я упоминал ранее, основное внимание в этой статье уделяется не тому, как отвечать и писать промежуточное программное обеспечение для сообщений, а навыкам прохождения собеседования.
Потому что есть тысячи вопросов для интервью, и навыки, необходимые для освоения многих тысяч вопросов для интервью, применимы.
Я также хотел бы упомянуть некоторые личные взгляды на интервью.Я обучаюсь на основе интервью.Моей мотивацией для обучения являются интервью
Но я не сторонник практики чисто бэктест-вопросов.Обучение – это процесс, который накапливается со временем.Как я говорил в конце каждой статьи, от чуть-чуть до миллиарда, и как я упомяну в начале каждой статьи, каждой эпохи, всех Не лечи тех, кто может учиться.
Мой путь к собеседованию заключается не только в обучении для интервью, но и в изучении сценариев интервью. Что это значит?
Чтобы научиться чему-либо, подражайте интервьюеру перед вами, позвольте ему задавать вам вопросы с разных точек зрения и подтолкните вас к всестороннему пониманию точки зрения.Это то, что я называю учеником, ориентированным на интервью.
Так что если вы читали мои предыдущие статьи, то увидите, что я часто спрашиваю почему, а потом отвечаю.
Еще одно замечание,Ключевое значение имеет практическая способность.
Говорить дешево, покажи мне код.
Я да, от мала до миллиарда, увидимся в следующей статье.