1. Базовые знания:
1) класс коллекции: сравнение списков и наборов, сравнение соответствующих подклассов (ArrayList, Vector, LinkedList; HashSet, TreeSet);
2) будет запрошена базовая реализация HashMap, а затем базовая реализация ConcurrentHashMap;
3) Как реализовать последовательное хранилище HashMap: вы можете обратиться к базовой реализации LinkedHashMap;
4) Разница между HashTable и ConcurrentHashMap;
5) Разница между String, StringBuffer и StringBuilder;
6) Какие есть методы Object: например есть метод ожидания, почему нет;
7) нужно понимать разницу между ожиданием и сном;
8) структура памяти JVM, алгоритм JVM;
9) Разница между сильной ссылкой, мягкой ссылкой и слабой ссылкой;
10) Как массив размещается в памяти;
11) Какие шаблоны проектирования использовались, напишите от руки (кроме синглетонов);
12) Что такое ядро springmvc, как обрабатывается процесс запроса и как реализована инверсия управления;
13) Каков принцип аоп весной;
14) Как mybatis обрабатывает набор результатов: отражение, рекомендуется смотреть исходный код;
15) Где полиморфизм java;
16) Какая польза от интерфейса;
17) Разговор о протоколе http, https;
18) кластер протоколов tcp/ip;
19) пятиуровневый сетевой протокол osi;
20) Разница между tcp и udp;
21) Какие алгоритмы шифрования использовались: симметричное шифрование, асимметричные алгоритмы шифрования;
22) Расскажите о tcp, трижды пожимающем руку и четыре раза машущим рукой;
23) Разница между куки и сессией, как сохранить состояние пользователя в распределенной среде;
24) git, svn разница;
25) Пожалуйста, напишите код переполнения стека и кучи;
26) Можно ли использовать ThreadLocal для обмена данными;
2. ИО:
1) Разница между био, нио и аио;
2) nio framework: принцип реализации dubbo;
3) Какой протокол связи используется jsf в рамках JD.com: см. протокол dubbo;
3. Алгоритм:
1) Какие структуры данных куча и стек часто упоминаются в java, кроме того, почему они делятся на кучу и стек для хранения данных.
2) Как TreeMap вставляет данные: левосторонняя, правосторонняя и двусторонняя бинарного дерева;
3) Каким методом можно вставить данные в отсортированный массив? A: Дихотомия Q: Какова временная сложность?
4) Сбалансировать временную сложность бинарного дерева;
5) Когда использовать алгоритм хеширования и алгоритм двоичного дерева соответственно;
6) Алгоритм поиска в ширину и алгоритм поиска в глубину: подробности см. в реализации сборки мусора в jvm;
Четыре, Связанные с многопоточностью:
1) Расскажите о реализации очереди блокировки: вы можете обратиться к базовой реализации ArrayBlockingQueue (как блокировка, так и синхронизация);
2) способ взаимодействия процессов: очередь сообщений, разделяемая память, семафор, соединение через сокеты и т. д.;
3) Какие классы параллельных пакетов использовались;
4) Где используется многопоточность;
5) Какие пулы потоков могут создавать Исполнители;
6) Зачем использовать пул потоков;
7) Использование ключевого слова volatile: сделать переменные видимыми в нескольких потоках;
5. Связанные с базой данных (mysql):
1) опыт оптимизации msyql:
2) оптимизация оператора mysql, какие инструменты использовать;
3) классификация индекса mysql: B+, hash, какой индекс использовать в той или иной ситуации;
4) Какие есть механизмы хранения mysql и в чем отличия;
5) Расскажите о характеристиках и уровне изоляции транзакции;
6) Как понять разницу между пессимистичной блокировкой и оптимистичной блокировкой;
6. кв.м.:
1) Каков принцип mq: немного великоват. . можно сказать;
2) Как mq обеспечивает производительность в реальном времени;
3) Как делается постоянство mq;
7. Связанный с Nosql (в основном Redis):
1) Разница между redis и memcache;
2) Что вы сделали с Redis?
3) Насколько устойчив Redis: rdb и aof;
4) Как синхронизировать кластер Redis;
5) Каков процесс добавления данных в redis: хэш-слот;
6) Каковы стратегии устранения Redis;
7) Какие структуры данных есть у Redis;
8. смотритель зоопарка:
1) Что такое зоопарк;
2) Где используется зоопарк;
3) Процесс выбора смотрителя зоопарка;
4) Как общаться между кластерами зоопарка;
5) Какой метод используется для шифрования узла вашего zookeeper;
6) процесс реализации распределенной блокировки;
9. Связанные с Linux:
1) Какие команды обычно используются в Linux?
2) Как получить pid процесса java;
3) Как получить номер сетевого порта процесса;
4) Как печатать логи в реальном времени;
5) Как посчитать количество строк определенной строки;
10. Дизайн и мысль:
1) Вы сделали рефакторинг кода? говорить об опыте
2) Как добиться ранжирования 10 миллионов пользователей в реальном времени;
3) Как добиться того, чтобы 50 000 человек одновременно получали билеты;
У меня есть общедоступная учетная запись WeChat, и я часто делюсь галантерейными товарами, связанными с технологией Java; если вам нравится мой обмен, вы можете использовать WeChat для поиска «Java Head» или «javatuanzhang», чтобы подписаться.