ByteDance интервью
1. Как проверить состояние памяти текущего процесса и использовать отдел ресурсов в linux
команда top, команда ps. Нажмите M после верхней части, чтобы отсортировать по использованию памяти, и нажмите P, чтобы отсортировать по использованию процессора.
ps -ef |grep java, отображает ресурсы, занятые java-процессом. PS-доп.
2. Как общаться между процессами
- Труба (труба): Канал — это полудуплексный метод связи.Данные могут передаваться только в одном направлении и могут использоваться только между связанными процессами. Сродство процесса обычно относится к отношениям процесса родитель-потомок.
- Именованный канал (namedpipe): Именованный канал также является полудуплексным методом связи, но позволяет обмениваться данными между несвязанными процессами.
- Семафор (семафор): Семафор — это счетчик, который можно использовать для управления доступом к общему ресурсу несколькими процессами. Он часто используется в качестве механизма блокировки для предотвращения доступа других процессов к общему ресурсу, в то время как процесс обращается к ресурсу. Поэтому он в основном используется как метод синхронизации между процессами и между разными потоками в одном процессе.
- Очередь сообщений ( messagequeue ): Очередь сообщений — это связанный список сообщений, хранящийся в ядре и определяемый идентификатором очереди сообщений. Очередь сообщений преодолевает недостатки меньшего количества информации в сигнализации, каналы могут передавать только неформатированные потоки байтов и ограниченный размер буфера.
- Сигнал (синус): Сигнал — это относительно сложный метод связи, используемый для уведомления принимающего процесса о том, что произошло событие.
- Общая память (общая память): Общая память предназначена для отображения части памяти, к которой могут получить доступ другие процессы.Эта общая память создается одним процессом, но может быть доступна нескольким процессам. Общая память — это самый быстрый способ IPC, и он разработан с учетом неэффективности других методов межпроцессного взаимодействия. Он часто используется в сочетании с другими механизмами связи, такими как сигнал два, для достижения синхронизации и связи между процессами.
- Розетка (розетка): Сокет также является механизмом межпроцессного взаимодействия и, в отличие от других механизмов взаимодействия, может использоваться для различных устройств и межпроцессного взаимодействия.
3. Расскажите о процессе MCV
4. Расскажите о сервлете и gci
Суть сервлета — это Java-программа, работающая на стороне сервера, которая может генерировать динамический веб-контент. tomcat — это контейнер для запуска сервлета и jsp. Севлет является одноэлементным. Метод init будет инициализирован при первом вызове. При каждом вызове сервер будет создавать новый поток для выполнения служебного метода сервлета. Поэтому, если данные сервлет должен быть синхронизирован, если данные не нужно синхронизировать, вы можете определить данные внутри метода службы как локальную переменную. Gci — это общедоступный интерфейс шлюза, который генерирует новый процесс для каждого запроса и уничтожает его после завершения службы, поэтому эффективность выполнения не так хороша, как у многопоточных сервлетов.
5. Сходства и различия между абстрактными классами и интерфейсами и соответствующими применимыми сценариями.
Ни абстрактные классы, ни интерфейсы не могут быть созданы. До JDK1.8 абстрактные классы могли иметь неабстрактные методы и реализации по умолчанию, но интерфейсы не могли иметь реализации по умолчанию. Интерфейсы можно только реализовать, абстрактные классы можно наследовать. Java поддерживает только одиночное наследование. Если вы наследуете абстрактный класс, вы не можете наследовать другие классы. Если вы реализуете интерфейс, вы можете реализовать другие интерфейсы или наследовать другие классы.
Использование: Когда функциональность должна быть накоплена, используйте абстрактные классы. Когда накопление не требуется, используйте интерфейс. Интерфейс обычно используется для реализации более часто используемых функций, что удобно для дальнейшего обслуживания или добавления и удаления методов. Абстрактный класс больше склонен выступать в роли публичного класса, повторно модифицировать код внутри не удобно.
6. Существует несколько уровней OSI и какие протоколы используются на каждом уровне.
Архитектура OSI, что означает взаимодействие открытых систем. Всего 7 этажей. Это физический уровень, уровень канала передачи данных, сетевой уровень, транспортный уровень, сеансовый уровень, уровень представления и прикладной уровень. Второй уровень канала передачи данных использует протокол Ethernet. Протоколы, используемые четвертым транспортным уровнем, — это TCP (протокол, ориентированный на надежное соединение) и UDP (протокол, не требующий установления надежного соединения). Протоколы, используемые на уровне приложений седьмого уровня, включают HTTP, FTP, SMTP, DNS, Telnet и SNMP.
7. Классификация общих кодов состояния. Подробно спросил, что означают 502 и 504.
Информация в начале, сервер получает запрос, а запросчику необходимо продолжить выполнение операции. 400 Bad Request Клиент запросил синтаксическую ошибку, которую сервер не может понять. 401 Неавторизованный не аутентифицирован. 500 Внутренняя ошибка сервера. 501 Сервер не поддерживает запрошенную функцию и не может выполнить запрос. 502Bad Gateway означает неверный шлюз или плохой шлюз. 503Сервис недоступен Сервер занят. 504Gateway Time-ou Время ожидания шлюза истекло, и он не получил вовремя запрос от вышестоящего сервера. 505 Версия HTTP не поддерживается Сервер не поддерживает запрошенную версию протокола HTTP и не может завершить обработку.
8. Какую информацию обычно содержит заголовок запроса?
HTTP-запрос состоит из трех частей. Строка запроса, заголовок запроса, тело запроса. Строка запроса содержит метод запроса, имя ресурса запроса и номер версии протокола HTTP. Обычно существует 7 типов методов запроса. ПОЛУЧИТЬ, ПОСТАВИТЬ, ПОСТАВИТЬ, УДАЛИТЬ, СЛЕДИТЬ, ВАРИАНТЫ, ГОЛОВА. Обычно используются GET и POST, где запрос GET будет содержать параметры запроса за URL-адресом (размер ограничен 1 КБ), а параметры запроса POST находятся в теле запроса, и ограничений по размеру нет.
Обычно используемые ключи в заголовке запроса: HOST, COOKIE, Refer (с какой страницы можно предотвратить хотлинкинг), User-Agent (ядро браузера), Accept, Accept-charset, кодировка, язык.
9. Как реализовать механизм JWT (как реализовать аутентификацию, какие части входят в токен, как шифровать и расшифровывать)
10. Расскажите о памяти времени выполнения JVM
11. Расскажите о сборке мусора JVM (алгоритмы секционирования и генерации)
Раздел: молодое поколение, старое поколение, постоянное поколение. Молодое поколение разделено на три зоны. Район Эдема, выживший из района, выживший в район. Алгоритм GC, алгоритм репликации. Потому что скорость GC высока, около 80%....
12. Поговорите о роли счетчиков программ в потоке
Его можно использовать как индикатор номера строки байт-кода, выполняемого текущим потоком. Ветви, циклы, переходы, обработка исключений и восстановление потока — все они должны полагаться на этот счетчик. Программа управления выполняет ветвь перехода. После переключения потока правильное положение выполнения может быть восстановлено.
13. Расскажите о трех основных компонентах сети (фильтр, прослушиватель, перехватчик) и их функциях.
Фильтр предварительно обрабатывает запрос пользователя, затем передает запрос сервлету для обработки и генерирует ответ, и, наконец, фильтр выполняет постобработку ответа сервера. Фильтры — это повторно используемые фрагменты кода, которые обычно используются для преобразования HTTP-запросов, ответов и заголовков. В отличие от сервлета, фильтр не может генерировать ответ, а только модифицирует запрос или ответ на ресурс. Функция обратного вызова
Прослушиватель может прослушивать операцию события на веб-сервере и запускать зарегистрированную функцию обратного вызова. Общий язык — это функциональный компонент, который автоматически выполняет код, когда три объекта приложения, сеанса и запроса создаются/мертвы или добавляются, удаляются или изменяются.
Перехватчик аналогичен аспекту и уведомлению в аспектно-ориентированном программировании.Мы добавляем уведомление в метод service() через динамический прокси для расширения функциональности. Например, обработка инициализации выполняется до выполнения метода, а постобработка выполняется после выполнения метода. Идея перехватчика аналогична АОП, разница в том, что перехватчик может перехватывать только HTTP-запрос контроллера. На основе динамического прокси
14. Расскажите о структуре данных Redis, о том, как ее развернуть и использовать.
Пять часто используемых структур данных. строка, список, хэш, набор, отсортированный набор.
15. Разница между TCP и UDP, сценарии применения UDP
TCP — это надежный протокол, ориентированный на соединение. UDP — это протокол, ориентированный на передачу сообщений без установления соединения. Эффективность передачи TC будет ниже, чем UDP. Транспорт TCP обычно должен обеспечивать точность, например, почта. UDP обычно используется для мгновенной связи. Для прямой трансляции, голоса QQ, видео WeChat.
16. Классификация потоков ввода-вывода и общие сценарии применения символьных и байтовых потоков.
Если это аудиофайл, картинка, песня, то лучше использовать байтовый поток, Если это связано с китайским языком (текст), лучше использовать поток символов
17. Какие есть методы запроса, разница между GET и POST запросами
18, инструкции для Linux
df показать информацию о диске
du показывает размер каталога или файла