Рынок в этом году настолько плох, как войти в большую фабрику?

интервью задняя часть

После Весеннего фестиваля я, студентка третьего курса двойного нешлакового колледжа, отправилась на стажировку и прошла не менее 30 собеседований.Хотя это было очень хорошо, я также получил несколько предложений соответственно, таких как Jingdong Finance , Люди Люди и машины ждут пяти-шести предложений

Подводя итог весеннему набору, можно сказать одно слово: сложно.

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

алгоритм

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

  • очередь.

  • множество.

  • куча.

  • связанный список.

  • Дерево.

  • Хэш-таблица (хеш-таблица).

  • куча.

  • рисунок.

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

  • Упорядоченное дерево: между дочерними узлами любого узла в дереве существует отношение порядка.Этот тип дерева называется упорядоченным деревом.

  • Двоичное дерево: Дерево с не более чем двумя поддеревьями на узел называется бинарным деревом.

  • Полное бинарное дерево.

  • Полное бинарное дерево.

  • наклонное дерево.

  • Сбалансированное бинарное дерево.

  • Дерево Хаффмана: бинарное дерево с кратчайшим взвешенным путем называется деревом Хаффмана или оптимальным бинарным деревом.

  • Красное черное дерево.

И различные методы обхода, печать по слоям, статистическое расстояние и т.д.

Дерево является основой, а базовая структура данных также включает графы и методы обхода графов.

DFS, BFS и различные преимущества и недостатки, жадные алгоритмы, поиск с возвратом, моделирование и т. д. могут быть улучшены только путем очистки вопросов.

компьютерная сеть

  • Разница GET/POST.
  • Разница UDP/TCP.
  • Трехстороннее рукопожатие TCP. И из этого вытекает ряд проблем TCP: что такое TIME-WAIT, почему это может быть трехсторонняя волна, почему не может быть двустороннее рукопожатие, управление потоком, скользящее окно, алгоритм Нейгла, синдром запутанного окна, перегрузка управление, медленный старт, предотвращение перегрузки, быстрая повторная передача, быстрое восстановление, длинное соединение или короткое соединение, а также сценарии применения.
  • HTTP 1.0, 1.1, 2.0.
  • Расскажите о процессе HTTPS, о том, что такое SSL, что такое асимметричное шифрование, симметричное шифрование и конкретная реализация RSA.
  • Что такое семиуровневая модель OSI, какие существуют протоколы и каковы четыре уровня TCP/IP.
  • Принципы протоколов DNS и ARP.
  • Что происходит, когда вы вводите URL-адрес в адресной строке.
  • Что такое веб-сокет.
  • Некоторые проблемы сетевой безопасности, например, как решать атаки DOS, как решать спуфинг DNS, спуфинг ARP, внедрение SQL, XSS, CSRF, проблемы безопасности iframe, проблемы с данными локального хранилища, проблемы безопасности, зависящие от третьих сторон.
  • HTTP — это протокол, который не сохраняет состояние, так как сохранить состояние пользователя.
  • Какова роль файлов cookie и в чем разница между ними и сессиями.
  • Каков механизм реализации сеанса, каковы меры предосторожности в распределенной среде, как выйти из сеанса, как установить продолжительность сеанса и какова продолжительность по умолчанию.
  • В чем основное различие между HTTP 1.0 и HTTP 1.1.
  • Связь между различными протоколами и протоколом HTTP.
  • Что такое сервлет, фильтр и прослушиватель, где они используются и как обрабатываются страницы JSP.
  • В чем разница между переадресацией запроса, перенаправлением URL и включением, и как это реализовать.
  • Как определить, открыт ли порт на удаленной машине?В проекте нужно проверить локальное разрешение IP доменного имени и как с ним работать.
  • В Servlet, в чем разница между вызовом JSP для отображения элементов и возвратом String (т.е. API, обычно данных json).
  • В режиме nginx + tomcat, как сегмент сервера получает IP-адрес запроса клиента.
  • Каков жизненный цикл сервлета.
  • Является ли сервлет потокобезопасным.

Основы Java

  • Опишите разницу между передачей по значению и передачей по ссылке.

  • В чем разница между == и equals, как переопределить метод equals в String, зачем переопределять метод equals и зачем переопределять метод hashCode.

  • Строка s1 = новая строка ("abc"), строка s2 = "abc", s1 == s2 . Оператор 1 создает несколько объектов в памяти.

  • Почему String неизменяем, как String определяется в исходном коде jdk и почему он так спроектирован.

  • Пожалуйста, опишите использование статического ключевого слова и окончательного ключевого слова.

  • В чем разница между интерфейсом и абстрактным классом.

  • Разница между перегрузкой и переопределением.

  • Три характеристики объектно-ориентированного, говорят о вашем понимании хх.

  • В нем исследуется преобразование базовых типов и работа дополнения исходного кода.

  • Что такое диапазон значений байта и как его рассчитать.

  • Связано с HashMap, разница между HashMap и Hashtable, разница между HashMap и HashSet, базовая реализация HashMap, почему длина HashMap является степенью двойки, проблема бесконечного цикла, вызванная многопоточной операцией HashMap, каковы потокобезопасные реализации HashMap, базовой реализации ConcurrentHashMap.

  • Целочисленный буферный пул.

  • Связь между UTF-8 и Unicode.

  • Проект находится в среде UTF-8, char c = 'medium', это законно?

  • На что следует обратить внимание при использовании списка, полученного с помощью Arrays.asList.

  • Разница между коллекцией и коллекциями.

  • Вы знаете отказоустойчивый и отказоустойчивый.

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

  • Разница между Set и List и то, как Set гарантирует, что элементы не повторяются.

  • UTF-8 и GBK конвертируются друг в друга, почему они искажены?

  • Разница между перегрузкой и переопределением.

  • Почему Java интерпретируемый язык.

  • Разница между ConcurrentHashMap 1.7 и 1.8: общая структура; метод put(), метод get(), метод resize(), метод size()

  • Что происходит, когда вы вводите URL-адрес в адресной строке.

  • Разница между композицией и агрегацией.

  • Расскажите о сборщике мусора CMS.

  • Динамический прокси-сервер JDK и динамический прокси-сервер GClib, конкретный принцип реализации динамического прокси-сервера JDK, динамического прокси-сервера CGLib и сравнение между ними.

  • Проблема утечки памяти Threadlocal.

  • Как реализована безопасность StringBuilder и как ее расширить.

MyBatis

  • Процесс выполнения Mybatis.

  • Тайник Мибатиса.

  • Шаблоны проектирования, используемые Mybatis.

Блокировка Java

  • тип замка

  • Пессимистическая блокировка против оптимистичной блокировки

    Пессимистичные блокировки представляют собой ключевое слово Synchronized.

    Ключевое слово Synchronized реализует метод.

    Оптимистическая блокировка представляет собой операцию CAS.

    Проблемы ABA, вызванные CAS.

    Длинное время цикла и накладные расходы, вызванные CAS, являются большой проблемой.

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

    Как CAS гарантирует атомарные операции.

    Принцип реализации AtomticXXX.

    изменчивое ключевое слово.

    Причина видимости памяти.

    Причина отключения переупорядочивания инструкций.

    Причина, по которой ключевое слово volatile не гарантирует атомарных операций.

    Обсуждение ключевого слова volatile.

    Знакомство с правилом «случиться до».

  • Повторно входящие блокировки, прерываемые блокировки, честные блокировки, блокировки чтения-записи

    Расскажите о своем понимании AQS.

    Реактивная блокировка.

    Прерываемый замок.

    Справедливый замок.

    Блокировка чтения-записи.

  • Блокировка смещения/легкая блокировка/тяжелая блокировка Процесс обновления.

  • Пополнить

    блокировка вращения.

    Блокировка сегмента.

    Обязательно ли легкие замки быстрее, чем тяжелые замки?

Многопоточность Java

  • разница между потоком и процессом

    Состояние потока.

    Сообщите и ждите.

    Сходства и различия между Thread.sleep() и Thread.yield().

    Концепция тупика.

    Разница между параллелизмом и параллелизмом.

    Три элемента безопасности потоков.

    Как добиться потокобезопасности.

    Механизм для обеспечения потокобезопасности.

    Расскажите о понимании многопоточности.

    Разница между методами run и Start.

  • Многопоточность

    Способ создания потока.

    Пул потоков создает потоки.

    Введение в ThreadPoolExecutor.

    Блокировка очереди.

    Очередь блокировки массива.

    Связанная очередь блокировки.

    Основное различие между LinkedBlockingQueue и ArrayBlockingQueue.

    политика отказа обработчика.

    Существует пять состояний пула потоков.

    Глубокое понимание ThreadPoolExecutor.

    Какова роль атрибута ctl в пуле потоков.

    Разница между shutdownNow и shutdown.

    Принцип повторного использования нити.

    Душевная пытка: как настроить параметры пула потоков.

    Разница между CountDownLatch и CyclicBarrier.

  • Несколько способов связи между несколькими потоками

    Используйте ключевое слово volatile.

    запорный механизм.

    финальное ключевое слово.

    Класс ThreadLocal.

    Связанные классы блокировки в пакете JUC

Модель памяти JVM

  • Модель памяти JVM

    Счетчик программ (записывает текущий поток).

    Стек Java (стек виртуальной машины).

    Стек собственных методов.

    куча.

    область метода.

    непосредственная память.

  • Сборка мусора JVM

    Критерии оценки мусора.

    Подсчет ссылок.

    Алгоритм анализа достижимости (метод корней).

  • Алгоритм сборки мусора

    Отметить ясно.

    Алгоритм репликации.

    Отделка тегов.

    Поколенческая переработка.

    GC сборщик мусора.

  • уборщик мусора

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

    Сборщик мусора ParNew (последовательный+многопоточность) (новое поколение).

    Сборщик Parallel Scavenge (многопоточный алгоритм репликации, эффективный) (новое поколение).

    Серийный Старый сборщик (однопоточный алгоритм сортировки по меткам) (старое поколение).

    Параллельный Старый сборщик (многопоточный алгоритм сортировки меток) (старое поколение).

    Сборщик CMS (многопоточный алгоритм маркировки-развертки) (старое поколение).

    Сборщик мусора G1.

  • Текущий сборщик мусора в веб-приложениях.

  • Приоритет пропускной способности и приоритет ответа.

  • Малый GC и полный GC.

  • Полное условие срабатывания Gc.

  • Структура памяти объекта.

  • Почему у нового поколения есть две области выживания?

  • Объект действительно недоступен и должен пройти процесс маркировки дважды.

MySQL

  • Что такое транзакции базы данных и каковы четыре характеристики транзакций базы данных.

  • Пожалуйста, приведите пример фантомного чтения и неповторяемого чтения и опишите разницу между ними.

  • Каков уровень изоляции MySQL по умолчанию.

  • Зачем использовать индекс.

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

  • Как индексы улучшают скорость запросов.

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

  • Что такое кластеризованный индекс и некластеризованный индекс

  • Каковы основные структуры данных, используемые индексами MySQL.

  • Поговорите о разнице в том, как MyISAM и InnoDb реализуют индексацию BTree.

  • Что такое индекс покрытия, приведите пример.

  • Расскажите о своем понимании принципа крайнего левого префикса.

  • В чем разница между InnoDb и MyISAM в MySQL.

  • Расскажите о том, как оптимизировать SQL.

  • Как использовать объяснение для анализа эффективности выполнения SQL.

  • Поля, отображаемые с помощью объяснения, подробно объясняются.

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

  • В чем разница между оптимистичной блокировкой и пессимистической блокировкой в ​​базе данных и к каким сценариям они применимы?

  • Основываясь на своем опыте разработки, расскажите о том, как применяются оптимистическая и пессимистическая блокировки в базе данных.

  • Характер индексации.

  • Механизм хранения MySQL.

  • индексы MySQL

    Структуры данных, B-Tree и B+Tree.

    B+Tree с последовательными указателями доступа

    Физическое хранилище для индекса.

    В чем разница между B+Tree и B-Tree.

    Почему B+Tree больше подходит для индексации файлов.

    Почему бы не использовать дерево AVL или красно-черное дерево в качестве индекса.

    Механизм хранения индексов двух двигателей.

    Реализация индекса MyISAM.

    Реализация индекса InnoDB.

    Условие аннулирования индекса.

    тип индекса

    Хэш-индекс.

    упорядоченный массив.

    Индекс дерева B+ (InnoDB).

    Совместный индекс.

    Принцип крайнего левого префикса.

    Индекс покрытия.

    Индекс нажмите вниз.

Spring

  • Жизненный цикл весенней фасоли

    Инициализируйте контейнер.

    Внедрение свойств компонента, модификация и инициализация.

    Использование бобов.

    Закройте контейнер, уничтожьте боб.

  • Как Spring разрешает циклические зависимости bean-компонентов

    Круговые зависимости контейнера.

    установка циклических зависимостей.

    Циклическая зависимость конструктора

  • Процесс загрузки бина

  • Разница между BeanFactory и FactoryBean

  • Регистрация и использование бина

  • Как кеш Spring L3 разрешает циклические зависимости.

  • Spring-транзакции, принципы, поведение распространения, условия отказа.

  • AOP

  • IOC

  • Принцип автоматического внедрения SpringBoot, принцип статера, процесс запуска.

  • Принцип управления транзакциями Spring.

распределенный

  • Какие протоколы поддерживает Dubbo, сценарии применения каждого протокола, преимущества и недостатки.

  • Как установить тайм-аут Dubbo.

  • Какие регистрационные центры есть в Даббо?

  • Каковы стратегии балансировки нагрузки кластеров Dubbo?

  • Основные сценарии применения Dubbo.

  • Основные функции Dubbo.

  • Основные компоненты Dubbo.

  • Процесс регистрации и обнаружения сервиса Dubbo.

  • Процесс вызова службы Dubbo.

  • Какие протоколы поддерживает Dubbo, сценарии применения каждого протокола, преимущества и недостатки.

  • Кластер реестра Dubbo не работает, могут ли издатель и подписчик по-прежнему обмениваться данными?

  • Отношения между Даббо и Спринг.

  • Какую коммуникационную структуру использует Dubbo.

  • Какие решения Dubbo обеспечивают отказоустойчивость кластера?

  • Какие методы сериализации поддерживает Dubbo.

zookpeer

  • тип узла зоокпир.

  • Роль зоокпира.

  • Механизм наблюдения Zookpeer.

  • Как Zookpeer реализует распределенные блокировки.

  • Алгоритм выбора Zookpeer.

  • Алгоритм Паксоса.

  • Алгоритм плота.

  • протокол ЗАБ.

  • Что такое распределенная транзакция.

    Решение для распределенных транзакций.

    Ты знаешь Сета?

    Последовательное хеширование?

    Хэш-слоты и почему 2^14.

  • Компоненты SpringCloud?

  • Что такое Hystrix и как он обеспечивает отказоустойчивость.

  • Что такое RestTemplate.

  • Что такое Рибн.

  • сравнение накос/Эврика.

  • Что такое зуул.

  • Что такое шлюз.

  • Что такое Конфиг.

  • Что такое микросервисы

    Что такое СОА.

    Разница между SOA и микросервисами.

  • Зачем использовать микросервисы.

  • Проблемы и решения использования микросервисов.

  • Как общаться между микросервисами.

  • Как обнаруживаются микросервисы.

  • Зависает микросервис, как решить.

  • Механизм повторных попыток, идемпотентность.

    Ограничение

    предохранитель, понижение

Linux

  • Какие команды часто используются в linux, соответственно и приведены примеры.

  • Как написать команду linux для запроса занятости порта 3306.

  • Как проверить номер процесса определенного java в linux.

  • Технологический метод связи.

  • Процессы, потоки, сопрограммы.

  • Алгоритм планирования процесса.

  • Модель ввода-вывода под Linux.

  • Пользовательский режим и режим ядра.

  • Как уменьшить копирование (mmap) из режима ядра в пользовательский режим.

  • Общие команды.

  • Просмотр журналов.

Как просмотреть

Java в общем смысле — это не что иное, как: JUC, многопоточность, блокировки, коллекции, базовые знания, фреймворки и распределённость.

Систему знаний нужно изучать вместе.

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

Например, HashMap может раздавить обучение, почему коэффициент загрузки 0,75, зачем беззнаковый сдвиг вправо на 16 бит? Почему кратно 2? Почему 8 вместо 7, 9?

**Инструменты легко заменить.**SSH от Zeng Jin, а теперь Spring-Boot и Cloud могут быть новыми через несколько лет, но базовая технология в принципе похожа.Понимание базового уровня поможет не только с точки зрения исследования проблем, это хороший способ мышления и обучения для всего пути продвижения программистов.

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

Обычно в таком порядке:

  • Посмотрите на исходный код и выберите детали

  • Смотрите соответствующие пояснения в блоге и официальном аккаунте

  • Обобщите это сами и напишите в своем собственном файле MD или в блоге.

  • Через неделю или несколько дней после просмотра (кривая забывания Эббингауза) повторение прошлого и изучение новых вещей.

Вопросы кисти

Два хороших места, чтобы задавать вопросы:

  • Ниу Ке, тоже всем рекомендую зайти, все темы бесплатные, и в основном есть большие ребята для обсуждения

  • LeetCode, это тоже возможно, но соответственно будет взиматься определенная плата, например VIP

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

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