Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на вопросы по дги.docx
Скачиваний:
3
Добавлен:
22.09.2019
Размер:
852.72 Кб
Скачать
  • Отличия компилируемого от интерпретируемого языка. Каким является язык Java?

Программа на компилируемом языке при помощи компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполнимый модуль, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.

Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера — это интерпретатор машинного кода.

Кратко говоря, компилятор переводит исходный текст программы на машинный язык сразу и целиком, создавая при этом отдельную исполняемую программу, а интерпретатор выполняет исходный текст прямо во время исполнения программы.

Является и тем и тем.

  • Различия между апплетом, сервлетом, оконным приложением, консольной программой.

Апплеты — это программы, которые, как правило, предназначены для того, чтобы загружаться посредством браузера, а затем работать в окне браузера.

Сервлеты — программы на Java, которые работают на Web-серверах Java или серверах приложений Java.

Оконное приложение –

Консольная программа - разновидность интерфейса пользователя, использующая при вводе-выводе.

  • Объяснить переносимость программ на основе JVM.

JVM— основная часть исполняющей системы Java. JVM интерпретирует и исполняет Байт-код Java. JVM может также использоваться для выполнения программ, написанных на других языках программирования. Например, исходный код на языке Ada может быть откомпилирован в байт-код Java, который затем может выполниться с помощью JVM.

  • Объяснить каждое слово и символ в программе:

Объяснить каждое слово и символ в программе: class First // создание нового класса

{

public static void main (String [] args)

//public означает, что метод main виден и доступен любому классу

// static, могут непосредственно работать только с локальными и статическими переменными

//void выводит на экран строку

//main для запуска класса

//String args[] объявляет параметр с именем args, который является массивом объектов — представителей класса String

{

System.out.println (“Hello!”);

}

}

  • Что такое идентификаторы, их виды. Привести примеры.

Идентификаторы используются в Java в качестве имен переменных, классов и методов. Они могут начинаться с латинской буквы, символа «$» или символа «_»

_book

new_look

go_home

Russial

  • Какими бывают комментарии в Java.

Комментарии служат для разъяснения кода.

А) Многострочный комментарий.

/* Комментарий */

Б) Однострочный комментарий.

// Комментарий

В) Многострочный тип комментариев для документирования кода:

/** код

Комментарий */

  • Какие бывают типы данных? Как каждый тип хранится в памяти?

Значения базовых типов данных размещаются в стековой памяти (stack). Для каждого базового типа имеются классы-оболочки, которые инкапсулируют данные базовых типов в объекты, располагаемые в динамической памяти (heap).

byte (8 бит), char (16 бит), int (32 бита)

  • Что такое массив? Привести 3 способа его объявления (в виде кода). Различия одномерных и двумерных массивов.

Массивупорядоченный набор данных, для хранения данных одного типа.

int[] a; int[][] d2;

a = new int[10]; a = int[3][4];

int[] mas2 = new int[3]; int[][] dd2 = int[5][];

int[] mas1 = {10,20,30}; // массив со значениями 10,20,30.

  • Что такое класс, абстрактный класс, интерфейс? Чем они различаются? Привести примеры (в виде кода).

Класс описывает содержание и поведение некой совокупности данных и действий над этими данными.

class Point {

}

Interface описывает предполагаемое поведение класса не упоминая конкретных действий.

interface A {

int getValue();

}

public class ImplementingInterface implements A

{

}

Для реализации интерфейса он должен быть указан при декларации класса с помощью ключевого слова implements.

Абстрактный класс - базовый класс, который не предполагает создания экземпляров.

abstract class Car {

}

  • Для чего нужно преобразование типов? Привести примеры нисходящего и восходящего преобразования типов.

int b=1;

byte c=(byte)-b;

int i=c;

Здесь во второй строке необходимо провести явное преобразование, чтобы присвоить значение типа int переменной типа byte. В третьей же строке обратное приведение производится автоматически, неявным для разработчика образом.

byte b=3;

int a=b;

11.Что такое переменная?

Как вы знаете, любая программа на любом языке программирования состоит из исполняемого кода и данных. Данные, в свою очередь, подразделяются на переменные и константы

Все переменные в Яве должны объявляться (декларироваться). Язык не допускает использование необъявленных переменных. Никаких "объявлений переменных по умолчанию" не допускается. Объявление переменной в Яве выглядит следующим образом: type name; где   type - один из используемых в языке типов данных.    name - название переменной. Название переменной подчиняется тем же синтаксическим правилам, что и названия классов и функций

12. Виды операторов в Java, их обозначение и принцип работы каждого из них.

13. Виды управляющих конструкций в Java. Их принцип работы. Записать шаблон кода для каждой.

if (БулевскоеВыражение) {

     Инструкции1

} else {

     Инструкции2

}

Или цикл:

for (;;) {

Инструкции

14 Для чего нужно ключевое слово this?

Специальное ключевое слово, this, которое вы можете использовать, чтобы обращаться к текущему объекту. Вообще, метод this обращается к вызывающему объекту.

}

15.Для чего нужно ключевое слово static, как используется, привести пример.

Class StaticTest{

static int i=47;

}

Ключевое слово языка программирования Java, используемое для определения переменной класса (типа). Классы обеспечивают только одну копию таких переменных, не зависимо от того, сколько экземпляров класса было создано

16.Виды модификаторов доступа в Java.

public class MyPublicClass

 Этим модификатором мы указываем, что мы можем объявлять ссылки на этот класс в любом коде

abstract class MyAbstractClass

Он позволяет объявить класс неполноценным и не предназначенным для создания его экземпляров

final class MyFinalClass

предназначен для того, чтобы запретить создание производных классов. 

17.Что такое перегруженные и переопределенные методы?

Перегрузка - возникает в случае, если имеется несколько методов с одинаковыми именами, но разными параметрами (типом или количеством) и возвращаемым типом результата

class Parent {     /*  */    public void printme (String a) {/*  */}    public void printme (int a) {/*  */} // перегружен }

Переопределение - используется при замене метода класса-родителя в классе-потомке методом с такими же параметрами и таким же типом возвращаемого результата

class Child extends Parent {     /*  */    @Override     public void printme (String a) {/*  */} // переопределен    public void printme (float a) {/*  */} // перегружен } /*  */

18,19,20 В чем суть полиморфизма?

В чем суть инкапсуляции?

В чем суть наследования?

( подробно http://generaltea.ru/inkapsulyaciya-nasledovanie-polimorfizm/ )

Инкапсуляция – возможность скрытия реализации каких либо частей модуля или объекта от внешнего мира (от клиента). Это означает, что манипулируя модификаторами доступа, можно скрыть или открыть только определенные свойства, методы или классы для того, чтобы ненужные для класса-клиента данные не были доступны

Наследование – возможность использовать общий код для всех потомков наследованных от общего родителя. При помощи наследования, можно вынести общие черты каких-то объектов и описать их в отдельном классе, а потом создать потомков от данного класса и в нем добавить свойства и методы присущие, только данному конкретному экземпляру.К примеру можно описать какой либо абстрактный автомобиль, вынеся его общие свойства (мотор, имя, марку, год выпуска) в общий класс Auto, а потом сделать наследников от него, описывающих грузовой, легковой или спортивный автомобили. Таким образом общие свойства для всех типов автомобилей придется реализовать всего лишь один раз, в классе Auto, а все наследники получат их автоматически и расширят их свойствами и методами доступными только конкретному типу автомобиля.

Полиморфизм – возможность подмены некоторых методов или свойств для задания им другого поведения.

  • Что такое конструктор, для чего нужен?

Конструктор - блок инструкций, вызываемый при создании объекта.

Аналогичен методу, но НЕ ИМЕЕТ ОПРЕДЕЛЕННОГО ТИПА возвращаемых данных, не наследуется.

Пример:

public class Example{

public Example(){ - ОН САМЫЙ!!, Имя (Example) должно совпадать с названием класса.

... ... }

}

  • Для чего нужно ключевое слово super?

Ключевое слово super() является ссылкой на базовый класс,

можно использовать в дочерних классах.

В основном используется для вызова методов родительского класса.

Пример:

public class Advice extends Thought {

public void message() {

System.out.println("Хы.");

super.message(); - АГА!!!

}

}

  • Что такое пакет? Принцип работы с пакетами.

Механизм, позволяющий организовать Java классы в пространства имен

На жидо-исаевском: «Та штучка которая тргэ, ну тргэ же.»

Ключевое слово package указывает в каком пакете должен определяться класс.

Пример:

package trg;

public class LOL{

...

}

  • Что такое AWT и Swing, в чем разница между ними?

Abstract Window Toolkit (AWT) — это исходная платформо-независимая оконная библиотека графического интерфейса. Выглядит как гавно, содержит много быдлокода.

Swing – аналогично, но выглядит чуть получше и оптимизирована.

  • Что такое контейнер? Два основных контейнера в AWT.

Контейнеры служат хранилищем для визульных компонентов интерфейса и других контейнеров. Любой компонент, требующий показа на экране, должен быть добавлен в класс-контейнер. 

Label text = new Label("Зомби Зомби Зомби");

SomeContainer.add (text); // Объект добавляется в некий контейнер

SomeContainer.Show();

Основные контейнеры: vector, enumeration, dynamic vector, stack, queue, deq, set, lists (списки).

  • Что такое компонент в AWT? Привести примеры компонентов.

Компонент - это то, что может быть помещено в интерфейс пользователя и может быть сделано видимым или изменяемым. Например: Label Textfield TextArea Buttons и тп.

  • Перечислить менеджеры макетов (layout managers) в AWT. Для чего каждый из них нужен?

FIowLayout реализует простой стиль размещения, при котором компоненты располагаются, начиная с левого верхнего угла, слева направо и сверху вниз. Если в данную строку не помещается очередной компонент, он располагается в левой позиции новой строки.

BorderLayout реализует обычный стиль размещения для окон верхнего уровня, предусмотрено четыре узких компонента фиксированной ширины по краям и одна большая область в центре, которая может расширяться и сужаться в двух направлениях, занимая все свободное пространство окна.

GridLayout размещает компоненты в простой равномерной сетке. Конструктор этого класса позволяет задавать количество строк и столбцов.

Если не ясно вот линк с картинкой http://www.dhs.net.ru/documentation/en/OREILLY/books/javaenterprise/jfc/ch02_05.htm

  • Опишите жизненный цикл апплета.

init

Этот метод вызывается браузером при конструировании апплета.

Start

Метод start сигнализирует о переходе в активное состояние.

Можно не читать:

Этот метод вызывается после инициализации апплета. Апплет может содержать какие-то динамические части. Если пользователь воспользуется какой-нибудь ссылкой и уйдет со страницы с апплетом, браузер не станет его уничтожать – ведь пользователь может вернуться.

stop

Этот метод всегда вызывается после метода start и сигнализирует о переходе в пассивное состояние.

destroy

По завершении работы апплет необходимо корректно удалить, чтобы он имел возможность освободить занимаемые ресурсы.

  • Что такое исключение? Назовите не менее 5 классов исключений в Java.

В вершине иерархии исключений стоит класс Throwable. !!! ВСЕГО ОДИН!!!

Каждый из типов исключений является подклассом класса Throwable.

trycatchthrowthrows и finally. Это модели обработки!!

Вы пытаетесь (try) выполнить блок кода, и если при этом возникает ошибка, система вызывает (throw) исключение, которое в зависимости от его типа можно перехватить (catch) или передать умалчиваемому (finally) обработчику.

Пример:

try {

// блок кода } 

catch (ТипИсключения1 е) {

// обработчик исключений типа ТипИсключения1 } 

catch (ТипИсключения2 е) {

// обработчик исключений типа ТипИсключения2

 throw(e)   // повторное возбуждение исключения } 

finally { 

}

  • Назвать модели обработки исключений и написать для каждой из них шаблон кода.

try и catch

Для задания блока программного кода, который требуется защитить от исключений, используется ключевое слово try.

Сразу же после try-блока помещается блок catch, задающий тип исключения которое вы хотите обрабатывать. 

class Exc2 {

public static void main(String args[]) { 

try {

    int d = 0;

     int a = 1488 / d;

    } 

catch (ArithmeticException e) {

System.out.println("division by zero");

}

} }

throw

Используется для возбуждения исключения «вручную». Для того, чтобы сделать это, нужно иметь объект подкласса класса Throwable.

throw ОбъектТипаThrowable;

throws

Если метод способен возбуждать исключения, которые он сам не обрабатывает, он должен объявить о таком поведении, чтобы вызывающие методы могли защитить себя от этих исключений. 

тип имя_метода(список аргументов)

throws список_исключений {

.. .

}

finally

Иногда требуется гарантировать, что определенный участок кода будет выполняться независимо от того, какие исключения были возбуждены и перехвачены. Для создания такого участка кода используется ключевое слово finally.

  • Для чего нужен блок finally { }? В некоторых случаях при обработке исключений с применением блоков try-catch имеет смысл дополнительно предусмотреть блок finally. Этот блок выполняется всегда, независимо от того, произошло исключение в процессе работы блока try или нет. Наилучшее применение для блока finally - освобождение ресурсов, заказанных программой перед возникновением исключений. Хотя система сборки мусора автоматически освобождает ненужную более оперативную память, открытые потоки, например, следует закрывать явным образом при помощи метода close.

  • Что такое поток? Отличие многозадачности от многопоточности. Поток - наименьшая единица обработки, исполнение которой может быть назначено операционной системой. Реализация потоков выполнения процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса. Многозадачность – это способность операционной системы делать несколько программ сразу. Многопоточность – это возможность программы самой быть многозадачной. Программа может быть разделена на отдельные потоки выполнения, которые, как кажется, выполняются параллельно.

  • Привести 2 варианта создания потоков. Написать шаблон кода. Расширение класса Thread

Класс Thread скрывает механизм запуска и контроля выполнения параллельного потока. Необходимо создать новый класс, который расширяет класс Thread ,а затем создать экземпляр этого класса. В расширенном классе нужно заменить метод run() класса Thread ,который является точкой входа для нового потока. Для запуска потока нужно вызвать метод start().

Реализация интерфейса Runnable

Интерфейс позволяет определить, что должен делать класс. Объявленные в нем методы не имеют тела. Назначение интерфейса - обеспечить динамический выбор метода по ходу выполнения программы.  Необходимо описать класс, который реализует интерфейс Runnable (выполняемый), а затем создать экземпляр данного класса. Интерфейс Runnable определяет только один абстрактный метод с именем run(),являющийся точкой входа потока. Позтому достаточно реализовать метод run(), внутри которого поместить операторы, которые должны выполняться в новом потоке. Далее необходимо создать экземпляр класса Thread, передав ему объект Runnable. Для поддержки интерфейса Runnable в ряд конструкторов класса Thread был введен отдельный параметр Runnable. Для запуска потока нужно вызвать метод start(). При выполнении поток будет вызывать метод run() объекта Runnable. Структура программы, запускающей два потока, созданных обоими способами, выглядит следующим образом:

 //Создание 1-го потока путем расширения класса Thread

   class One extends Thread {

 // точка входа 1-го потока

   public void run() {

  }

 }

 

 //Создание 2-го потока путем реализации интерфейса Runnable

   class Two implements Runnable {

 // точка входа 2-го потока

   public void run() {

  }

 }

 

 // запуск программы

   public class OneTwo {

   public static void main(String args[]) {

 // создание экземпляров классов

   One c = new One() ;

   Runnable r = new Two() ;

   Thread t = new Thread(r) ; // передача объекта Runnable классу Thread

 // запуск потоков

   c.start() ;

   t.start() ;

  }

 }      

  • Перечислите состояния потоков. Новый - поток создан, но еще не запущен. Исполняемый - поток запущен и готов продолжить выполнение, т.е. ему может быть выделено операционной системой процессорное время (когда процессор окажется свободным). Поток, которому выделено процессорное время, является выполняющимся (running).  Неисполняемый - в данное состояние поток переходит после наступления определенного события (ожидание завершения операции ввода/вывода, перевод в неактивный режим на определенное время методом sleep(),вызов методов wait() или suspend().Неисполняемый поток становится опять исполняемым при изменении его состояния (завершен ввод/вывод, завершен период пребывания в неактивном режиме и т.д.). В течение периода своего существования поток может неоднократно переходить из состояния исполняемый в состояние неисполняемыйПассивный - поток становится пассивным, когда он завершается. Обычно поток становится пассивным, когда завершается его метод run().Кроме того, поток может стать пассивным при вызове его методов stop() или destroy(). Пассивный поток является таковым постоянно, воскресить его невозможно.

  • Что такое Daemon-потоки? Daemon потоки или "демоны" иногда именуемые "сервисами" или "фоновыми" потоками. Эти потоки, которые нормально выполняются на низком уровне и обеспечивают базовый сервис программам, когда активность на машине ограничена. Примером демона может служить сборщик мусора. Виртуальная машина заканчивает свою работу, когда все демоны закончили свою работу, что означает, что они автоматически остановлены.  Чтобы сделать поток демоном, необходимо задать: myThread.setDaemon(true);

  • Для чего нужна синхронизация? Как она обеспечивается в Java?

Очень часто возникает ситуация, когда несколько потоков, обращающихся к некоторому общему ресурсу, начинают мешать друг другу; более того, они могут повредить этот общий ресурс. Например, когда два потока записывают информацию в файл/объект/поток. Для предотвращения такой ситуации в java может использоваться ключевое слово synchronized.

  • Что такое сборка мусора, как работает этот механизм? Виртуальная машина Java в языке Java обеспечивает освобождение неиспользуемой памяти с помощью отслеживания ссылок на выделенные ресурсы. Как только виртуальная машина Java обнаруживает, что на ресурс больше не ссылается какая-либо действительная ссылка, этот ресурс собирается в качестве мусора.

  • Для чего нужен класс String, как он используется? Привести не менее 5 методов класса. Для работы со строками в Java предусмотрен класс String. Помимо многочисленных конструкторов, позволяющих создавать строки из объектов других типов, в этом классе имеются различные методы, предназначенные для выполнения над строками самых нужных операций. С помощью этих методов можно сливать строки и выделять подстроки, преобразовывать символы строки в строчные или прописные, выполнять поиск последовательностей символов в начале, конце или в произвольном месте строки и так далее. Есть также средства для сравнения строк.

Методы:

String concat(String s) – слияние строк

int length() – определение длины строки

int indexOf(char ch) – определение позиции символа в строке

String trim() – удаление всех пробелов в начале и конце строки

static String valueOf(значение) – преобразование переменной базового типа к строке

String replace(char с1, char с2) – замена в строке всех вхождений первого символа вторым символом

  • Для чего нужны классы Math, Runtime, System? Привести несколько методов этих классов.

Библиотека классов java.lang.Math содержит константы и методы, нужные для выполнения математических вычислений.

Методы

Math.abs(n) — возвращает модуль числа n.

Math.log(n) — возвращает значение натурального логарифма числа n.

Во время исполнения приложению Java сопоставляется экземпляр класса Runtime. Этот объект позволяет взаимодействовать с окружением, в котором запущена Java-программа. Получить его можно с помощью статического метода Runtime.getRuntime()

Методы

public native void gc() – сигнализирует сборщику мусора о необходимости запуска

public void loadLibrary(String libname) – загружает библиотеку с указанным именем.

System – содержит набор полезных статических полей и методов

Методы

public static java.util.Properties getProperties() – возвращает объект java.util.Properties

public static String getProperty(String key) – возвращает значение свойства с именем key

  • Для чего нужен класс Object? Привести методы этого класса. На вершине иерархии классов находится класс Object, который является суперклассом для всех классов. Ссылочная переменная типа Object может указывать на объект любого другого класса, на любой массив, так как массивы реализуются как классы.

Методы:

protected Object clone() - Создает и возвращает копию этого объекта

protected void finalize() - Вызывается сборщиком мусора когда нет больше ссылок на объект

Class getClass() - Возвращает класс во время выполнения

int hashCode() - Возвращает hash код для объекта

void notify() - Возобновляет единичный поток, который ожидает на объектном мониторе

void notifyAll() - Возобновляет все потоки, которые ожидают на объектном мониторе

String toString() - Возвращает строковое представление объекта

void wait() - Остановка текущего потока пока другой поток не вызовет notify() или notifyAll метод для этого объекта

void wait(long timeout) - Остановка текущего потока на время или пока другой поток не вызовет notify() или notifyAll метод для этого объекта

void wait(long timeout, int nanos) - Остановка текущего потока на время или пока другой поток не вызовет notify() или notifyAll метод для этого объекта

41) Класс Calendar. Этот класс не содержит конструкторов. Есть множество констант, среди них — константы, содержащие текущую дату и время (они, соответственно, обозначаются английскими эквивалентами компонентов— например, DAY, HOUR и др.), названия месяцев (тоже по-английски), еще некоторые константы. Вот несколько методов этого класса.

• Класс Date. Имеет два конструктора: первый не имеет параметров и присваивает объекту текущую дату и время, второй устанавливает их с помощью задания в параметре количества миллисекунд, прошедших с 1.1.70. Имеет основные методы after, before, clone, getTime (возвращение миллисекунд) и setTime (установление миллисекунд).

• Класс GregorianCalendar. Расширяет класс Calendar. Нужен для установки даты и времени с учетом текущих часовым поясом и регионом.

• Класс Locale. Нужен для определения языкового региона. Содержит несколько констант с названиями различных стран, например GERMANY и ITALY. В конструкторе можно установить язык и страну. С помощью метода getDisplayCountry () можно получить название страны, а с помощью метода getDisplayLanguage () — язык.

• Класс Random. Отвечает за генерацию случайных чисел. Основные методы:

- nextBoolean — случайное значение типа boolean;

- nextDouble — то же самое для типа данных double;

- nextFloat —то же для типа данных float;

- nextInt — то же для типа данных int;

- nextLong — то же для типа данных long.

• Класс TimeZone. Этот класс позволяет установить отклонение от времени по Гринвичу. Есть множество методов этого класса, я приведу лишь три из них.

42)Коллекции - это классы позволяющие хранить и производить операции над множеством объектов. Коллекции используются для сохранения, получения, манипулирования данными и обеспечивают агрегацию одних объектов другими.

43) Интерфейс List - расширяет интерфейс Collection, и любой класс, имплементирующий List, реализует все методы, определенные в Collection, и в то же время вводятся новые методы, которые позволяют добавлять и удалять элементы из списка.

java.util.ArrayList - этот класс расширяет AbstractList и весьма похож на класс Vector. Он также динамически расширяется, как Vector, однако его методы не являются синхронизированными, вследствие чего операции с ним выполняются быстрее.

java.util.LinkedList - представляет собой реализацию интерфейса List. Он реализует все методы интерфейса List, помимо этого добавляются еще новые методы, которые позволяют добавлять, удалять и получать элементы в конце и начале списка. LinkedList является двухсвязным списком и позволяет перемещаться как от начала в конец списка, так и наоборот.

44)Set – коллекция не содержащая повторяющихся элементов. SortedSet – тот же сет, с упорядоченными элементами.

45) HashSet - создает коллекцию, которая использует хэш-таблицу для хранения. TreeSet - сохраняет объекты в отсортировано образом. TreeSet хранит свои элементы в дерево, и они автоматически оформляются в порядке сортировки..

46)Перечислите интерфейсы и классы Map. Когда применяются и в чем их отличия?

47)Reader/Writer — абстрактные классы, в которых собраны самые общие методы символьного ввода/вывода; и Input/OutputStream - абстрактные классы с общими методами байтового ввода/вывода;

48) Сериализация это процесс сохранения состояния объекта в последовательность байт; Должен быть универсальный и эффективный протокол передачи объектов между компонентами. Сериализация создана для этого, и компоненты Java используют протокол для передачи объектов. как реализуется в Java (назвать классы, методы)?

49) Java NIO использует асинхронную передачу, а также службы уровня операционной системы для достижения максимальной скорости передачи данных.

Для работы Java NIO использует:

буферы — типы для хранения данных;

каналы — аналоги потоков для быстрой записи или чтения данных.

50) Graphics2D (расширение Graphics) - контекст вывода. Определяет текущее графическое состояние, а также методы графического вывода. Для обратной совместимости другие классы в определении своих методов указывают Graphics, хотя реально используют Graphics2D;

Color - цвет;

Font - шрифт;

Point (расширение Point2D) - точка;

Rectangle - четырехугольник;

Polygon - многоугольник;

BasicStroke - контур сложной духмерной фигуры;

AffineTransform - матрица преобразования координат;

BufferedImage (расширение Image) - изображение, можно использовать также для вне экранного вывода совместо с Graphics2D;

TexturePaint - используется для заполнения фигуры текстурой;

GradientPaint - используется для градиентного заполнения фигуры.

5 1. MVC - Model-View-Controller. («Модель-представление-контроллер») - схема использования нескольких шаблонов проектирования, с помощью которых модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные. Swing основан на MVC, однако есть два существенных различия: 1) В Swing идет разделение модели на отдельные компоненты, что облегчает программирование. 2) Идет разделение ответственности между View\Controller.

5 2. JDBC (Java DataBase Connectivity — соединение с базами данных на Java) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД (система управления базами данных), реализованный в виде пакета java.sql, входящего в состав Java SE. (API - Интерфейс программирования приложений).

53. java.sql предоставляет API для доступа и обработки данных, хранящихся в источнике данных (обычно реляционной базы данных), используя язык программирования Java. Основные интерфейсы: Connection (соединение с базой данных), Statement (служащий для исполнения запросов к базе данных на языке SQL), ResultSet (обработка результатов запроса).

54.

55. Добавление строки в JDBC

Statement statement = con.createStatement(); //Создаем JDBC Statement объект

statement.executeUpdate("INSERT INTO название_БД " + "VALUES (‘значения_текст’,значение_число)"); //Используя метод executeUpdate(), вставляем данные

56. Выбор строк в JDBC

Statement select = con.createStatement(); //Создаем JDBC Statement объект

ResultSet result = select.executeQuery("SELECT ID_элемента, значение FROM название_БД"); //Используя метод executeQuery(), выбираем данные.

57. Объект ResultSet предназначен для работы с таблицей данных, полученной в результате обработки запроса. Строки таблицы просматриваются последовательно. Поля одной строки можно просматривать в любом порядке. Методы: next() - перемещает курсор вперед на одну строку. Возвращает истину, если курсор в настоящее время установлен на строку, и ложь, если курсор после последней строки; previous() - перемещает курсор назад на одну строку. Возвращает истину, если курсор в настоящее время установлен на строку, и ложь, если курсор перед первой строкой; first() - перемещает курсор на первую строку; last() - перемещает курсор на последнюю строку; absolute(int n) – перемещает курсор на n-ю строку.

58. С помощью класса URLConnection можно создавать HTTP- и HTTPS-подключения из приложений. URLClassLoader – этот класс используется для того, чтобы подгружать классы и ресурсы, указанных в URL (.jar файлы и папки). Класс URL представляет собой указатель на ресурс в WWW. Socket и ServerSocket – эти классы реализуют клиентские и серверные сокеты соответсвенно. Proxy – представляет собой настройки прокси. Inet4Address, Inet6Address, InetAddress – эти классы прдеставляют собой IP, IPv4, IPv6 адреса.

59. Подключение к порту хоста.

ServerSocket servers;

try

{

servers = new ServerSocket(4444);

}

catch (IOException e)

{

System.out.println("Couldn't listen to port 4444");

System.exit(-1);

}

[http://www.javaportal.ru/java/articles/ClientServer.html]

60. RMI (Remote Method Invocation) — программный интерфейс вызова удаленных методов в языке Java. Задача RMI — организация клиент-серверного взаимодействия. Это значит, что вам не придётся беспокоится о передаче и предварительной обработке данных (протокол и т.д.).

61) Как работает механизм RMI?

Во-первых архитектура RMI 1) Уровень Stub/Skeleton

2) Уровень удалённых ссылок

3) Транспортный уровень

Stub (Заглушка) – локальный прокси для удалённого объекта.

Skeleton (Скелетон) – удалённый прокси для объекта.

Уровень удалённых ссылок –поддерживает обмен данными между заглушкой и скелетоном.

Транспортный уровень – устанавливает и управляет соединениями между различными JVM(Java Virtual Machine)

Метод, принадлежащий заглушке, создает блок, в который входят следующие элементы:

- идентификатор удаленного объекта;

- описание вызываемого метода;

- развернутые параметры.

Затем метод заглушки посылает эту информацию серверу. Далее объект-получатель выполняет для каждого вызова удаленного метода следующие действия:

- свертывание параметров;

- поиск вызванного объекта;

- вызов заданного метода;

- извлечение и развертывание возвращаемого значения или исключения, сгенерированного данным методом;

- передача пакета, состоящего из развернутых возвращаемых данных, объекту-заглушке на клиентском компьютере.

Клиентский объект-заглушка свертывает возвращаемое значение или исключение, полученное с сервера. Результат свертывания становится возвращаемым значением метода заглушки. Если удаленный метод возвращает исключение, то объект-заглушка повторит его в среде объекта-клиента.

62) Что такое JavaBean, для чего нужна эта технология и как она работает?

JavaBeans – классы в языке Java, написанные по определённым правилам. Они используются для объединения нескольких объектов в один для удобной передачи данных.

- Многократное использование кода

- Обособление кода (деление на независимые небольшие блоки)

- Разработчик может создать целое приложение, используя графическое инструментальное средство для объединения нескольких малых компонентов Bean.

Модель взаимодействует с другими программными объектами и принимает решения, каким образом создавать и повторно использовать программные компоненты.

63) Что такое сервлет и что такое JSP? Их сходство и различия.

Сервлет это: Программа на языке Java, которая исполняется на веб-сервере, поддерживающем Java или в контейнере сервлетов веб-соединения (апплет на стороне сервера)

JSP это: Java Server Page – скриптовый язык на стороне сервера.

По поводу сходств и различий лучше спросить у Королева

Servlet

JSP

HTML-код внутри Java

Java-код внутри HTML

Большой объем кодирования

Меньший объем кодирования

Расширение .java

Расширение .jsp

Разработан для бизнес-логики

Разработка для презентационной логики

Любые изменения HTML-кода внутри сервлета требуют перекомпиляции сервлета, его запуска и проверки отображения страницы

Не нужно повторно компилировать для принятия сделанных изменений

Требуется ручная компиляция для сохранения изменений в файлах

Автоматически включает изменения, сделанные в любых файлах

64) Нарисуйте функциональную схему работы веб-приложения на основе Java-сервлетов и JSP.

Сервлет:

JSP:

65) Какие методы работают в течение жизненного цикла сервлета?

Жизненный цикл сервлета состоит из следующих шагов:

  • В случае отсутствия сервлета в контейнере.

1) Класс сервлета загружается контейнером.

2) Контейнер создает экземпляр класса сервлета.

3) Контейнер вызывает метод init(). Этот метод инициализирует сервлет и вызывается в первую очередь, до того, как сервлет сможет обслуживать запросы. За весь жизненный цикл метод init() вызывается только однажды.

  • Обслуживание клиентского запроса. Каждый запрос обрабатывается в своем отдельном потоке. Контейнер вызывает метод service() для каждого запроса. Этот метод определяет тип пришедшего запроса и распределяет его в соответствующий этому типу метод для обработки запроса. Разработчик сервлета должен предоставить реализацию для этих методов. Если поступил запрос, метод для которого не реализован, вызывается метод родительского класса и обычно завершается возвращением ошибки инициатору запроса.

3) В случае если контейнеру необходимо удалить сервлет, он вызывает метод destroy(), который снимает сервлет из эксплуатации. Подобно методу init(), этот метод тоже вызывается единожды за весь цикл сервлета.

66) С помощью каких классов или интерфейсов чаще всего создают сервлет? Напишите код.

public void init(ServletConfig config) throws ServletException

-Показывает, что сервлет помещен в службу

public void service(ServletRequest request,

ServletResponse response) throws ServletException,

IOException

-Отвечает на запрос клиента

public void destroy()

-Показывает, что сервлет удален из службы

public ServletConfig getServletConfig()

-Содержит параметры инициализации и начала работы сервлета

public String getServletInfo()

-Информация о сервлета, такая как имя автора, версия, copyright.

67) Что такое дескриптор развертывания, для чего он нужен?

Дескриптор развертывания веб-приложения описывает классы, ресурсы и конфигурацию приложения, а также их использование веб-сервером для получения веб-запросов. При получении веб-сервером запроса для приложения он использует дескриптор развертывания, чтобы сопоставить URL запроса с кодом, который должен обработать запрос.

Дескриптор развертывания – это файл с названием web.xml. Он находится в корне приложения в каталоге WEB-INF/. Это XML-файл, корневым элементом которого является <web-app>.

68) Из каких папок состоит веб-приложение, что в этих папках находится?

69) Какие преимущества и какие недостатки у сервлетов?

Преимущества:

- Исполняются как потоки в веб-контейнере вместо того, чтобы идти как отдельный процесс операционной системы.

- Веб-контейнер сам по себе является процессом ОС, но исполняется как служба и доступен постоянно

- Число запросов к сервлету растет, но дополнительные экземпляры сервлета при этом не создаются

- Исполняется более быстро, чем приложения на скриптовых языках

- Сервлет масштабируем

Недостатки:

- Сервлеты часто содержат как бизнес-логику, так и презентационную логику

- Сервлет должен управлять параллельным задачами

- Изменения сервлетов требуют их перекомпиляции и повторного развертывания

70) Для чего нужно межсервлетное взаимодействие, какими механизмами его можно обеспечить (назовите классы, методы)?

Для чего: - Сервлет может для обработки клиентского запроса транслировать запрос другому сервлету.

- Сервлет может в процессе обработки клиентского запроса включить выходные данные другого сервлета.

Интерфейс диспетчера запросов:

  • RequestDispatcher dispatcher = getServletContext().getRequestDispatcher( MainServlet );

  • public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException

  • public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException