Skip to content

Latest commit

 

History

History
76 lines (49 loc) · 8.42 KB

README.md

File metadata and controls

76 lines (49 loc) · 8.42 KB

Основы

Создать Java проект в IDEA. Настроить форматирование по примеру кода ниже. Написать консольное приложение, читающее данные из аргументов функции main(), а также из System.in, делающее расчет, используя входные данные и модуль Math и выводящее результаты в System.out. Продемонстрировать обработку исключений разного типа. Продемонстрировать использование собственных функций. Запустить приложение из IDEA, а также на Ant написать скрипт, компилирующий и собирающий его в jar и запустить приложение вне IDEA.

Классы и объекты

Написать класс, хранящий какие-либо данные и реализующий методы toString, equals, hashCode. Создать объекты класса и продемонстрировать использование оператора ==, а также 3х методов, перечисленных выше. Объяснить разницу между == и equals.

Коллекции

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

Наследование и идентификаторы

Продемонстрировать наследование классов, перекрытие полей и методов. Продемонстрировать использование идентификаторов классов, полей и методов (например public или static и т.д.) Объяснить значение.

Интерфейсы

Написать класс, реализующий интерфейс Comparable, и продемонстрировать на примере. Написать свой интерфейс его работу и продемонстрировать на примере. Объяснить смысл интерфейса.

Работа с файловой системой и текстом

Приложение должно прочесть какие-либо параметры из файла .properties в объект типа Properties, просканировать файловую систему по пути, указанному в пропертях, на наличие файлов с расширением txt, создать список, содержащий имена этих файлов, их расположение, размер и число, сколько раз слово Х встречается в этом файле, где слово Х – самое часто встречаемое слово в во всех просканированных файлах.

Работа с XML

Продемонстрировать парсинг XML двумя способами: SAX и DOM и показать на примере, как можно работать с полученными в результате парсинга объектами.

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

Написать 2 оконных приложения: первое использует AWT, второе Swing. Показать работу основных компонентов и событий: окно и события изменения размера, сворачивания и т.д., панель и события мыши, текстовое поле и события клавиатуры.

Работа с БД и JDBC

Написать оконное приложение, работающее с несколькими таблицами в бд, представляющими иерархическую структуру. Реализовать добавление, изменение и удаление данных. Продемонстрировать и объяснить основные java interfaces для работы с БД (Connection, Statement, ResultSet и т.д.) и объектами, реализующие эти интерфейсы (особое внимание уделить работе с ресурсами бд – открытие и закрытие). Использовать PreparedStatement, где необходимо. В некоторых случаях использовать вызов процедур пакета.

Web и EJB приложение

Установить jboss-4.2.3.GA и настроить idea для работы с ним так (через плагин).

1: сделать EJB компонент, который можно вызывать по RMI/JNDI. Компонент принимает на вход объект какого-либо собственного класса с данными и через jboss connection pool (потребуется настройка jboss) и jdbc сохраняет его в какую-либо таблицу (схема/пароль genie_am/ genie_am). Также EJB компонент должен уметь получить объект из бд и вернуть клиенту по RMI. Компонент должен быть запущен на джбосс.

2: сделать сервлет, который будет работать с БД по jdbc, сохранять и загружать данные из таблицы. Настройки соединения с БД должны быть в конфигурации сервлета. Загруженные данные сервлет должен выводить в виде простой (без оформления) html-страницы. Данные для сохранения должны передаваться сервлету параметрами query_string. Сервлет должен быть запущен на джбосс.

Multithreading and sockets

Сделать простое клиент-серверное приложение (т.е. сервер и клиент). Сервер должен быть многопоточным и обслуживать неограниченное число клиентов. Соединение должно использовать классы Socket и ServerSocket. Обмен данными должен быть организован с помощью ObjectInput(Output)Stream. Передаваемые данные – объекты собственных классов. Передача данных должна инициироваться, как клиентом, так и сервером. Т.е., например, так, как работает чат-сервер: клиент А передает данные на сервер для клиента Б, клиент Б подсоединен к серверу, но сам не делает регулярных обращений к нему, а сервер сам отправляет данные, полученные от клиента А клиенту Б.

Пример кода

private void updateData(ArrayList<String> newRows)
{
  try
  {
    if (dataRows.size() == 0)
      dataRows.add(new DataRow(newRows.remove(newRows.size() - 1)));
    while (newRows.size() > 0)
    {
      String rowStr = newRows.remove(newRows.size() - 1);
      System.out.println("rowStr: " + rowStr);
      DataRow row = new DataRow(rowStr);
      int idxDiff = (int) Math.round((row.time - lastDataRow().time) / 10000d);
      while (idxDiff-- > 1)
        dataRows.add(new DataRow((lastDataRow().time + 10000) + ";"));
      dataRows.add(row);
    }
  }
  catch (Exception e)
  {
    e.printStackTrace();
  }
}