Algoritms Flashcards

1
Q

чтение linked list

A
LinkedList list = new LinkedList();
    while (true)
    {
        int value = NextValue();
        if (value != 0xFFFF)
        {
            list.Add(value);
        }
        else
        {
            break;
        }
    }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Реализуйте алгоритм обхода бинарного дерева

A

Собственно обход дерева, как и все обходы графов ( а дерево это обычный неориентированный граф ) делается двумя методами: в глубину (Depth-first) и в ширину (Breadth-first).

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

Если в глубину тоберешь левый элемент рекурсивно, пока есть потом правый пока есть

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Jackson

A
ObjectMapper mapper = new ObjectMapper();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
     Student student = mapper.readValue(jsonString, Student.class);
         jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(student);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

автоуаковка и минусы

A

Автоупаковка это обертка int в Integer….минусы - больше требует памяти и больше времени исполнения

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

канает ли такой код?
public static void test(int …a) {
System.out.println(“int…”);
}

A

да канает

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
Что выведет на экран следующая программа?
public class Test { 
    public static void main(String[] args) { 
        System.out.println("4/2=" + 4/2 == "4/2=2"); 
    } 
}
A

true т.к происходит сравнение двух одинаковых строк

В соответствии со спецификацией Java 7 выражение “4/2=” + 4/2 == “4/2=2” является константным выражением (constant expression).
Значения константных выражений вычисляются на этапе компиляции, и у данного выражения должно быть значение true.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

i=1;
i = i++;
чему будет в итоге равно i

A

i=1 т.к i передало еденицу, а лишь потом инкрементировалось

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
public class Funcs extends java.lang.Math { 
  ///что здесь не так?
}
A

java.lang.Math финализирован и от него не унаследуешься

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Float.NaN == Float.NaN вернет false или true

A

false Т.к В Java NaN’ы несравнимы между собой

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
Integer a = 120;
Integer b = 120;
Integer c = 130;
Integer d = 130;
System.out.println(a==b);
System.out.println(c==d);
A

Для более эффективного использования памяти, в джаве используются так называемые пулы. Есть строковый пул, Integer pool итд. Когда мы создаем объект не используя операцию new, объект помещается в пул, и в последствии, если мы захотим создать такой же объект (опять не используя new), новый объект создан не будет, а мы просто получим ссылку на наш объект из пула.
Особенность Integer-пула — он хранит только числа, которые помещаются в тип данных byte: от -128 до 127. Для остальных чисел пул не работает.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

String hello = “Hello”, lo = “lo”;
System.out.print((testPackage.Other.hello == hello) + “ “);
System.out.print((other.Other.hello == hello) + “ “);
System.out.print((hello == (“Hel”+”lo”)) + “ “);
System.out.print((hello == (“Hel”+lo)) + “ “); // runtime
System.out.println(hello == (“Hel”+lo).intern());

A
  1. Строковые литералы в одном классе представляют собой ссылки на один и тот же объект.
  2. Строковые литералы в разных классах, но в одном пакете представляют собой ссылки на один и тот же объект.
  3. Строковые литералы в разных классах и разных пакетах всё равно представляют собой ссылки на один и тот же объект )).
  4. Строки, получающиеся сложением констант, вычисляются во время компиляции и далее смотри пункт первый.
  5. Строки, создаваемые во время выполнения НЕ ссылаются на один и тот же объект. (поэтому четвертый вывод — false)
  6. Метод intern в любом случае возвращает объект из пула, вне зависимости от того, когда создается строка, на этапе компиляции или выполнения. (Поэтому последний вывод — true).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

static void method(long a, long b) {
System.out.println(“inside long”);
}
static void method(Integer a, Integer b) {
System.out.println(“inside INTEGER”);
}
public static void main(String[] args) {
int a = 2;
int b = 3;
method(a,b);
}

какой меод запустится

A

в пятой джава первый т.к нет автоуппаовки, а не в пятой второй, т.к с автоупаковкой имеет высший приоритет

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

КАк описать в POJO @Override toSgtring??? код в студию!

A

@Override
public String toString() {
return String.format(“{id: %s, name: %s, checked: %s}”, id, name, checked);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

как прочитать CSV файл

A
try (Reader reader = Files.newBufferedReader(Paths.get("file.csv"));
            CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT
                    .withFirstRecordAsHeader()        
        ) {
            for (CSVRecord csvRecord : csvParser) {
                // Access
                String name = csvRecord.get("MyColumn");
                // (..)
          }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Записать CSV файл

A
String str = "Hello";
    BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
    writer.write(str);
writer.close();
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Из нижеследующих - какие названия переменных вызовут ошибку?
int _a;
int $c;
int ______2_w;
int _$;
int this_is_a_very_detailed_name_for_an_identifier;

int :b;
int -d;
int e#;
int .f;
int 7g;
A

последние пять перменных…

17
Q

корректна ли запись double d = .5;

A

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

18
Q

Будет ли работать следующий код???
byte s = 2;
char c1 = b;

A

НЕТ! надо помнить, что к char неявно не приводится переменная любого типа.

19
Q

чем отличается int[] i от int i[]

A

НИчем - одно и тоже

20
Q

Как инициализировать массив сразу с перменными

A
// агрегатная инициализация
          int[][] scores = {{1, 2}, {1, 2, 3, 4}, {1, 2, 3}};
21
Q

ПОчему не работает этот код?
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;

A

Потому что результат интегральных выражений с типом ниже int дает редультат int….а int ты не сможешь присвоить в более низкий byte b3

22
Q
Что делают методы библиотеки java.lang.Math:
ceil()
floor()
random()
abs()
max()
min()
round()
sqrt()
toDegrees()
toRadians()
tan()
sin()
cos()
A
ceil() Возвращает наименьшее целое число, которое больше аргумента.
floor() Возвращает наибольшее целое число, которое меньше или равно аргументу.
random() рандом
abs()  (модуль) числа
max() Возвращает больший из аргументов.
min() Возвращает меньший из аргументов.
round() округление
sqrt() корень
toDegrees() перевод в градусы
toRadians() перевод в радианы
tan() тангенс
sin() синус
cos() косинус
23
Q

Does the following hashCode() implementation legal?

publicint hashCode() {
    return 1;
}
A

Да, потому что для объектов, равных через equals(), hashCode() должен возвращать одинаковое значение(выполняется). Для объектов же, не равных через equals(), hashCode() может возвращать одинаковое значение.

24
Q

Given the following,

  1. publicclass X {
  2. publicstaticvoid main(String [] args) {
  3. X x = new X();
  4. X x2 = m1(x);
  5. X x4 = new X();
  6. x2 = x4;
  7. doComplexStuff();
  8. }
  9. static X m1(X mx) {
  10. mx = new X();
  11. return mx;
  12. }
  13. }

After line 6 runs. how many objects are eligible for garbage collection?

A

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

25
Q

можно ли поток запустить дважды

A

не

26
Q
что можно сказать о результате выполнения следующего кода?
 public
        class StartClass {
    publicstaticvoid main(String[] args) {
        Integer i1 = 1000; // преобразовывается в Integer i1 = Integer.valueOf(1000);
        Integer i2 = 1000; // преобразовывается в Integer i2 = Integer.valueOf(1000);
        System.out.println(i1 == i2);
        System.out.println(i1 == 1000);
    }
}
A

false
true
С целью не потерять обратную совместимость с предыдущими версиями джавы при первом сравнении проверяется, ссылаются ли i1 и i2 на один и тот же объект. Не ссылаются.

27
Q
что можно сказать о результате выполнения следующего кода?
 public
        class StartClass {
    publicstaticvoid main(String[] args) {
        Integer i1 = 10; 
        Integer i2 = 10; 
        System.out.println(i1 == i2);
        System.out.println(i1 == 10);
    }
}
A

Здесь сравнение i1 с i2 дает положительный результат, потому что при autoboxing в случае, когда соотвествующее значение примитивного типа принадлежит определенному интервалу, для одинаковых примитивных значений возвращается один и тот же объект. 10 – число из этого интервала, поэтому при autoboxing ссылки i1 и i2 связываются с одним и тем же объектом Integer. Такой эффект происходит при autoboxing Boolean, autoboxing Byte, Short, Integer, Long для значений из [-128; 127], autoboxing Character для значений из [‘\u0000’; ‘\u007F’]. На Double и Float это не распространяется