Все еще согревающий муравьиный финансовый обед (уже есть предложение)! С ответом! !

интервью Java

Эта статья предоставлена ​​игроком в гольф моей Планеты Знаний.Он получил предложение стажера от Ant Financial в недавнем наборе в школу.Общая идея и вопросы для интервью предоставлены автором - Zelin, а некоторые ответы организованы Холлис из «Планеты знаний», раздел «Face Java» журнала «Холлис и друзья».

Из-за высокой степени напряженности в процессе интервью автора в этой статье перечислены лишь некоторые из тем, которые я еще помню.

После долгого месяца ожидания я наконец узнал через интервьюера несколько дней назад, что я был принят в Ant Financial.Излишне говорить, что тревога и боль в течение этого периода, момент, когда я узнал, что меня приняли, дымка весь год был сметен.пустой.

Автор проходит собеседование на должность инженера по исследованиям и разработкам Java в Alibaba.Процесс собеседования состоит из 3 раундов технического собеседования + 1 раунд собеседования с персоналом.

1

неожиданная сторона

Первое интервью было примерно 12 марта. После интервью я ждал почти полмесяца, прежде чем мне вдруг позвонил второй интервьюер. Одна сторона может быть стороной резюме, поэтому вопрос проще.

Разница между ArrayList и LinkedList

ArrayList — это массив с изменяемым размером. По мере добавления новых элементов в список ArrayList его размер будет динамически увеличиваться. Доступ к внутренним элементам можно получить напрямую с помощью методов get и set, поскольку ArrayList по сути является массивом.

LinkedList — это двусвязный список, который имеет лучшую производительность, чем ArrayList, при добавлении и удалении элементов, но слабее, чем ArrayList, с точки зрения получения и установки.

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

Что может вызвать утечку памяти

В Java утечка памяти — это наличие некоторых выделенных объектов, которые имеют следующие две характеристики:

Во-первых, эти объекты достижимы, то есть в ориентированном графе есть пути, которые могут к ним соединиться;

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

Если объекты удовлетворяют этим двум условиям, эти объекты можно расценивать как утечки памяти в Java, эти объекты не будут собираться сборщиком мусора, но они занимают память.

Что такое взаимоблокировка потока и как ее исправить 

Есть четыре условия возникновения взаимоблокировки:

  1. Условие взаимного исключения: так называемое взаимное исключение означает, что процесс может монополизировать ресурсы на определенный период времени. 

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

  3. Условие отсутствия лишения: процесс получил ресурс и не может быть принудительно лишен, пока он не будет израсходован. 

  4. Условие циклического ожидания: между несколькими процессами формируются отношения ресурсов циклического ожидания.

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

Чтобы выйти из тупика, мы можем начать с четырех условий тупика.Поскольку одно необходимое условие нарушено, наш тупик разрешен. При использовании многопоточности в java вы должны учитывать, нет ли проблемы взаимоблокировки.

Что такое красно-черное дерево?Как этого добиться? временная сложность 

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

Каждый узел красно-черного дерева имеет бит хранения для указания цвета узла, который является красным (красный) или черным (черный). Характеристики красно-черных деревьев:

  1. Каждый узел либо черный, либо красный.

  2. Корневой узел черный.

  3. Каждый листовой узел черный.

  4. Если узел красный, его потомки должны быть черными.

  5. Все пути от узла к его потомкам содержат одинаковое количество черных узлов.

Что касается его особенностей, то следует отметить, что:

Во-первых, листовые узлы в функции (3) являются только пустыми (NIL или нулевыми) узлами.

Во-вторых, функция (5) гарантирует, что ни один путь не будет вдвое длиннее других. Таким образом, красно-черное дерево представляет собой относительно близкое к сбалансированному бинарное дерево.

Конкретный код реализации здесь не выложен, для его реализации необходимо включить основные операции, которые необходимо включить: сложение, удаление и поворот. Метод вращения используется после добавления или удаления красно-черного дерева. Цель ротации - сохранить дерево красно-черным. Различают два типа вращения: левое и правое.

Красное черное дерево широко используется, и он в основном используется для хранения упорядоченных данных. Время сложности его поиска, введения и операции удаления o (LGN).

Трехстороннее рукопожатие TCP 

Трехкратное рукопожатие (трехстороннее рукопожатие; трехстороннее рукопожатие) Так называемое «трехстороннее рукопожатие» заключается в согласовании того, как отслеживать объем данных, отправляемых каждый раз, для синхронизации отправки и получения сегментов данных, что определяется в зависимости от количества полученных данных Количество подтверждений данных и когда отменить контакт после отправки и получения данных, а также установить виртуальное соединение.

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

Первое рукопожатие: когда соединение установлено, клиент отправляет пакет синхронизации (syn=j) на сервер и переходит в состояние SYN_SENT, ожидая подтверждения от сервера; SYN: синхронизировать порядковые номера.

Второе рукопожатие: сервер получает пакет syn и должен подтвердить SYN клиента (ack=j+1), и в то же время отправляет пакет SYN (syn=k), то есть пакет SYN+ACK, в это время время перехода сервера в состояние SYN_RECV;

Третье рукопожатие: клиент получает от сервера пакет SYN+ACK и отправляет серверу подтверждающий пакет ACK (ack=k+1).После отправки пакета клиент и сервер входят в УСТАНОВЛЕННОЕ (TCP-соединение) выполнено успешно) состояние, которое завершается три раза пожать друг другу руки.

2

внезапный двойной

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

Представляем проект

Как Storm обеспечивает согласованность 

Storm — это распределенная система обработки потоков, использующая механизмы привязки и подтверждения для обеспечения успешной обработки всех кортежей. Если кортеж неправильный, его можно передать повторно, но как сделать так, чтобы неверный кортеж обрабатывался только один раз? Storm предоставляет набор транзакционных компонентов Transaction Topology для решения этой проблемы.

Транзакционная топология больше не поддерживается, и Trident реализует транзакционную топологию, но принцип тот же.

Ссылка: https://dwz.cn/8bXRPexB

Поговорите о хэшмапе и о том, является ли он потокобезопасным.

Hashmap реализован на основе MAP-интерфейса хеш-таблицы. В HashMap в качестве ключа может использоваться NULL, такой ключ только один, есть значение, соответствующее одному или нескольким ключам. Размер HashMap по умолчанию равен 16 и должен быть равен 2 index. Hashtable, hashmap, используемый итератор. По историческим причинам HashTable также использует метод Enumeration. Hashmap реализует Iterator, поддерживающий Fast-Fail.

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

HashMap не является потокобезопасным.

Один миллиард записей о покупках на Taobao, как попасть в десятку самых популярных 

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

Разделяй и властвуй, хеш-карта, сортировка кучей, раздел с двумя сегментами, фильтр Блума, растровое изображение, индекс базы данных, mapreduce и т. д.

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

Вы обычно используете систему Linux, как просмотреть процесс 

ps aux|grep java 查看java进程ps aux 查看所有进程ps –ef|grep tomcat 查看所有有关tomcat的进程ps -ef|grep --color java 高亮要查询的关键字kill -9 19979 终止线程号位19979的进程скопировать код

Разговор о разнице между Innodb и MySIAM

Тип MyISAM не поддерживает расширенную обработку, такую ​​как обработка транзакций, в отличие от типа InnoDB. Таблицы типа MyISAM подчеркивают производительность, которая работает в несколько раз быстрее, чем типы InnoDB, но не обеспечивает поддержку транзакций, в то время как InnoDB обеспечивает поддержку транзакций и расширенные функции базы данных, такие как внешние ключи.

InnoDB не поддерживает индексы типа FULLTEXT.

InnoDB не сохраняет конкретное количество строк в таблице, то есть при выполнении select count(*) из таблицы InnoDB необходимо просмотреть всю таблицу, чтобы вычислить количество строк, но MyISAM просто считывает количество строк. сохраненные строки. . Обратите внимание, что когда оператор count(*) содержит условие where, операции для обеих таблиц одинаковы.

Для полей типа AUTO_INCREMENT InnoDB должен содержать индекс только для этого поля, но в таблицах MyISAM может быть установлен совместный индекс с другими полями.

При УДАЛЕНИИ ИЗ таблицы InnoDB не будет перестраивать таблицу, а будет удалять строку за строкой.

Операция LOAD TABLE FROM MASTER не работает для InnoDB.Решение состоит в том, чтобы сначала изменить таблицу InnoDB на таблицу MyISAM, импортировать данные, а затем изменить их на таблицу InnoDB, но таблица не использует дополнительные функции InnoDB (такие как внешние ключи).

Расскажите о модели памяти jvm и расскажите о знакомом вам сборщике мусора. 

На самом деле понятия модели памяти jvm не существует. Это должна быть модель памяти Java или структура памяти jvm.Здесь интервьюируемый должен четко слышать, о чем спрашивают, прежде чем ответить.

Может относиться к: структуре памяти JVM VS модели памяти Java VS объектной модели Java

Вы сказали, что вы большие указания данных, какие основные рамки данных находятся

Автор ответил какому-то zookeeper, storm, HDFS, Hbase и т.д.

другие проблемы

100 упорядоченных целых чисел, как перетасовать порядок?

Как разработать надежный протокол UDP?

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

3

Подготовьтесь достаточно

Во время фестиваля Цинмин я не пошел домой, чтобы посетить могилу, потому что знал, что моя слабость — это операционная система и огромные проблемы с данными, поэтому я думал о том, чтобы наверстать это знание, но не стал спрашивать об этом в интервью после этого неожиданно. .

Представляем проект

После введения проекта я не просил слишком много

Ввести хэш-карту

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

Внедрить параллелизм

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

Как читать и писать банковские счета

Я сказал о блокировках чтения-записи и возможных проблемах взаимоблокировки.

Расскажите о разнице между реляционной базой данных и нереляционной базой данных. 

Преимущества нереляционных баз данных:

  1. Производительность: NOSQL основан на парах ключ-значение, которые можно представить как соответствующие отношения между первичным ключом и значением в таблице, и их не нужно анализировать на уровне SQL, поэтому производительность очень высока.

  2. Масштабируемость: также на основе пар «ключ-значение» между данными нет связи, поэтому их очень легко масштабировать по горизонтали.

Сценарии использования: логи, закопанные точки, форумы, блоги и т.д.

Преимущества реляционных баз данных:

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

  2. Поддержка транзакций: позволяет реализовать требования к доступу к данным с высокой производительностью безопасности.

Сценарий использования: все логически связанные хранилища данных

Как получить доступ к промежуточным узлам в связанном списке

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

Если проблема требует, чтобы связанный список можно было пройти только один раз, как решить проблему?

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

Поговорите о межпроцессном взаимодействии и их различиях

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

Конкретный процесс доступа к веб-страницам Taobao, от получения IP-адреса до возврата соответствующего контента.

Сначала разрешите адрес сервера через DNS, затем обратный прокси, сервер балансировки нагрузки и т. д., найдите машину в кластере, чтобы фактически выполнить ваш запрос. Вы также можете ввести CDN, кэширование страниц, файлы cookie и сеансы.

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

После того, как сервер получит запрос, он выполнит бизнес-логику, и процесс выполнения может быть представлен отдельно в соответствии с MVC.

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

Наконец, запросите базу данных, будет ли она кэширована? Это реляционная база данных? Будет ли это подтаблица подбазы данных или какие операции?

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

Наконец, результат обработки инкапсулируется в ответ и возвращается клиенту. Затем браузер отображает страницу.

4

тревожное лицо

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

какие неудачи

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

Вы можете кратко описать неудачу и объяснить, как вы ее преодолели и что в итоге получили.

планирование карьеры 

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

Знание Али 

Это относительно короткий ответ, и это нормально.

Есть ли кто-нибудь, кто поклоняется?

Я сказал «Джеймс Харден», мисс HR даже рассмеялась.

Это, можно сказать, какие-то IT-гуру.

Где вы хотите работать

На этот вопрос решающим образом отвечает город, в котором находится компания.

другие проблемы 

Есть ли у вас увлечения и увлечения?Кто умеет выступать на сцене?

памятные вещи

5

Суммировать

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

В основу входят:Операционная система, linxu, база данных, структура данных, алгоритм, java (базовый, контейнер, высокий параллелизм, jvm), компьютерная сеть и т. д.

Рекомендуется инвестировать в знания.С зимних каникул до сих пор я купил 9 курсов для гиков, подписался на планету знаний Бога H и купил четыре или пять соответствующих технических книг...

Хоть и куплено много курсов, но читать уже поздно (стыдно)

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

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

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

6

Наконец

Одним словом, это действительно неожиданно и повезло получить предложение Ant Financial. Это цель, которую я думаю, трудно достичь, но это происходит. Может быть, это счастье стучится в дверь. Я могу дать Совет себе и другим: не торопитесь.

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

Планета знаний "Холлис и его друзья", много раз упоминаемая в статье, представляет собой круг обмена знаниями, созданный мной. В настоящее время более 1000 друзей учатся вместе, и запущен второй этап. Добро пожаловать, отсканируйте код, чтобы присоединиться . Подробное введение:Поговорим о разделе «Столкновение с Java»,Глубокое понимание параллельного программирования в серии Java,Расскажите о разделе «Дорога к Богу».

С этого момента до 5.1, первоначальная цена 138 юаней / год Планеты знаний, ограниченная по времени скидка 98 юаней, чтобы присоединиться, старые пользователи могут получить 20% скидку на продление. Добро пожаловать! После присоединения, если вы не удовлетворены, вы можете получить возмещение в течение 3 дней.

Своя! Это самое выгодное вложение в вашей жизни! !

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

- ЕЩЕ | Другие интересные статьи -

Если вам понравилась эта статья,

Пожалуйста, нажмите и удерживайте QR-код, чтобы следовать Hollis.

Пересылка его в круг друзей - это самая большая поддержка для меня.