Оригинальный адрес:Блог Лян Гуйчжао
адрес блога:blog.720ui.com
Здесь, основываясь на моем прошлом опыте интервью, автор составил некоторые списки основных знаний, чтобы помочь читателям лучше изучить и изучить основные технологии сервера Java. В этой статье основное внимание будет уделено выявлению вопросов. Если позже будет время, автор последовательно выделит некоторые важные точки знаний для подробного анализа и ответов. Пожалуйста, обратите внимание на общедоступный аккаунт WeChat «Server Thinking», чтобы быть в курсе последних статей.
Основы
основные навыки
- Объектно-ориентированные функции
- Разница между final, finalize, finalize
- В чем разница между int и Integer
- Разница между перегрузкой и переопределением
- В чем разница между абстрактным классом и интерфейсом
- Расскажите об использовании и реализации отражения
- Расскажите о сцене и реализации пользовательских аннотаций
- Разница между GET и POST в HTTP-запросах
- Разница между сеансом и файлом cookie
- распределенная обработка сеанса
- JDBC-процесс
- Дизайнерское мышление MVC
- Разница между равными и ==
собирать
- Разница между списком и набором
- Разница между списком и картой
- Разница между Arraylist и LinkedList
- Разница между ArrayList и Vector
- Разница между HashMap и Hashtable
- Разница между HashSet и HashMap
- Разница между HashMap и ConcurrentHashMap
- Принцип работы и реализация кода HashMap
- Принцип работы и кодовая реализация ConcurrentHashMap
нить
- Как создать поток и его реализация
- В чем разница между sleep(), join(), yield()
- Разговор о принципе CountDownLatch
- Расскажите о принципе CyclicBarrier
- Расскажите о принципе семафора.
- Разговор о принципе Exchanger
- Разговор о разнице между CountDownLatch и CyclicBarrier
- Анализ принципа ThreadLocal
- Расскажите о принципе реализации пула потоков
- Несколько способов пула потоков
- жизненный цикл нити
замок механизм
- Разговор о безопасности потоков
- изменчивый принцип реализации
- принцип реализации синхронизации
- Разница между синхронизацией и блокировкой
- Оптимистическая блокировка CAS
- АВА-проблема
- Бизнес-сценарии и методы реализации оптимистической блокировки
Основные статьи
хранилище данных
- Примечания по использованию индексов MySQL
- Разговор о дизайне против шаблонов
- Разговор о дизайне подбиблиотеки и подтаблицы
- Распределенная дилемма и контрмеры, вызванные подбазой данных и подтаблицей
- Разговор об оптимизации SQL
- Проблема взаимоблокировки, с которой столкнулся MySQL
- InnoDB и MyISAM для механизмов хранения
- Принцип индексации базы данных
- Зачем использовать B-дерево
- Разница между кластеризованным индексом и некластеризованным индексом
- лимит 20000 загрузка очень медленная как решить
- Выбор подходящей схемы распределенного первичного ключа
- Выберите правильное решение для хранения данных
- Правила ObjectId
- Расскажите о сценариях использования MongoDB
- Перевернутый индекс
- Расскажите о сценариях использования ElasticSearch
использование кеша
- Какие бывают типы Redis
- Внутренняя структура Redis
- Расскажите о сценариях использования Redis
- Механизм сохранения Redis
- Как Redis реализует постоянство
- Схема и реализация кластера Redis
- Почему Redis однопоточный?
- сбой кеша
- Деградация кэша
- Разумность использования кеша
очередь сообщений
- Сценарии использования очередей сообщений
- Решение для компенсации повторной передачи сообщений
- Идемпотентное решение сообщений
- решение для стека сообщений
- Как реализовать очередь сообщений самостоятельно
- Как обеспечить порядок сообщений
Рамочные статьи
Spring
- В чем разница между BeanFactory и ApplicationContext
- Жизненный цикл Spring Bean
- Как реализован Spring IOC
- Разговор о весеннем АОП
- Принцип реализации Spring АОП
- Динамические прокси (cglib и JDK)
- Реализация весенней транзакции
- Основной принцип транзакции Spring
- Как настроить функцию реализации аннотации
- Рабочий процесс Spring MVC
- Процесс запуска Spring MVC
- Принцип реализации синглтона Spring
- Какие шаблоны проектирования используются в среде Spring
- Другие продукты Spring (Srping Boot, Spring Cloud, Spring Security, Spring Data, Spring AMQP и т. д.)
Netty
- Почему выбирают Нетти
- Расскажите о сценариях использования Netty в бизнесе
- Нативный NIO имеет ошибку epoll в JDK 1.7.
- Что такое склеивание/распаковка TCP
- Решение проблемы склеивания/распаковки TCP
- Модель потоков Netty
- Разговор о нулевой копии Нетти
- Внутренний процесс выполнения Netty
- Реализация переподключения Netty
Микросервисы
Микросервисы
- Как разделить переднюю и заднюю части
- Какие фреймворки являются микросервисами
- Как вы понимаете структуру RPC
- Расскажите о принципе реализации RPC
- Расскажите о принципе реализации Dubbo
- Как вы понимаете RESTful
- Расскажите о том, как разработать хороший API
- Как понять идемпотентность RESTful API
- Как обеспечить идемпотентность интерфейсов
- Разговор о теореме CAP и теории BASE
- Как учитывать согласованность данных
- Разговор о реализации возможной согласованности
- Что вы думаете о микросервисах
- Разница между микросервисами и SOA
- Как разделить услуги
- Как микросервисы управляют базами данных
- Как бороться с исключениями из цепочек вызовов микросервисов
- Для быстрого отслеживания и обнаружения проблем
- Безопасность для микросервисов
распределенный
- Расскажите об использовании распределенных сценариев в бизнесе
- Распределенное решение сеанса
- Сценарий распределенной блокировки
- Дистрибутив — это реализация блокировок
- Распределенная транзакция
- Алгоритмы и реализации кластеризации и балансировки нагрузки
- Разговор о дизайне подбиблиотеки и подтаблицы
- Распределенная дилемма и контрмеры, вызванные подбазой данных и подтаблицей
Контрольный вопрос
- Элементы безопасности и угроза STRIDE
- Защита от распространенных веб-атак
- Атака и защита безопасности связи с сервером
- Анализ принципа HTTPS
- Атака с понижением HTTPS
- Авторизация и аутентификация
- управление доступом на основе ролей
- Управление доступом на основе данных
оптимизация производительности
- Каковы показатели эффективности
- Как обнаружить узкие места в производительности
- Общие средства настройки производительности
- Расскажите о том, как вы выполняете настройку производительности в своем проекте.
Инжиниринг
анализ спроса
- Как вы понимаете и разделяете прототипы требований
- Расскажите о своем понимании функциональных требований
- Расскажите о своем понимании нефункциональных требований
- Какие взаимодействия и улучшения вы предлагаете для продукта?
- Как вы понимаете болевые точки пользователей
Способность к проектированию
- Расскажите нам о диаграммах UML, которые вы использовали в своем проекте.
- Как вы относитесь к компонентизации
- Как вы относитесь к сервитизации?
- Как вы занимаетесь моделированием предметной области
- Как вы рисуете границы домена
- Расскажите о моделировании предметной области в вашем проекте
- Разговор об эскизном дизайне
Шаблоны проектирования
- Какие шаблоны проектирования используются в вашем проекте
- Расскажите об анализе использования шаблонов проектирования в распространенных фреймворках с открытым исходным кодом.
- Расскажите нам о своем понимании принципов дизайна
- 23 шаблона дизайна Идеи дизайна
- Сходства и различия между шаблонами проектирования, такие как разница между шаблоном стратегии и шаблоном состояния.
- Комбинация между шаблонами проектирования, такими как практика шаблона стратегии + простой шаблон factory
- Производительность шаблонов проектирования, таких как одноэлементный шаблон, который работает лучше.
бизнес инжиниринг
- Как работает разделение интерфейса в вашей системе?
- Расскажите о своем процессе разработки
- Как вы общаетесь со своей командой
- Как вы проводите код-ревью
- Расскажите нам о своем понимании технологий и бизнеса
- Расскажите об исключении, с которым вы часто сталкиваетесь в своем проекте.
- Расскажите о самом сложном баге, с которым вы столкнулись в проекте, и как его решить
- Расскажите о трудностях, с которыми вы чаще всего сталкивались в проекте, и о том, как вы их решили
- Как вы считаете, в чем недостатки вашего проекта?
- Вы когда-нибудь сталкивались с CPU 100%, как устранить неполадки и решить
- Сталкивались ли вы с OOM памяти, как устранить неполадки и решить их
- Расскажите о своей практике гибкой разработки
- Расскажите о своей практике DevOps
- Расскажите об одном из самых ценных проектов в вашей работе и о своей роли в этом процессе.
мягкая сила
- Расскажите мне о своих основных моментах
- Скажи мне, какую книгу ты недавно читал
- Расскажите мне о технических книгах, которые вы считаете наиболее значимыми
- что делать после работы
- Обсудить направление личного развития
- Расскажите нам, какими навыками, по вашему мнению, должен обладать разработчик сервера
- Расскажите нам, что вы думаете об архитекторе и чем в основном занимается архитектор
- Расскажите о техническом эксперте, которого вы понимаете
(Заканчивать)
Другие интересные статьи можно найти в общедоступном аккаунте WeChat «Server Thinking»!