java professionals community by meetup quiz - october 2015
TRANSCRIPT
Java Professionals Community BY
Celebrating anniversary!
Призы от партнеров:
1a. Reflection
import java.lang.reflect.Field;import java.lang.reflect.Modifier;public class C_Reflection { public static final String s = "one"; public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Field field = C_Reflection.class.getField("s"); int modifiers = field.getModifiers(); Field modifierField = field.getClass().getDeclaredField("modifiers"); modifiers = modifiers & ~Modifier.FINAL; modifierField.setAccessible(true); modifierField.setInt(field, modifiers); field.set(null, "two"); System.out.println(s); }}
import java.lang.reflect.Field;import java.lang.reflect.Modifier;public class C_Reflection { public static final String s = "one"; public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { Field field = C_Reflection.class.getField("s"); int modifiers = field.getModifiers(); Field modifierField = field.getClass().getDeclaredField("modifiers"); modifiers = modifiers & ~Modifier.FINAL; modifierField.setAccessible(true); modifierField.setInt(field, modifiers); field.set(null, "two"); System.out.println(s); }}
A. oneB. twoC. NoSuchFieldExceptionD. IllegalAccessException
1b. Classloading
class Parent { public static final String value = "Parent value"; static { System.out.println("Parent static"); }} class Child extends Parent { static { System.out.println("Child static"); } { System.out.println("Child initializer"); }} public class A_Classload { public static void main(String[] args) { System.out.println(Child.value); }}
class Parent { public static final String value = "Parent value"; static { System.out.println("Parent static"); }} class Child extends Parent { static { System.out.println("Child static"); } { System.out.println("Child initializer"); }} public class A_Classload { public static void main(String[] args) { System.out.println(Child.value); }}
A. Parent valueB. Parent static Parent valueC. Parent static Child static Parent valueD. Parent static Child static Child initializer Parent value
1c. Lists
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class D_Lists { public static final int MAX_VAL = 10000; public static void main(String[] args) { List<Integer> linkedList = new LinkedList<>(); List<Integer> arrayList = new ArrayList<>(); for(int i = 0; i < MAX_VAL; i++) { linkedList.add(i); arrayList.add(i); } long linkedListTime = System.nanoTime(); for(int i = 0; i < MAX_VAL; i++) { linkedList.add(MAX_VAL/2, i); } linkedListTime = System.nanoTime() - linkedListTime; long arrayListTime = System.nanoTime(); for(int i = 0; i < MAX_VAL; i++) { arrayList.add(MAX_VAL/2, i); } arrayListTime = System.nanoTime() - arrayListTime; if (arrayListTime < linkedListTime) { System.out.println("ARRAY LIST WINS!"); } else { System.out.println("LINKED LIST WINS!"); } }}
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;public class D_Lists { public static final int MAX_VAL = 10000; public static void main(String[] args) { List<Integer> linkedList = new LinkedList<>(); List<Integer> arrayList = new ArrayList<>(); for(int i = 0; i < MAX_VAL; i++) { linkedList.add(i); arrayList.add(i); } long linkedListTime = System.nanoTime(); for(int i = 0; i < MAX_VAL; i++) { linkedList.add(MAX_VAL/2, i); } linkedListTime = System.nanoTime() - linkedListTime; long arrayListTime = System.nanoTime(); for(int i = 0; i < MAX_VAL; i++) { arrayList.add(MAX_VAL/2, i); } arrayListTime = System.nanoTime() - arrayListTime; if (arrayListTime < linkedListTime) { System.out.println("ARRAY LIST WINS!"); } else { System.out.println("LINKED LIST WINS!"); } }}
A. ARRAY LIST WINS!B. LINKED LIST WINS!C. StackOverflowExceptionD. Не скомпилируется
1. Final
import java.util.Random;public class P_Even { public static void main(String[] args) { Random random = new Random(); for (int i = 0; i < 100; i++) { int x = Math.abs(random.nextInt()); if (isEvenBase(x) != isEvenTest(x)) { throw new RuntimeException("Fail! " + x); } } } // do not ban: 'x', '(', ')', '=', '0', '1', '2' // ban: static boolean isEvenBase(int x) { return x % 2 == 0; } static boolean isEvenTest(int x) { return true; }}
2. Complexity
import java.math.BigInteger;import java.security.SecureRandom;public class R_Complexity { public static final String NEARLY_INDEFINITE = "..."; public static void main(String[] args) { System.out.println(foo(1)); } public static String foo(int n) { String temp = ""; for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { temp += NEARLY_INDEFINITE.charAt(j); } } return temp; }}
import java.math.BigInteger;import java.security.SecureRandom;public class R_Complexity { public static final String NEARLY_INDEFINITE = "..."; public static void main(String[] args) { System.out.println(foo(1)); } public static String foo(int n) { String temp = ""; for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { temp += NEARLY_INDEFINITE.charAt(j); } } return temp; }}
A. O(n)B. O(n^2)C. O(n^4)D. O(n!)
3. Exception
import java.util.Arrays;import java.util.ConcurrentModificationException;import java.util.List;public class B_Exception { public static void main(String[] args) { List<String> list = Arrays.asList("one", "two"); try { for (String s : list) { list.remove(s); } } catch (ConcurrentModificationException ex) { System.out.println("1"); } catch (RuntimeException ex) { System.out.println("2"); } catch (Exception ex) { System.out.println("3"); } catch (Throwable ex) { System.out.println("4"); } }}
import java.util.Arrays;import java.util.ConcurrentModificationException;import java.util.List;public class B_Exception { public static void main(String[] args) { List<String> list = Arrays.asList("one", "two"); try { for (String s : list) { list.remove(s); } } catch (ConcurrentModificationException ex) { System.out.println("1"); } catch (RuntimeException ex) { System.out.println("2"); } catch (Exception ex) { System.out.println("3"); } catch (Throwable ex) { System.out.println("4"); } }}
A. 1B. 2C. 3D. 4
Generics
import java.util.ArrayList;import java.util.Collection;import java.util.List;public class E_Generics { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); insert(list, "123"); System.out.println(list); } public static void insert(List l, Object o) { l.add(o); }}
import java.util.ArrayList;import java.util.Collection;import java.util.List;public class E_Generics { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); insert(list, "123"); System.out.println(list); } public static void insert(List l, Object o) { l.add(o); }}
A. []B. [123]C. ClassCastExceptionD. Не скомпилируется
Спасибо!facebook: Богдан Семёнов
twitter: bsiamionau