Java Intermediate и Advanced Вопросы для собеседования

интервью Java задняя часть
Java Intermediate и Advanced Вопросы для собеседования

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», чтобы подписаться.