В мае мои друзья поделились со мной опытом проведения интервью с ByteDance и Tencent и нашли время, чтобы организовать его в блоге, чтобы поделиться с вами.
1. Байтовый бит
В Toutiao есть три технических интервью, за которыми следуют интервью с HR и видеоинтервью. Время регулируется до 1 часа.
1.1 Первая сторона:
Первая сторона в основном исследует основы, сначала кратко представляет себя и представляет проект, а затем начинает исследовать основы.
1.1.1 Базовые знания TCP
-
Вопрос 1: Пожалуйста, подробно опишите процесс трехстороннего рукопожатия и четырехсторонней волны.
Требуется знать механизм трехэтапного рукопожатия и четырехэтапной волны, а также нарисовать диаграмму состояний.
-
Вопрос 2: Какова цель состояния TIME_WAIT четырех взмахов рук?
Этот вопрос заключается в том, чтобы нарисовать четырехстороннюю диаграмму состояния волны, которая будет расширена, чтобы задать вам. Не исключено, что возникнут вопросы типа почему четыре раза махать четыре раза, а не два раза. Лучше всего отслеживать все важные вопросы.
-
Вопрос 3. Какой механизм использует TCP для обеспечения надежности?
Ответ из четырех аспектов, механизм подтверждения ACK, повторная передача тайм-аута, скользящее окно и управление потоком.Для подробных слов требуется подробный механизм управления потоком.
1.1.2 Базовые знания языка
Технологический стек ByteDance — это Go и Python, и мы спросим об основе родственных языков.
-
Вопрос 1: Опишите разницу между потоками, процессами и сопрограммами? Опишите определения и различия между потоками, процессами и сопрограммами и, между прочим, опишите их использование в языке Python.
-
Вопрос 2: В чем разница между сопрограммами в GO и сопрограммами в Python? В основном это объясняет механизм GMP в Go.
1.1.3 Основы сетевого программирования
-
Вопрос 1: Какие существуют модели сетевого ввода-вывода?
5 моделей сетевого ввода-вывода: блокировка, неблокировка, мультиплексирование ввода-вывода, ввод-вывод, управляемый сигналами, и асинхронный ввод-вывод. Эти пять отличий описываются от данных от устройств ввода-вывода до режима ядра и от режима ядра до пользовательского режима процесса.
-
Вопрос 2: Разница между select/poll/epoll при мультиплексировании ввода/вывода?
Из механизма select и трех недостатков select объясните механизм epoll и то, как epoll устраняет три недостатка select. Также будет рассказано о разнице между запуском по горизонтали и запуском по фронту в epoll.
1.1.4 Основы, связанные с HTTP
-
Вопрос 1: Когда клиент получает доступ к URL-адресу сервера, каков будет весь процесс?
В семиуровневой модели сети весь процесс соединения HTTP-> TCP-> IP-> объясняет процесс генерации и передачи сообщений.
-
Вопрос 2: Опишите разницу между HTTPS и HTTP
Отличие от порта и HTTPS основано на SSL и шифровании и т.д.
-
Вопрос 3: Формат сообщения запроса и сообщения ответа протокола HTTP
Чтобы иметь четкое представление о компонентах сообщения запроса и сообщения ответа, необходимо написать конкретные случаи.
-
Вопрос 4: Что такое коды состояния HTTP?
Из 2xx, 3xx, 4xx, 5xx, чтобы привести примеры общих кодов, интервьюер спросит, в чем разница между 301 и 302 и в каких сценах появляются 500/503/504.
1.1.5 Основы кэшей и баз данных
-
Вопрос 1: Опишите, какие структуры данных есть в Redis.
Существует 5 основных структур данных: String/List/Hash/Set/Zset и расширенные структуры данных HyperLogLog/BitMap/BloomFilter/GeoHash. Интервьюер также спросил о принципе BloomFilter и принципе реализации Zset, в основном объясняя таблицу переходов.
-
Вопрос 2: Тема сценария MySQL
Интервьюер предоставил сценарий и попросил написать запрос SQL, изучить совместные операторы, как разбить на страницы и оптимизировать сложные операторы.
1.1.6 Алгоритм открытой записи
- Нерекурсивный обход дерева в прямом порядке.
1.2. Сторона 2
1.2.1 Опыт проекта
Во-вторых, у вас большой опыт работы с личными проектами. Интервьюер попросит вас подробно представить самый последний проект. Когда вы будете представлять проект, вас прервут, чтобы уточнить сложность и структуру проекта, и попросите лучшее решение.
В предыдущем проектном опыте я писал распределенный проект, интервьюер сосредоточился на обсуждении плана реализации этого проекта, расширении таких вопросов, как распределенные транзакции и распределенная согласованность, в то же время это потребует дополнительных условий на основе текущей проект. Трудно предоставить решение. Это требует глубокого понимания проекта. Перед собеседованием вы должны иметь очень четкое представление о проекте. Если это проект с участием нескольких человек, лучше всего понять функционал части, написанные другими.
Я также задал несколько вопросов по бизнес-архитектуре API, балансировке нагрузки, CDN, DNS и другим вопросам. А также задавал вопросы, связанные с HTTP, с просьбой описать различия между версиями HTTP, в основном различия между тремя версиями 1.0/1.1/2.0. В частности, разница между 1.0 и 1.1 заключается в модели соединения (короткое соединение, длинное соединение, конвейерное), а разница между 1.1 и 2.0 заключается в одном длинном соединении мультиплексирования ввода-вывода, проталкивания сервером, деления двоичных кадров, сжатия заголовков. , и т.д.
1.2.2 Алгоритм чистой записи
- Обход матрицы строк возврата
1.3.Третья сторона:
1.3.1 Опыт проекта
Третья сторона также изучает проектный опыт, но фокусируется на проектировании системы и рисует период предыдущего проектного опыта (который определенно отличается от опыта второй стороны), прося вас описать текущий план и недостатки. Теплое напоминание, вы должны быть хорошо знакомы с опытом работы в проектах в своем резюме, и вы выберете проект с опытом работы.
Спрашивать о недостатках, это яма, а после ее высказывания требуется предложить план улучшения, поэтому ответ должен быть осторожным, лучше всего до собеседования предположить дополнительные условия по текущему проекту, и предложить 2- 3 альтернативы.
Требуется модульность, и если текущая система имеет архитектуру микрослужб, как разделить службы, каковы правила разделения, а также изучить знание архитектуры микрослужб и управления службами (текущее ограничение, переход на более раннюю версию и предохранители).
Например: В предыдущем проекте было задействовано проектирование горячего бассейна в социальной сцене, и требовалось изложить существующие решения и недостатки, а затем изложить решение по оптимизации.Это также расширило бы текущий порядок величин много раз, требуя повторной архитектуры решения. Есть также веерные отношения, двухтактные комбинации, то есть разница между диффузией чтения и диффузией записи и как их комбинировать.
1.3.2 Алгоритм открытой записи
- Ближайший общий предок нескольких узлов в бинарном дереве
1.4. Резюме
После трех технических аспектов это HR, поэтому я не буду много говорить об этом. Общий опыт собеседования ByteDance заключается в том, что интервьюер очень профессионален и требует знакомства с базовыми знаниями.Перед собеседованием вы должны подготовиться к собеседованию, прежде чем идти на собеседование. Темы LeetCode также должны быть очищены. Времени на написанный от руки алгоритм остается не так много, 3-10 минут, если вы не написали его за 3 минуты, вам необходимо объяснить идеи решения задачи.
Не забудьте почистить вопросы и подготовиться перед собеседованием.Если вы не знакомы с пунктами в резюме, не записывайте их.Подготовьте 2-3 технических решения по пунктам, которые вы пишете.
2. Тенсент
У Tencent много процессов собеседования, плюс в общей сложности 8 раундов письменного теста, 6 раундов технического + 1 раунд HR + 1 раунд письменного теста.
2.1 Первая сторона
Во-первых, это телефонное интервью, в ходе которого в основном изучается проект и задаются основные вопросы в рамках проекта. Время 30 минут.
- Имея предыдущий опыт работы с микросервисами, интервьюер подробно расспросил об архитектуре микросервисов, реализации фреймворков, управлении сервисами и распределенной согласованности.
- Я раньше играл в систему мониторинга журналов.Сначала я изучу архитектуру и знания, связанные с ELK, сосредоточившись на описании некоторых архитектурных принципов Elasticsearch, таких как принцип инвертированного индекса.
- На вопрос о соответствующих знаниях об очередях сообщений, связался с Kafka и спросил, могут ли сообщения в Kafka потребляться несколькими потребителями? и механизм выборов и механизм HW.
- Открытые вопросы, рассказывают о ранее возникшей проблеме и способах ее решения. Здесь описываются проблемы, возникающие в производственной среде, и описывается устранение неполадок.
- Проблемы, связанные с базой данных и Redis, принцип индекса проверки базы данных и разница между несколькими транзакциями. Redis спрашивает о структурах данных, о том, как реализовать очереди с задержкой и о принципе распределенных блокировок.
2.2 Второй письменный тест
Интервью на месте, чтобы проверить базовые знания языка стека технологий для конкретных должностей, вопросы несложные и требуют прочной основы и широты.
2.3 Третья и четвертая стороны
Третья и четвертая стороны - это интервью с руководителем группы и директором, обсуждение идей и проектов по решению проблем.Эти две стороны характеризуются задаванием соответствующих вопросов, основанных на опыте проекта, требующих широты, особенно изучения широты архитектуры, которая будет сравнивать текущий масштаб проекта Масштабирование в десятки раз, реструктуризация и одновременное проведение стресс-интервью. Я чувствую, что если вы не нервничаете и знакомы с проектом, это не большая проблема.
Будет много открытых вопросов, включая идеи решения проблем и сотрудничество между коллегами.
Запрошенные очки знаний включают алгоритм балансировки нагрузки, то, как ngnix выполняет ограничение тока, разницу между четырехуровневым LVS и семиуровневым Ngnix, а также идею дизайна микросервисной архитектуры. Время интервью 20-30 минут.
2.4 Пятое и шестое интервью технического комитета
Пятый и шестой — личные интервью, технические интервью, которые очень сложны. Изучите дизайн системы и дизайн архитектуры. Требуется глубокое понимание знаний
-
В основном дизайн системы, я спросил, как спроектировать систему seckill, и объяснил ее в четырех аспектах: уровень доступа, уровень интерфейса, уровень очереди сообщений и уровень логики.Уровень доступа может делать вещи, связанные с управлением услугами, а уровень интерфейса может делать переключатели мгновенной покупки, черные и белые списки, случайный отказ и другую обработку, логический уровень специально реализует логику перехвата, включая распределенные блокировки Redis и согласованность DB и Redis.
-
Несколько реализаций распределенных транзакций также основаны на системе seckill, например, двухэтапная, трехэтапная компенсация (TCC) и реализация очереди сообщений на основе надежных служб сообщений. Подробно обсуждаются реализация и различия этих типов, и требуется нарисовать архитектурную схему распределенной транзакции на основе очереди сообщений надежной службы сообщений, а также как обеспечить надежность и согласованность вышестоящей службы и нижестоящей службы. .
-
Изучите микросервисную архитектуру, принцип разделения сервисов, принцип RPC-фреймворка и принцип выбора плота протокола согласованности управления конфигурацией (и т. д.).
-
Проверьте управление службами, алгоритм ограничения тока службы, индикаторы деградации службы и индикаторы восстановления, а также сервисный предохранитель.
-
Открытые вопросы, самые впечатляющие проблемы и способы их решения.
2.5 Резюме
У Tencent мало вопросов по алгоритмам, и в основном они исследуют широту и глубину знаний. Понимание архитектуры требует большей глубины, сосредоточив внимание на исследовании принципов.
Для получения дополнительных статей и обсуждений, пожалуйста, обратите внимание на общедоступный аккаунт: «Tiancheng Technology Talk».