Систематические знания и вопросы для интервью по изучению Java, которые я обобщил сам, находятся в открытом доступе и в настоящее время имеют более 35 тысяч звезд. Он будет продолжать улучшаться, предложения и рекомендации приветствуются, и Star также приветствуется:GitHub.com/snail Climb/…
Эта статья взята изAnonymousвклад.
Одна сторона (около 37 минут)
С одной стороны, это был звонок от младшего брата из Шанхая, внутренний толчок подтвердился в полдень 12 марта, а он звонил днем, чтобы записаться на прием, он же был единственным интервьюером, который записался на прием. Около восьми часов вечера. После напряженного сравнения первое в моей жизни интервью было посвящено Али.
К счастью, маленький гот сбоку нежный. Как репатриант? Английский смешивается с разговорной речью. Не много ерунды, перейдем к галантерее:
Интервьюер:Представьтесь первым!
Я:Барбара….
О представлении себя: от лица отдела кадров, лица технического специалиста до лица исполнительного лица/руководителя отдела, интервьюер обычно просит вас сначала представиться, поэтому очень важно хорошо подготовиться к представлению себя. Общая рекомендация в Интернете состоит в том, чтобы подготовить два рассказа о себе: один для HR, в основном о своем опыте и навыках программирования, которые вы знаете, другой для технических интервьюеров, в основном о себе. опыт упоминается в одном предложении.
Интервьюер:Я вижу в вашем резюме, что вы сделали систему seckill? Давайте начнем с этого проекта и сначала представим ваш проект.
О представлении проекта: Если есть проект, на первом этапе технического собеседования интервьюер обычно просит вас представить свой проект самостоятельно. Можно рассмотреть следующие направления:
- Ощущение общего дизайна проекта (интервьюер может попросить вас нарисовать схему архитектуры системы)
- За что вы отвечали, что делали и какую роль играли в этом проекте
- Из этого проекта вы узнали об этих вещах, использовали эти технологии, научились использовать эти новые технологии.
- Кроме того, в описании проекта лучше всего отразить свои собственные комплексные качества, например, как вы координировали разработку членов команды проекта или как вы решили сложную проблему, когда с ней столкнулись, или как вы использовали ее в этом проекте. Какая технология выполняет какие функции, например: использование Redis в качестве кеша для повышения скорости доступа и параллелизма, использование очередей сообщений для сокращения пиков и нисходящих потоков и т. д.
Я:Я сказал, как думал о его потребностях (скрытие адресов seckill, запись заказов, сокращение запасов). Сначала я просто использовал метод синхронизированной блокировки, но возникла проблема. Позже оптимистическую блокировку доработали, и возникло узкое место. Лавина кеша предотвращается, поэтому кеш прогревается, а время аннулирования кеша сдвигается. Наконец, было обнаружено, что запись заказа и последующее сокращение запасов сократит время ожидания блокировки на уровне строки.
С одной стороны, интервьюер терпеливо выслушал и дал мне некоторые указания.Он спросил меня, как реализовать оптимистическую блокировку.Я сказал, что это основано на операторе sql, добавляя количество оставшихся запасов > 0 к условию инвентаризации where операция сокращения, и он сказал, что это должно быть Это не оптимистическая блокировка. Сначала вы должны проверить инвентарь и решить, совпадает ли текущий инвентарь с инвентарем, который вы читаете, когда вы уменьшаете инвентарь (но не этот ли еще операция запроса?Я не очень понимаю,но я и не опровергал,просто сказал что я вас понимаю)Смысл.Выходит не шлепайте интервьюера,даже если вы считаете,что он не прав)
Интервьюер:Что происходит, когда я кэширую лавины? Как этого избежать?
Я:Когда несколько кэшей элементов становятся недействительными одновременно, возникает лавина, что приводит к большому количеству запросов к базе данных. В начале всплеска данных в кеше нет. Решение: прогрев кэша, разнесение времени инвалидации кэша
Интервьюер:Почему я не обновляю кеш сразу при обновлении базы, а удаляю кеш?
Я:Потому что считается, что обновление кеша после обновления базы данных может привести к тому, что грязные данные будут записаны в условиях многопоточности (например, поток A сначала успешно обновляет базу данных, затем извлекает кэш обновлений, затем поток B обновляет базу данных, но поток B снова обновляет кеш, затем B Временной квант истекает, поток A обновляет кеш)
Спустя почти 30 минут интервьюер сказал мне тоном Джей Чоу:
Я вдруг был ошеломлен и поспешно сказал спасибо.Именно благодаря утверждению интервьюера в первом интервью, моя уверенность значительно возросла, и я смог стабильно выступать на двух-трех сторонах.
Интервьюер сказал:Я думаю, вы все еще понимаете базу данных, не так ли? Ответ: Я знаю немного. . . Тогда позвольте мне задать простой вопрос!
Я:Поскольку вопрос был таким простым, я забыл, что это было.
Интервьюер:Какие знания о базах данных у вас еще есть?
Я:Когда я это услышал, это было так случайно? . . Позвольте мне выбрать тему, я скажу, что понимаю индексы, медленную оптимизацию запросов, бла-бла
Интервьюер:Подождите, вы сказали индекс, верно, тогда вы можете рассказать о структуре хранения данных индекса?
Я:Я думал, что это легко, я просто сказал дерево B+, и почему я использовал дерево B+
Интервьюер:Что это за сумка J.U.C в твоем резюме? (Он не знает JUC)
Я:Это многопоточный пакет Java. . .
Интервьюер:Итак, что вы знаете об этом?
Я:Хахаха! Это моя сильная сторона, от ConcurrentHashMap, ConcurrentLinkedQueue до CountDownLatch, CyclicBarrier и до пула потоков, соответственно базовой реализации и приложения в проекте.
Интервьюер:Я думаю, что почти все, тогда я задам еще один вопрос, который не имеет никакого отношения к технологиям, хотя этот вопрос, вероятно, не должен быть задан мной, то есть как вы думаете об архитектуре вашего проекта?
Я:Сначала реализуйте его самым простым способом, затем исследуйте проблемы и узкие места системы, а затем проверяйте данные для улучшения архитектуры. . .
Интервьюер:Хорошо, тогда позвольте мне представить вам мою ситуацию.
Суммировать:С одной стороны, это может быть собеседование по резюме. Вопрос относительно простой. В проекте я рассказал процесс обучения и размышления, когда работал над проектом, и завоевал благосклонность интервьюера. Я чувствую, что он должен дайте мне хорошую оценку.
Две стороны (около 33 минут)
Однако, порадовавшись какое-то время, инсайдер спросил меня, как мое лицо? Смотрите, чтобы мой процесс дошел до большого босса. Я не куратор? ? ? Почему ты прыгнул прямо в сторону. Поэтому я мгновенно запаниковал и поспешно (встав с постели) занялся изучением и подготовкой ко второй стороне.
На следующий день, в 10:56 утра 14 марта, мне позвонил большой босс в Ханчжоу. Я был в то время в классе Мао Гай. Не смейте выбегать. Так что я поднял трубку и сказал, что извиняюсь, я в классе, могу ли я пройти собеседование ночью? Большой босс, кажется, очень занят, скажи мне, что у тебя нет времени ночью, давай поговорим об этом!
Итак, еще через день, в полдень 3.16 мне позвонили из Пекина.Тогда я был немного разочарован.А что насчет моего большого босса? ? ? Когда я поднял трубку, это была бешеная бомбардировка. . .
Первый шаг — сначала представиться, я не буду много говорить об этом, можно подготовить ключевые моменты заранее!
Интервьюер:Давайте начнем с вашего проекта и поговорим о вашей системе seckill.
Я:Односторонняя рутина. . . Я учитываю, что адрес seckill не должен быть выставлен пользователю до его запуска. . .
Интервьюер:Подождите минутку, почему это? Что происходит при воздействии на пользователей?
Я:Если пользователи заранее знают адрес seckill, они могут писать скрипты для раскупа покупок, что несправедливо.
Интервьюер:Например, я теперь хакер, я написал скрипт в начале seckill и запустил 10 000 потоков, чтобы получить адрес seckill, разве это не несправедливо?
Я:Я принял это во внимание, поэтому сам написал кэш LRU (акцент, почему мне не нужно писать так много полезных кэшей? Просто чтобы интервьюер спросил меня, как я это написал, чтобы я мог форсировать подготовленный контент !), используйте этот кеш для хранения запрошенного ip и имени пользователя, а один ip и имя пользователя могут одновременно передавать только 3 запроса.
Интервьюер:Так можно ли создать пул ip proxy и много пользователей накинуть? Предположим, у меня есть счета со многими номерами мобильных телефонов.
Я:Меня это смущает, я сказал, что эта ситуация слишком похожа на работу реальных пользователей. . . Я не вижу разницы, но думаю, что это можно сделать с помощью информации о геолокации или алгоритмов машинного обучения. . .
Интервьюер:Хорошо, это все, что касается этого вопроса, вы продолжаете говорить
Я:Я помещаю два sql-оператора формирования заказа и сокращения запасов в одну транзакцию.Если операции выполнены успешно, второе убийство считается успешным.
Интервьюер:Подождите, ваша таблица заказов и таблица запасов товаров находятся в одной базе данных, что, если они находятся в разных базах данных?
Я:Этот интервьюер такой извращенец, я всего лишь студент? ! ? ! Я думаю, что это должно быть реализовано с распределенными блокировками. . .
Интервьюер:Есть ли более легкий подход?
Я:Я больше не знаю. Позже я проверил данные и обнаружил, что это можно реализовать с помощью очереди сообщений. Использование очередей сообщений может принести два основных преимущества: (1) повысить производительность системы (снижение пиковых нагрузок, сократить время отклика) за счет асинхронной обработки; (2) уменьшить связанность системы. Для получения дополнительной информации об очередях сообщений ознакомьтесь с этой статьей:snail Climb.git ee.IO/java-expensive/#…
Позже я обнаружил, что очередь сообщений очень полезна, поэтому сейчас я учусь писать очередь сообщений.
Интервьюер:Хорошо, давайте перейдем к проекту.
Я:Я учел проблему лавины кеша, так что. . .
Интервьюер:Подождите, вы рассматривали ситуацию, если срок действия вашего кеша только что истек, и на проверку кеша приходит много трафика, ваша база данных взорвется?
Я:Я не знаю, взорвется ли база данных, но я все равно вот-вот взорвусь. В то время было сказано, что такой высокий параллелизм не рассматривался, но позже было обнаружено, что очереди сообщений также могут быть использованы для решения проблемы, что уменьшит пики трафика и заполнит долины.
Интервьюер:Хороший проект закончился, давайте поговорим о других вещах, давайте разберемся в операционной системе, вы можете рассказать о NIO?
Я:НИО есть. . .
Интервьюер:Итак, вы знаете, что такое системные вызовы NIO и как они реализованы?
Я:В то время, когда я делал обзор NIO, я знал, что происходит, но не знал, как это реализовать. В последнее время я дополнял эти знания.Видно, что NIO все еще очень важен!
Интервьюер:Что происходит с операционной системой при переключении процесса?
Я:Убей меня, больше всего я ненавижу операционные системы. Проще говоря, это может быть не так, вам нужен ответ на Baidu.
Интервьюер:Как насчет пулов потоков?
отвечать:Я с этим знаком. Я сказал все в искусстве параллельного программирования на Java. Рассказал десять минут, и много хвастался. Ведь я пять раз читал эту книгу 😂
Интервьюер:Это хороший вопрос: если интернет-кафе разрабатывает систему чата, должна ли она использовать TCP или UDP? Почему
Я:Конечно это ПТС! Причины следующие:
Интервьюер:Хорошо, у тебя есть что спросить у меня?
Я:У меня следующее интервью?
Интервьюер:должен. Должно быть, в течение недели. Они также сказали мне, что я должен был пройти стажировку в течение трех месяцев, прежде чем я стал постоянным? wtf, как бакалавр с полным третьим курсом позволяет мне проходить стажировку в течение трех месяцев до конца августа?
Я:до свидания интервьюер
Три стороны (46 минут)
3.18 пришли три стороны, на этот раз это был большой босс!
Первый шаг — сначала представиться, я не буду много говорить об этом, можно подготовить ключевые моменты заранее!
Интервьюер:Обсудить ваш проект?
Я:После двух уроков я быстро усвоил теоретические знания о распределении и применил их в своем проекте (хвастовство).
Интервьюер:Видя, что вы использовали механизм транзакций Spring, можете ли вы рассказать о распространении транзакций Spring?
Я:Закончив этот вопрос, кажется, что я не готов, хотя раньше видел на Жиху. . . Я упомяну только об одном, интервьюер сказал, что на самом деле для этого есть много механизмов, таких как вложение транзакций, внутренний откат транзакции и внешний откат транзакции будут иметь разные ситуации, вы можете вернуться и посмотреть.
Интервьюер:Расскажите мне о вашем решении для распределенных транзакций?
Я:Я говорил о решении по информации, найденной в информации.Почему интервьюер, похоже, не понял? ? ?
Ранее Alibaba открыла исходный код распределенного Fescar (простое в использовании, высокопроизводительное решение для распределенных транзакций с открытым исходным кодом на основе Java), а позже Ant Financial присоединилась к Fescar, чтобы сделать его более нейтральным и открытым распределенным торговым сообществом, Fescar переименован в Сеата. Адрес на гитхабе:github.com/seata/seata
Интервьюер:Хорошо, давайте поговорим о других проектах, поговорим о вашем проекте MapReduce? Вы поняли принцип MapReduce?
Я:Я много говорил, и интервьюер, похоже, счел этот проект слишком простым. Если бы не проект, стал бы я писать о своем эксперименте? ? ?
Интервьюер:Что вы делаете с этой рукописной нейронной сетью BP?
Я:Это было задание для моего курса машинного обучения, которое я расширил.
Интервьюер:Можете ли вы рассказать о том, почему веса корректируются в направлении градиентного спуска?
Я:Босс, вы настолько сильны, что знаете все. Я совершенно не был готов к этому проекту. . . Я не ожидал спросить, прошло несколько месяцев с тех пор, как я это сделал, и я забыл, когда нервничал в то время.Позже я вспомнил, что это было, наверное....
Интервьюер:Хорошо, давайте спросим основы, что такое xisuo?
Я:? ? ? xisuo, что ты сказал, извини, что не расслышал. (у интервьюера легкий акцент...) Это xisuo! сисуо разве ты не знаешь? . . . После десяти секунд смущения я наконец понял, что он говорил о тупиковой ситуации! ! !
Интервьюер:Если со счета A будут переведены деньги на счет B, произойдет ли xisuo? Можете ли вы быть конкретным?
Я:В то время ответ не был хорошим, но позже я узнал, что интервьюер хотел снова спросить о раздаче Конкретный ответ можно найти здесь:blog.CSDN.net/Тейлор производит 2…
Интервьюер:Почему бы не учиться?
Я:Не нравится академическая атмосфера, Барабара.
Интервьюер:У вас есть какие-либо вопросы?
Я:Есть ли у меня другая сторона. . . Интервьюер сказал мне подождать и ответить в течение недели.
Прождав десять дней, я подумал, что мне холодно. Инсайдер сказал, что мой процесс дошел до HR. Дайте мне подождать. Может быть, HR был слишком занят. HR позвонил 3.28 числа. Я был в классе в это время и вылетел .
лицо отдела кадров
Интервьюер:Здравствуйте, позвольте представиться
Я:Барабала.... Техническое собеседование на стороне HR все же отличается от технического!
Интервьюер очень приятный, она очень разговорчивая женщина! Скажите, что я здесь, чтобы тихо сообщить вам, что ваш рейтинг - A!
Затем несколько классических HR-вопросов о повешенных людях: «Что для меня сложно?» Я вижу, как чатятся лица других HR-ов. . .
Интервьюер:Почему вы выбрали Alipay и что вы думаете об Alipay?
Я:Проанализировал волну личных переживаний, философию компании, экологическую атмосферу, рыночную стоимость, трендовую ориентацию (прямо говоря, от Alipay без ума, но, честно говоря, то, что я сказал, вовсе не врало, а Али сделал это Например, я дал Лэй Цзюню и Гри поспорить, что продажи за 5 лет составят 200 млрд. Большинство предпринимателей сосредоточены на прибыли, в то время как Джек Ма больше озабочен тем, чтобы действительно сделать что-то для человечества и мира, и прибыль не на первом месте.)
Интервьюер:Пойми и пойми, тогда мы все знаем твои достоинства, можешь рассказать о своих недостатках?
Недостаток не должен быть ключевой способностью, требуемой целевой позицией! ! !
Короче говоря, имейте в виду, что если интервьюер задаст вам этот вопрос, вы можете сказать о каких-то недостатках, которые не влияют на ваши требования к работе на этой должности. Например, если вы проводите собеседование с бэкенд-инженером, и интервьюер спрашивает, какие у вас недостатки, вы можете сказать так: Вы более замкнуты и обычно не любите общаться с другими, но учитывая, что вам, возможно, придется с клиентами в будущем, вы много работаете, чтобы изменить его.
Я:Говорят, что это самый сложный вопрос в HR. . . Я несколько дней просматривал Жиху, чтобы найти подходящий ответ, который также соответствовал моему ответу: я иногда действовал менее уверенно.Например, внутренний толчок Али начался в феврале.На самом деле я уже давно пересматривал его.Но я всегда чувствовал, что я недостаточно хорош, и не осмелился отправить свое резюме, поэтому я прочитал книгу еще раз, прежде чем проголосовать. В то время мой сосед по комнате подтолкнул меня к голосованию. После встречи я обнаружил, что я неплох. (Поставьте ключевые моменты, обязательно округлите свои недостатки).
Интервьюер:HR, кажется, не удовлетворен моим ответом и продолжает спрашивать, есть ли у меня недостатки?
Я:Я сказал, что легче нервничать, привел пример, что не хожу в лабораторию из-за нервозности, потом я постоянно корректировал свой менталитет, и сейчас мне намного лучше.
Далее очень сложный вопрос.
Интервьюер:Компания BAT сделала вам предложение. Как выбрать?
На самом деле, я хотел сказать, что такое БТ? К сожалению, я знаю только Али.
я:Ха-ха-ха, шучу, просто говорю о культуре Али, Alipay принесла нам много удобства, и я хочу присоединиться к Alipay, чтобы внести свой вклад в человечество!
В конце концов, HR спросил меня о времени моей стажировки, сколько мне сейчас лет и т.д. Они сказали, что обязательно сделают мне предложение, только дайте мне подождать, и я надеюсь получить хорошие результаты через два дня.
публика
Если вы хотите следить за моими обновленными статьями и делиться галантерейными товарами в режиме реального времени, вы можете подписаться на мой официальный аккаунт.
«Нападение на Java-интервью»:"Java Interview Assault" V2.0 PDF-версия, полученная из этого документа для интервью.публикаФоновый ответ"Блиц-интервью по Java"Получите это бесплатно!
Важные учебные ресурсы для Java-инженеров:Некоторые Java-инженеры обычно используют ключевые слова для фонового ответа общедоступной учетной записи учебных ресурсов."1"Вы можете получить его бесплатно без каких-либо уловок.