Parallel Programming at TU München | Flashcards & Summaries

Select your language

Suggested languages for you:
Log In Start studying!

It looks like you are in the US?
We have a website for your region.

Take me there

Lernmaterialien für Parallel Programming an der TU München

Greife auf kostenlose Karteikarten, Zusammenfassungen, Übungsaufgaben und Altklausuren für deinen Parallel Programming Kurs an der TU München zu.

TESTE DEIN WISSEN
What are differences between kernel threads and user-level threads?
Lösung anzeigen
TESTE DEIN WISSEN
ul-threads... are scheduled by user cannot be preempted no kernel support or modifications needed switch between threads as needed
Lösung ausblenden
TESTE DEIN WISSEN

Что вы знаете о коллекциях типа Queue?

Lösung anzeigen
TESTE DEIN WISSEN

Queue — коллекция, предназначенная для хранения элементов в порядке, нужном для их обработки. В дополнение к базовым операциям интерфейса Collection, очередь предоставляет дополнительные операции вставки, получения и контроля.

Очереди обычно, но не обязательно, упорядочивают элементы в FIFO (first-in-first-out, «первым вошел — первым вышел») порядке.

Метод offer() вставляет элемент в очередь, если это не удалось — возвращает false. Этот метод отличается от метода add() интерфейса Collection тем, что метод add() может неудачно добавить элемент только с использованием unchecked исключения.

Методы remove() и poll() удаляют верхушку очереди и возвращают ее. Какой элемент будет удален (первый или последний) зависит от реализации очереди. Методы remove() и poll() отличаются лишь поведением, когда очередь пустая: метод remove() генерирует исключение, а метод poll() возвращает null.

Методы element() и peek() возвращают (но не удаляют) верхушку очереди.

Lösung ausblenden
TESTE DEIN WISSEN

О чем говорит ключевое слово final?

Lösung anzeigen
TESTE DEIN WISSEN

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

  • Для класса. Класс помеченный при помощи final не может иметь наследников.
  • Для метода. Метод помеченный при помощи final не может быть переопределен в классах наследниках.
  • Для поля. Поле помеченное при помощи слова final не может изменить свое значение после инициализации (инициализируется либо при описании, либо в конструкторе, статическом или динамическом блоке).
  • Значение локальных переменных, а так же параметров метода помеченных при помощи слова final не могут быть изменены после присвоения.
Lösung ausblenden
TESTE DEIN WISSEN

Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode?

Lösung anzeigen
TESTE DEIN WISSEN

Те, которые используют при определении метода equals(). Хэш код должен быть равномерно распределен на области возможных принимаемых значений.

Lösung ausblenden
TESTE DEIN WISSEN

Что вы знаете о SQLException? К какому типу checked или unchecked оно относится, почему?

Lösung anzeigen
TESTE DEIN WISSEN

SQLException предоставляет информацию об ошибках доступа к базе данных или других ошибках связанных с работой с базами данных.

SQLException относится к checked исключениям, а значит проверяется на этапе компиляции.

Споры об этом типе исключения идут о том, что разработчику приходится постоянно обрабатывать это исключение в коде, хотя большая часть ошибок возникает во время выполнения программы, т.е., по мнению многих, лучше бы отнести его к unchecked runtime исключениям.


1
2
3
4
5
6
try {
    // make some SQL call(s)
} catch {SQLException e) { 
    // log the exception
    return; // and give up
}


Lösung ausblenden
TESTE DEIN WISSEN

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

Lösung anzeigen
TESTE DEIN WISSEN

Преобразование может быть неявным и явным (приведение типов). Неявное преобразование может выполняться если:

  1. типы совместимы (например — оба целочисленные)
  2. размер «принимающего» типа больше чем у того, который преобразуется (так называемое «преобразование с расширением»)




1
2
int a = 123454;
double b =  a; //неявное преобразование - преобразование с расширением


Явное преобразование имеет вид переменная_нового_типа = (новый_тип) имя переменной;



1
2
int a;
byte b = (byte) a; //b будет остатком от деления a на диапазон byte, может быть потеря данных


При повышении типа byte>short; short>int; int>long; float>double; char>int информация не потеряется. При сужении возможна потеря информации (см. пример выше byte = (byte) int).

При различных операциях может происходить повышение типов в порядке «усиления» к более информативному типу. Например складывая int и double получим тип double. Но есть и особенность, например сложив double (8 байт) и long (8 байт) Java оставит знаки после запятой (double), а не более «длинный» тип.

Кратко можно записать такие правила:

  1. byte, short, char в выражениях всегда повышаются до int
  2. если в выражении участвует тип long — то именно к этому типу будет приведён результат
  3. если в выражении участвует float — то результат приводится к float
  4. если один из операндов имеет тип double — то к этому типу будет приведён весь результат
  5. При выборе между длиной и возможностью сохранить дробную часть — будет выбрана дробная часть
Lösung ausblenden
TESTE DEIN WISSEN

Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?

Lösung anzeigen
TESTE DEIN WISSEN

Может и оно будет передано в виртуальную машину Java (JVM).

Lösung ausblenden
TESTE DEIN WISSEN

Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?

Lösung anzeigen
TESTE DEIN WISSEN

Конструктор по умолчанию не принимает никаких параметров. Конструктор копирования принимает в качестве параметра объект класса. Конструктор с параметрами принимает на вход параметры (обычно необходимые для инициализации полей класса).



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    //конструктор по умолчанию
    public Circle() {
    }
 
    //конструктор копирования
    public Circle(Circle circle) {
        this(circle.getName(), circle.getArea(), circle.getPerimeter()); //будет вызван конструктор с параметрами ниже
    }
    
    //конструктор с параметрами
    public Circle(String name, Double area, String perimeter) {
        this.name = name;
        this.area = area;
        this.perimeter = perimeter;
    }
Lösung ausblenden
TESTE DEIN WISSEN

Из каких символов может состоять имя переменной (корректный идентификатор)?

Lösung anzeigen
TESTE DEIN WISSEN

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

Технически возможно начать имя переменной также с «$» или «_», однако это запрещено соглашением по оформлению кода в Java (Java Code Conventions). Кроме того, символ доллара «$», по соглашению, никогда не используется вообще. В соответствии с соглашением имя переменной должно начинаться именно с маленькой буквы (с заглавной буквы начинаются имена классов). Пробелы при именовании переменных не допускаются.

Lösung ausblenden
TESTE DEIN WISSEN

Почему нельзя объявить метод интерфейса с модификатором final или static?

Lösung anzeigen
TESTE DEIN WISSEN

Вообще с 8й версии можно static, но нужно чтобы было тело метода. Например


1
2
3
4
5
public interface Shape {
    static void draw() {
        System.out.println("Wow! It is impossible!");
    };
}


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

Lösung ausblenden
TESTE DEIN WISSEN
Which are the two concepts of synchronisation between threads in POSIX?
Lösung anzeigen
TESTE DEIN WISSEN
1) locks/mutual exclusion 2) condition variables
Lösung ausblenden
TESTE DEIN WISSEN

Что вы знаете о реализации классов HashSet и TreeSet?

Lösung anzeigen
TESTE DEIN WISSEN

Название Hash… происходит от понятия хэш-функция. Хэш-функция — это функция, сужающая множество значений объекта до некоторого подмножества целых чисел. Класс Object имеет метод hashCode(), который используется классом HashSet для эффективного размещения объектов, заносимых в коллекцию. В классах объектов, заносимых в HashSet, этот метод должен быть переопределен (override).

HashSet реализован на основе хеш-таблицы, а TreeSet — на основе бинарного дерева.


HashSet гораздо быстрее чем TreeSet (константное время против логарифмического для большинства операций, таких как add, remove, contains), но TreeSet гарантирует упорядоченность объектов. Оба не синхронизированы.

HashSet

  • предоставляет константное время для add(), remove(), contains() и size()
  • порядок элементов в контейнере может меняться
  • производительность итерации по контейнеру зависит от емкости и «коэффициента загрузки» (рекомендуется оставлять load factor значением по умолчанию равным 0.75, что является хорошим компромиссом между временем доступа и объемом хранимых данных)

TreeSet

  • время для базовых операций add(), remove(), contains() — log(n)
  • гарантирует порядок элементов
  • не предоставляет каких-либо параметров для настройки производительности
  • предоставляет дополнительные методы для упорядоченного списка: first(), last(), headSet(), tailSet() и т.д.
Lösung ausblenden
  • 441101 Karteikarten
  • 10165 Studierende
  • 440 Lernmaterialien

Beispielhafte Karteikarten für deinen Parallel Programming Kurs an der TU München - von Kommilitonen auf StudySmarter erstellt!

Q:
What are differences between kernel threads and user-level threads?
A:
ul-threads... are scheduled by user cannot be preempted no kernel support or modifications needed switch between threads as needed
Q:

Что вы знаете о коллекциях типа Queue?

A:

Queue — коллекция, предназначенная для хранения элементов в порядке, нужном для их обработки. В дополнение к базовым операциям интерфейса Collection, очередь предоставляет дополнительные операции вставки, получения и контроля.

Очереди обычно, но не обязательно, упорядочивают элементы в FIFO (first-in-first-out, «первым вошел — первым вышел») порядке.

Метод offer() вставляет элемент в очередь, если это не удалось — возвращает false. Этот метод отличается от метода add() интерфейса Collection тем, что метод add() может неудачно добавить элемент только с использованием unchecked исключения.

Методы remove() и poll() удаляют верхушку очереди и возвращают ее. Какой элемент будет удален (первый или последний) зависит от реализации очереди. Методы remove() и poll() отличаются лишь поведением, когда очередь пустая: метод remove() генерирует исключение, а метод poll() возвращает null.

Методы element() и peek() возвращают (но не удаляют) верхушку очереди.

Q:

О чем говорит ключевое слово final?

A:

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

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

Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode?

A:

Те, которые используют при определении метода equals(). Хэш код должен быть равномерно распределен на области возможных принимаемых значений.

Q:

Что вы знаете о SQLException? К какому типу checked или unchecked оно относится, почему?

A:

SQLException предоставляет информацию об ошибках доступа к базе данных или других ошибках связанных с работой с базами данных.

SQLException относится к checked исключениям, а значит проверяется на этапе компиляции.

Споры об этом типе исключения идут о том, что разработчику приходится постоянно обрабатывать это исключение в коде, хотя большая часть ошибок возникает во время выполнения программы, т.е., по мнению многих, лучше бы отнести его к unchecked runtime исключениям.


1
2
3
4
5
6
try {
    // make some SQL call(s)
} catch {SQLException e) { 
    // log the exception
    return; // and give up
}


Mehr Karteikarten anzeigen
Q:

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

A:

Преобразование может быть неявным и явным (приведение типов). Неявное преобразование может выполняться если:

  1. типы совместимы (например — оба целочисленные)
  2. размер «принимающего» типа больше чем у того, который преобразуется (так называемое «преобразование с расширением»)




1
2
int a = 123454;
double b =  a; //неявное преобразование - преобразование с расширением


Явное преобразование имеет вид переменная_нового_типа = (новый_тип) имя переменной;



1
2
int a;
byte b = (byte) a; //b будет остатком от деления a на диапазон byte, может быть потеря данных


При повышении типа byte>short; short>int; int>long; float>double; char>int информация не потеряется. При сужении возможна потеря информации (см. пример выше byte = (byte) int).

При различных операциях может происходить повышение типов в порядке «усиления» к более информативному типу. Например складывая int и double получим тип double. Но есть и особенность, например сложив double (8 байт) и long (8 байт) Java оставит знаки после запятой (double), а не более «длинный» тип.

Кратко можно записать такие правила:

  1. byte, short, char в выражениях всегда повышаются до int
  2. если в выражении участвует тип long — то именно к этому типу будет приведён результат
  3. если в выражении участвует float — то результат приводится к float
  4. если один из операндов имеет тип double — то к этому типу будет приведён весь результат
  5. При выборе между длиной и возможностью сохранить дробную часть — будет выбрана дробная часть
Q:

Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?

A:

Может и оно будет передано в виртуальную машину Java (JVM).

Q:

Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?

A:

Конструктор по умолчанию не принимает никаких параметров. Конструктор копирования принимает в качестве параметра объект класса. Конструктор с параметрами принимает на вход параметры (обычно необходимые для инициализации полей класса).



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    //конструктор по умолчанию
    public Circle() {
    }
 
    //конструктор копирования
    public Circle(Circle circle) {
        this(circle.getName(), circle.getArea(), circle.getPerimeter()); //будет вызван конструктор с параметрами ниже
    }
    
    //конструктор с параметрами
    public Circle(String name, Double area, String perimeter) {
        this.name = name;
        this.area = area;
        this.perimeter = perimeter;
    }
Q:

Из каких символов может состоять имя переменной (корректный идентификатор)?

A:

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

Технически возможно начать имя переменной также с «$» или «_», однако это запрещено соглашением по оформлению кода в Java (Java Code Conventions). Кроме того, символ доллара «$», по соглашению, никогда не используется вообще. В соответствии с соглашением имя переменной должно начинаться именно с маленькой буквы (с заглавной буквы начинаются имена классов). Пробелы при именовании переменных не допускаются.

Q:

Почему нельзя объявить метод интерфейса с модификатором final или static?

A:

Вообще с 8й версии можно static, но нужно чтобы было тело метода. Например


1
2
3
4
5
public interface Shape {
    static void draw() {
        System.out.println("Wow! It is impossible!");
    };
}


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

Q:
Which are the two concepts of synchronisation between threads in POSIX?
A:
1) locks/mutual exclusion 2) condition variables
Q:

Что вы знаете о реализации классов HashSet и TreeSet?

A:

Название Hash… происходит от понятия хэш-функция. Хэш-функция — это функция, сужающая множество значений объекта до некоторого подмножества целых чисел. Класс Object имеет метод hashCode(), который используется классом HashSet для эффективного размещения объектов, заносимых в коллекцию. В классах объектов, заносимых в HashSet, этот метод должен быть переопределен (override).

HashSet реализован на основе хеш-таблицы, а TreeSet — на основе бинарного дерева.


HashSet гораздо быстрее чем TreeSet (константное время против логарифмического для большинства операций, таких как add, remove, contains), но TreeSet гарантирует упорядоченность объектов. Оба не синхронизированы.

HashSet

  • предоставляет константное время для add(), remove(), contains() и size()
  • порядок элементов в контейнере может меняться
  • производительность итерации по контейнеру зависит от емкости и «коэффициента загрузки» (рекомендуется оставлять load factor значением по умолчанию равным 0.75, что является хорошим компромиссом между временем доступа и объемом хранимых данных)

TreeSet

  • время для базовых операций add(), remove(), contains() — log(n)
  • гарантирует порядок элементов
  • не предоставляет каких-либо параметров для настройки производительности
  • предоставляет дополнительные методы для упорядоченного списка: first(), last(), headSet(), tailSet() и т.д.
Parallel Programming

Erstelle und finde Lernmaterialien auf StudySmarter.

Greife kostenlos auf tausende geteilte Karteikarten, Zusammenfassungen, Altklausuren und mehr zu.

Jetzt loslegen

Das sind die beliebtesten StudySmarter Kurse für deinen Studiengang Parallel Programming an der TU München

Für deinen Studiengang Parallel Programming an der TU München gibt es bereits viele Kurse, die von deinen Kommilitonen auf StudySmarter erstellt wurden. Karteikarten, Zusammenfassungen, Altklausuren, Übungsaufgaben und mehr warten auf dich!

Das sind die beliebtesten Parallel Programming Kurse im gesamten StudySmarter Universum

Parallele Programmierung

Hochschule Hof

Zum Kurs
Web Programming

BFH - Bern University of Applied Sciences

Zum Kurs
Media Programming

Hochschule für Technik und Wirtschaft Berlin

Zum Kurs
Robot Programming

Hochschule für angewandte Wissenschaften Würzburg-Schweinfurt

Zum Kurs
Programming CH2

King Khaled University

Zum Kurs

Die all-in-one Lernapp für Studierende

Greife auf Millionen geteilter Lernmaterialien der StudySmarter Community zu
Kostenlos anmelden Parallel Programming
Erstelle Karteikarten und Zusammenfassungen mit den StudySmarter Tools
Kostenlos loslegen Parallel Programming