Редкое техническое интервью — наконец-то получил предложение от Xiaomi

интервью

предисловие

С момента интервью прошло больше месяца, а я до сих пор помню 80-90% вопросов интервью. Незадолго до фестиваля лодок-драконов я уволился с предыдущей работы и воспользовался выходным, чтобы подвести итоги интервью. Главное записывать вопросы.Ответы не написать в двух словах.В интернете довольно много статей очень хороших,поэтому эта статья не будет расширяться.

стек технологий

java, golang, js, pythonВ основном первые два.

Резюме интервью

  1. Другие лидеры команды Java
  2. Другие руководители команды Golang
  3. Лидер команды
  4. Лицо директора

Причина, по которой я помещаю резюме интервью вперед, заключается в том, что у меня нет опыта написания статьи в первый раз. Интервью длилось 4 часа и 4 раунда. Я вспомнил, что ответил примерно на 90~95%, и общее ощущение в порядке. У меня сложилось впечатление, что эти интервьюеры очень профессиональны, качество вопросов довольно высокое, а люди очень приятные.

Это интервью похоже на то, чтобы посмотреть в зеркало, чтобы узнать свои недостатки, а затем вам нужно укрепить свои навыки. Усильте возможности алгоритма. Разобраться с исходным кодом.Усердно работайте, чтобы использовать каждую возможность.

Я вернулся к вч из сз 2 года назад и тогда я почувствовал пользу от сз. Он относится к ретроспективному типу. Увидев, что мои бывшие коллеги из UF хорошо танцевали один за другим (Ali, Tencent, Ali, Baidu, Jingdong, Meituan, Netease и т. д.)荒野求生.

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

Рассчитать данные по статистике

За 19 лет проголосовал 50+, получил 4 и получил 2. . Большинство не отвечает.

В 2017 году за кого проголосовали более 10 раз, получил 7 из них и получил 4 из них. (Позже по какой-то причине я отказался от предложения iFLYTEK и выбрал определенную компанию)

Не могу вспомнить сз данные с 12 по 16 лет. Хотя я слабый цыпленок, я чувствую, что работу легко найти. (16 лет ст)

Итак, что в 2019 году действительно удивительно. Однажды я заподозрил, что резюме слишком водянистое. Я отправил его своим друзьям, чтобы убедиться, что с ними все в порядке и нет проблем. Могут ли это быть трудности с наймом, вызванные торговой войной Трампа? 【Улыбка】

Как сказать название этой статьи

Расскажи настоящий анекдот, некоторое время назад я столкнулся с должностью архитектора небольшой компании в wh. Сцена: 4 человека лицом ко мне одновременно, большой стол, кабинет генерального директора

Генеральный менеджер: Вы хотите заниматься продажами?Вы занимались продажами раньше?

Я: Стыдно говорить, что заниматься продажами слишком сложно, у меня нет способностей. ([Черный вопросительный знак] Почему вы говорили со мной об этом в первую очередь? Я выгляжу таким неквалифицированным? Я отправил десятки резюме. Я рад прийти сюда и сказать мне это? Значит ли это, что я серьезно? ? )

Генеральный менеджер: О! Ваша компания производит метизную продукцию! (Я написал проект робота НЛП в своем резюме)

Я: «Это программный продукт» (какого хрена, старший брат, у тебя серьезное непонимание меня.)

Гендиректор: Тогда пусть технический директор выйдет на встречу (по оценкам, он ударит в грязь лицом)

начать техническое

Он: Расскажите нам о своем проекте

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

Он: Для чего используется GRPC, почему бы вам не использовать для этого http restful?

Я: Удаленный вызов На основе http2 существует 4 метода вызова.Протокол сериализации использует protobuf (я думаю, что так много контента, что вы можете спрашивать по одному)

Он: Ладно, я закончил с техникой.

Генеральный менеджер добавил несколько заключительных вежливых замечаний: Интервью окончено.

[WTF Это конец? 】 Это меньше 15 минут? Меня просто так выгнали? О да [улыбается]

хорошо, чтобы подвести итогиНаконец-то получил техническоеЧувства к написанию этой темы.

Ява с одной стороны

В основном принцип базовой основы Java

  1. деталь线程池Каковы применения методов строительства,ctl,allowCoreThreadTimeOutРоль переменных, фаза инициализации, большое количество поставленных задач и все выполненные задачи — это процесс написания. (addWorkerПроцесс и другие части ответили хорошоrunWorker getTaskНа некоторые детали не очень хорошо ответили. Пул потоков — это проблема, которой Java не может избежать.В Интернете есть много ответов, которые не будут подробно описаны. )
  2. HashMapструктура данных,resizeПроцесс, какие проблемы возникнут при выполнении многопоточных операций, какие изменения в 1.7 и 1.8, так как упоминается红黑树Итак, давайте поговорим об этом иBST,AVLВ чем их особенности и отличия?Поговорим о процессе балансировки (ок. Это основное содержание многих ответов в интернете, поэтому не буду вдаваться в подробности)
  3. Давай поговорим дальшеconcurrenthashmapРазница между 1.7 и 1.8 в том, как обеспечить потокобезопасность (хорошо)
  4. Поток имеет несколько состояний,sleep waitразница (хорошо)
  5. synchronized LockРазница, принцип работы синхронизированного заголовка объекта, оптимизация блокировок в JVM, давайте поговорим о параллельном AQS, честных блокировках, нечестных блокировках, блокировках чтения-записи, CAS и лежащей в их основе небезопасности (окей)
  6. JVM内存结构, Какие из структур кучи памяти совместно используются потоками?Использовали ли вы команду javap?Объедините эту команду и расскажите о своем понимании каждой области памяти JVM. Связано с тюнингом. (в порядке)
  7. чатGC,可达性分析算法, какие объекты можно использовать в качествеGC ROOT, по характеристикам нового поколения и старого поколения, какие алгоритмы сборки мусора им подходят. Сравнивать标记清除и标记整理. (в порядке)
  8. 类加载器,双亲委派,安全沙箱机制(в порядке)
  9. Давайте поговорим об ИО,BIO,NIO,IO模型, Как jvm реализует NIO (хорошо. К счастью, я уже просматривал код JVM на c++ до этого. Я не буду вдаваться в подробности о мультиплексировании и неблокировке. Говоря о нескольких ключевых моментах, модель IO относится к в «Сетевое программирование Unix».select,poll,epoll.fcntl)
  10. Проект чата Balabala включает в себя множество проблем. Последовательный алгоритм хеширования, распределенные вещи, практика Service Mesh, rabbitmq (в основном все в порядке)
  11. TCP滑动窗口Механизм АСК. (в порядке)
  12. zuul, hystrix, принцип работы faign, принцип работы springmvc (хорошо)
  13. Приведите пример паттернов проектирования, используемых в spring (хорошо, у Nuggets есть эта статья)
  14. спецификация использования git, gitflow (хорошо)
  15. Вопросы, связанные с даббо (хорошо)

две стороны голанг

  1. Модель параллелизма Голанга (общие ответы M, P, G)
  2. Давайте поговорим о маршрутизации исходного кода gin, группе, промежуточном программном обеспечении и шаблоне проектирования (реализация маршрутизации использует дерево префиксов, этот ответ не подходит, другие в порядке)
  3. Есть 4 способа вызова grpc.Вы видели исходный код клиентской версии grpc golang --> server.Расскажите мне о процессе. протокол protobuf, оптимизация производительности GRPC, http2 (ок, это впечатление осталось в предыдущей компании)
  4. Принцип шапки, подбор АП или КП в регистрационном центре.
  5. Что такое CAP etcd? Что такое алгоритм согласованности данных etcd? Подробно опишите протокол raft, что происходит после изоляции раздела и как обеспечить согласованность данных после восстановления изоляции? (ладно, перед тем, как говорить о рафте, я говорил о Паксосе, а потом привел Рафт для сравнения, а потом начал рассказывать о различных ситуациях рафта. Очень рекомендую съездить посмотреть его.плот.GitHub.IO/)
  6. Если вы видели исходный код, давайте поговорим о gomicro (поговорим о том, для чего подходит каждый компонент, и поговорим о том, какие микросервисы используются в нашем проекте. Предыдущий стек технологий gomicro продвигал я, поэтому отвечу здесь. Все в порядке.)
  7. Давайте поговорим о том, как работают ваши микросервисы, когда вы не используете gomicro (реализация стратегий балансировки нагрузки, таких как etcd, продление аренды, понижение уровня обслуживания, ограничение тока, автоматический выключатель, кеш, согласованный хэш и т. д., найденные в реестре, GRPC, golang) Версия rabbitmq client & reconnect после отключения. В отличие от spring cloud или gomicro, многие готовые можно использовать вручную. Конечно, это делается моей командой вместе, и я многое приобрел в процессе, так что не исключайте изучение другого языка или стек технологий имеет свойство открывать окно самому себе)
  8. стресс-тест golang pprof, график пламени и обсуждение точек улучшения производительности архитектурного вывода в сочетании с проектом (ОК)
  9. Структура вашего проекта и управление зависимостями (хорошо, я должен пожаловаться, что godep и glide действительно не так просты в использовании, как maven)
  10. С какими ямами вы сталкивались (ямы возникающие в процессе использования etcd, утечка сопрограмм, вызванная неправильным использованием и как этого избежать, смотреть, сдавать в аренду, сжимать пространство и т.д.)
  11. Что вас впечатлило в использовании golang (сопрограммы, chan, select очень полезны, отложенные, panic&reverse)
  12. Спецификация кодирования Golang, спецификация журнала (здесь очень важно упомянуть спецификацию, у меня есть глубокое понимание рефакторинга при развитии архитектуры, но нет единой спецификации, такой как спецификация Java Ali, и нет официальной рекомендации по субподряду. метод разделения каталогов, поэтому Google затем сформулировал внутреннюю спецификацию команды, основываясь на собственном опыте.Позже выяснилось, что у Nuggets была статья, которая вызвала резонанс и полностью с ним согласовывалась.draveness.me/golang-101Структура журнала не так важна, как использование slf4j непосредственно в Java. Она так же важна, как log4j2 или logback. Если вы выбираете, вы решаете использовать logrus. Студенты QL команды настраивают его в соответствии со своими потребностями.)

трехсторонний всеобъемлющий

  1. Принцип работы Kafka, нулевая копия, принцип работы координатора группы, вопросы, связанные с зачетом
  2. Отслеживание ссылок SkyWalking, возможности и принципы реализации zipkin, исследование Java
  3. Блокировки MySQL, индексы, транзакции, оптимизация больших объемов данных
  4. Структура данных ziplist модели потока Redis, схема сохранения процесса резервного копирования моментального снимка rdb (копирование при записи - плохой ответ, я знаю только копирование при записи в Java, конкретная операция процесса разветвления Linux не ясна). Стратегия ликвидации, проникновение в кеш Крупномасштабное решение для аннулирования
  5. Вопрос об алгоритме рукописного кода предполагает, что есть два оператора * и - *, представляющие ×2, представляющие вычитание на единицу, что дает вам два числа a, b требуется вычислить минимальное количество шагов, чтобы получить b из a с помощью этих двух операций (хорошо ,алгоритм не Моя сила,я не задавал этот вопрос,когда чистил алгоритм,но он относительно прост.На его написание ушло секунд 10 и несколько минут.Он не полный.Расскажу об идее и используйте бинарное дерево, чтобы сделать это.)
  6. Расскажите об интересующей вас технологии и будущем направлении развития (технические аспекты)

Режиссер четырех сторон

Не вдаваясь в подробности, это следующие вопросы

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

После завершения интервью вернитесь и дождитесь уведомления отдела кадров.

наконец получил предложение

Этот двухлетний опыт подытожен одним предложением.

Правильно, нельзя недооценивать человека.

Напоследок желаю остальной команде убогого развития.