1. Процесс выполнения сервлета
Клиент выдает HTTP -запрос, и веб -сервер пересылает запрос в контейнер сервлета. Контейнер сервлета анализирует URL и находит соответствующий сервлет на основе web.xml, и передает объекты запроса и ответа на найденный сервлет. Сервлет может знать, кто выпустил запрос, информацию запроса и другую информацию на основе запроса. После того, как сервлет обработал бизнес -логику, он внесет информацию в ответ и ответит на клиента.
2. Процесс выполнения SpringMVC
SpringMVC - это иерархическая структура управления с DispatchServlet в качестве ядра. Во -первых, клиент выдает запрос на веб -сервер для анализа URL -адреса запроса и сопоставления URL -адреса отображения диспетчерского состава. Если он соответствует, поместите этот запрос в DispatchServlet. DispatchServlet ищет соответствующую ручку в соответствии с конфигурацией отображения отображения, а затем передает права на обработку на найденный ручку. Ручка инкапсулирует код для обработки бизнес -логики. После того, как ручка будет обработана, он вернет логический вид модели модели в диспетчер. В настоящее время ModelView является логическим представлением, а не официальным представлением, поэтому DispatchServlet будет анализировать модель через ресурс ViewResource View, а затем вставит параметры, проведенные в представление, вернуться к клиенту и отобразить его.
3. Учитывая файл TXT, как получить количество раз, когда появляется определенная строка.
File file = new File ("e: //test.txt"); inputstream IS = new FileInputStream (file); byte b [] = new Byte [1024]; int a = is.read (b); string str [] = new String (b, 0, a) .plit (""); int = 0; for (int i =. 0; i <str.length; i ++) {if ("a" .equals (str [i])) count ++;} system.out.println (count); 4. Идея модели дизайна Java (режим одноконкурентного режима, заводский режим, режим стратегии, всего 23 режима проектирования)
A) Режим Singleton: ядро режима Singleton требует только нового объекта Encement Encement, например, подключения к базе данных, количество онлайн -людей и т. Д. Статистика онлайн -номеров, показанная на некоторых веб -сайтах, реализована через режим Singleton, который хранит таймер в базе данных или памяти. Когда кто -то входит в систему, добавляет его и возвращает снова и снова. Когда кто -то выходит из выхода, выньте его и вычитает его снова и снова. Однако, когда два человека входят в систему одновременно, они одновременно доставят счетчик, добавит один одновременно и одновременно отложите его обратно. Таким образом, данные будут неправильными. Поэтому для всех людей необходим объект глобальной переменной, и необходим только один объект экземпляра. Это применение режима Singleton, и Singleton Mode сохраняет ресурсы, поскольку он управляет количеством объектов экземпляра и способствует переработке GC.
б) шаблон политики: он должен извлечь общие методы в несколько классов в новый класс, чтобы его можно было проще расширяться, обеспечить переносимость кода и обслуживаемость. Например, существует требование писать утиные объекты, которые вызываются, летают и внешний вид. Если каждый класс утки напишет эти три метода, код будет избыточным. В настоящее время мы можем извлечь три метода, называемые, летать и внешний вид в классе утки, и поместить их в родительский класс утки, чтобы каждая утка наследивала родительский класс утки и переписывает эти три метода. Таким образом, инкапсулированный код очень портативный. Когда пользователь предлагает новые требования, такие как утка, может плавать, это очень просто для программистов. Нам нужно только добавить метод плавания в родительский класс утки и позволить плавальной утке переписать метод плавания.
c) Фабричный режим: простой заводской режим в основном предоставляет ссылки на объекты экземпляра единым образом и получает ссылки на объекты экземпляра через интерфейс заводского режима. Например, для функции входа в систему бэкэнд имеет три класса, класс контроллера, класс интерфейса и класс реализации интерфейса реализации. Когда клиент выдает запрос, когда запрос передается в класс контроллера, контроллер получает эталонный объект интерфейса, а класс реализации реализует интерфейс инкапсулирует код логики входа в систему. Когда вам нужно добавить требование о регистрации, вам нужно только добавить метод регистрации в класс интерфейса, реализовать метод в классе реализации, и контроллер может получить эталонный объект интерфейса без изменения исходного кода. Этот подход очень масштабируемый.
5. Сортировка пузырьков, двоичный поиск
а) пузырь
public static void mp (int a []) {int swap = 0; for (int i = 0; i <a.length; i ++) {for (int j = i; j <a.length; j ++) {if (a [j]> a [i]) {swap = a [i]; a [i] = a [j]; Swap;}}} System.out.println (Arrays.toString (a));}б) бинарный поиск
public static int ef(int a[], int tag) {int first = 0;int end = a.length;for (int i = 0; i < a.length; i++) {int middle = (first + end) / 2;if (tag == a[middle]) {return middle;}if (tag > a[middle]) {first = middle + 1;}if (tag < a[middle]) {end = middle - 1;}}return 0;} 6-8. Понимание Аякса
а) Ajax - это асинхронная запрос, то есть локальная технология обновления. На традиционных страницах пользователи должны нажимать на кнопки или события, чтобы запустить запросы, чтобы обновить страницы. Асинхронная технология запускает события без щелчка, что улучшает пользовательский опыт, такой как асинхронная загрузка корзин для покупок в торговом центре, когда вы нажимаете на продукт, вам не нужно запросить фон и динамически изменять параметры.
9. Порядок вызова между родительским классом и классом ребенка (результат печати)
а) Статический кодовый блок родительского класса
б) Статический кодовый блок подкласса
в) конструктор родительского класса
г) метод строительства подкласса
д) Подкласс обычный метод
f) Перепишите метод родительского класса и распечатайте метод переписывания
10. Вызовы внутренних и внешних классов
а) Внутренний класс может напрямую вызвать переменные элемента внешнего класса, включая частного, и использовать это. Ключевое слово, на которое ссылается внешний класс, чтобы назвать его
б) Когда внешний класс вызывает внутренний класс, он должен создать внутренний объект класса
11. Многопользовательский
а) Процесс - это независимая работающая среда, которую можно рассматривать как программу, в то время как поток может рассматриваться как задача процесса. Например, QQ - это процесс, а окно QQ - это поток.
б) В многопоточной программе многопоточное параллелизм может повысить эффективность программы. ЦП не будет входить в состояние холостого хода, потому что определенный поток ждет ресурсов. Это даст ресурсы другим темам.
C) Пользовательский поток - это поток, который мы разрабатываем программу, а поток Daemon - это системный поток, такой как GC в JVM Virtual
D) Приоритет потока: каждый поток имеет приоритетный уровень. Те, у кого высокий конечный уровень, могут сначала получить ресурсы процессора, чтобы изменить поток от состояния готового к управлению состоянием. Вы также можете настроить ограниченный уровень потоков
e) тупик: по крайней мере два или более потоков стремятся к более чем двум ресурсам процессора, избегайте использования вложенных замков, если они избегают тупиков. Вам нужно только добавить замки там, где им нужно синхронизировать и избежать бесконечного ожидания.
12. Концепция AOP и IOC (то есть ядро пружины)
А) МОК: пружина - это структура с открытым исходным кодом. Использование фреймворков может снизить нашу рабочую нагрузку и повысить эффективность нашей работы. Это иерархическая структура, то есть соответствующие слои обрабатывают соответствующую бизнес -логику и уменьшают степень связи кода. Ядро пружины-контрольная инверсия IOC и AOP-ориентированное тангенциальное программирование. Инверсия управления МОК в основном подчеркивает, что взаимосвязь между программами контролируется контейнерами, которые управляют объектами и управляют приобретением внешних ресурсов. Инверсия означает, что в традиционном программировании мы создаем объекты для получения зависимостей, в то время как в МОК контейнер помогает нам создавать объекты и вводить зависимые объекты. Это контейнер помогает нам найти и вводить объекты. Объект получен, поэтому он называется инверсией.
б) AOP: ориентированное программирование, в основном управляет бизнесом на системном уровне, таком как журналы, разрешения, вещи и т. Д. AOP - это разрезание инкапсулированных объектов, выяснить общее поведение, которое влияет на несколько объектов, и инкапсулирует их в повторный модуль. Этот модуль называется аспектом. Раздел извлекает и инкапсулирует логику, которая не связана с бизнес -логикой, но называется совместно бизнес -модулями, снижая дубликат в системе, уменьшает связь между модулями и улучшение обслуживания системы.
13. Основная идея Hibernate
а) Основная идея Hibernate - механизм сопоставления объектов ROM. Это отображение между таблицами в операции между объектами. То есть информация, извлеченная из базы данных, будет автоматически инкапсулирована в определенные объекты в соответствии с установленными вами требованиями отображения. Следовательно, Hibernate предназначен для изменения объекта, соответствующего строке данных путем отображения класса предприятия таблицы данных.
14. Разница между Struts1 и Struts2
15. Оптимальное удаление символа в строке
16-17. Разница между ArrayList и LinkedList
а) Все списки, которые реализуют интерфейс списка. ArrayList-это структура данных на основе массива, а LinkedList-это связанная структура данных списка. При получении определенных элементов ArrayList является относительно быстрым. Это может быть получено с помощью абонентов массива, в то время как LinkedList требует перемещения указателя. При хранении элементов и удаления элементов LinkedList более эффективен. Вам нужно только переместить указатель в указанную позицию, чтобы добавить или удалить его, в то время как ArrayList требует перемещения данных.
18. Оптимизация базы данных
а) Выберите подходящее поле, например, в поле почтовых ящиков, вы можете установить его в Char (6) и попытаться установить поле Notnull, чтобы база данных не нужно сравнивать нулевое значение при запросе
б) Используйте левое соединение на запросе вместо подразделения
C) Используйте совместный запрос Union для создания временных таблиц вручную
г) включить вещи. Когда в базе данных будет выполнено несколько операторов, все будет отказываться, что может поддерживать целостность базы данных.
e) Используя иностранные ключи, вещи могут поддерживать целостность данных, но это не может гарантировать корреляцию данных. Использование иностранных ключей может обеспечить корреляцию данных
f) Используя индексы, индексация является распространенным методом для повышения производительности базы данных. Это позволяет серверу баз данных получать определенные строки намного быстрее, чем без индексов, особенно для максимума, min, порядок по запросу, эффект более очевиден
g) Оптимизированные операторы запроса. В большинстве случаев использование индексов может улучшить скорость запроса, но если оператор SQL используется ненадлежащим образом, индекс не может играть его характеристики.
19. Оптимизация сервера Tomcat (память, количество параллельных соединений, кэш)
A) Оптимизация памяти: в основном оптимизирует параметры запуска Tomcat. Мы можем изменить его максимальную память в сценарии запуска Tomcat и т. Д.
б) Оптимизация количества потоков: параллельные параллельные параметры подключения Tomcat в основном настроены в Server.xml в файле конфигурации Tomcat, например, изменение минимального количества потоков подключения к холостовым условиям, которые используются для повышения производительности обработки системы и т. Д.
C) Оптимизировать кэш: включите функцию сжатия и измените параметры. Например, размер сжатого выходного контента по умолчанию составляет 2 КБ, и его можно изменить соответствующим образом.
20. HTTP Protocol
а) Обычно используемые методы запроса включают Get и Post
б) Разница между GET и POST: передача данных, PETARE PAMERETS и адрес доступа, и пользователи могут увидеть его. Это будет небезопасно и приведет к утечке информации. POST ENCAPSELUGE FIELDS и соответствующие значения в объекте для передачи, что невидимо для пользователя. Существуют ограничения на прохождение параметров GET, в то время как нет никаких ограничений на пост.
21. Протокол TCP/UDP
22. Каковы основные интерфейсы класса Java Collection Framework
A) Интерфейс сбора, список и установить реализацию Интерфейса коллекции, ArrayList и LinkedList, векторный интерфейс списка реализации, вектор наследника стека, интерфейс карты, хэш -атлети и интерфейс реализации HashMap
23. Процесс загрузки класса
а) При встрече с новым классом вы сначала перейдете в область метода, чтобы найти файл класса. Если это не найдено, вы перейдете на жесткий диск, чтобы найти файл класса. Найдя его, вы вернете его и загрузите файл класса в область метода. Когда класс загружен, переменная статического элемента будет назначена на статическую область области метода. Нестатическая переменная элемента будет назначена в нестатическую область. Затем вы начнете инициализацию статической переменной элемента и назначают значение по умолчанию. После назначения значения по умолчанию значение отображения будет назначено в соответствии с местоположением, записанной переменной статической члена, а затем будет выполнен статический код. Загрузка класса завершается только при выполнении всего статического кода.
24. Создание объекта
а) Когда встречается новый класс, будет загружен класс, а файл класса будет расположен
б) Инициализировать все статические переменные элемента, также будут выполнены статические блоки кода, и они будут выполнены только один раз при загрузке класса.
в) Когда новый объект, JVM распределяет достаточно большое место для хранения в куче
D) Очистить пространство хранения, присвоить значения по умолчанию всем переменным и назначить все ссылки на объекты на NULL
e) Дайте поле некоторые операции инициализации в соответствии с позицией письма
f) Вызов метода конструктора (без наследования)
25. Оптимизация JVM
а) Установите параметры и установите максимальное количество памяти JVM
б) выбор коллекционера мусора
26. Высокая обработка параллелистики
а) Поймите некоторые проблемы с высокой параллелизмом, например, как обеспечить, чтобы каждый мог видеть билет, не покупая его. Очевидно, что механизм синхронизации не может быть использован, поскольку синхронизация заблокирована, а синхронизация может выполняться только одним человеком за раз. В настоящее время можно использовать механизм блокировки, и использование оптимистичной блокировки может решить эту проблему. Простое значение оптимистичной блокировки состоит в том, чтобы использовать бизнес -контроль для решения проблемы параллелизма без блокировки таблицы, что обеспечивает читаемость данных и исключительность сохраненных данных, обеспечивая производительность при решении задачи данных грязных данных чтения, вызванной параллельностью.
27. Понимание вещей
а) Вещи атомны, последовательны, настойчивы и изолированы
б) Атомность: относится к откату обратно в вещь либо все, что все исполнения успешны, либо все терпит неудачу.
в) согласованность: вещи находятся в последовательности до и после исполнения
г) Постоянство: операция нескольких данных в вещах является постоянной
e) Изоляция: когда одна вещь работает на данных, другая вещь не может работать на данных, то есть несколько одновременных вещей изолированы друг от друга.
28. Рабочий процесс стойки
а) Клиент выдает запрос в контейнер сервлета
b) Запрос вызывается фильтром FilterDispatcher после некоторой фильтрации столбца, а FilterDispatch ищет соответствующее действие через ActionMapper.
c) ActionMapper находит соответствующее действие и возвращает его в FilterDispatch, а Dispatch дает права на обработку на ActionProxy
D) ActionProxy находит соответствующий класс действий через файл конфигурации
e) ActionProxy создает экземпляр ActionIinvocation для обработки бизнес -логики
f) Как только действие будет обработано, ActionInvocation отвечает за поиск соответствующего результата возврата в соответствии с конфигурацией stuts.xml. Результатом обычно является страница JSP.