(Не)адекватное
техническое интервью
@antonarhipov
https://twitter.com/mxcl/status/608682016205344768
“Google: 90% of our engineers use
the software you wrote (Homebrew),
but you can’t invert a binary tree on a
whiteboard so fuck off.”
Max Howell
@mxcl
Приходит к нам, значит, Ерлангист.
А мы ему кусок кода на С++, "где-то
тут критический баг, поправь. Два
часа тебе на изучение JVM".
https://www.facebook.com/aleksey.shipilev/posts/10154469128968049?pnref=story
https://www.facebook.com/aleksey.shipilev/posts/10154469128968049?pnref=story
Приходит к нам, значит, Ерлангист.
А мы ему кусок кода на С++, "где-то
тут критический баг, поправь. Два
часа тебе на изучение JVM".
На самом деле, у нас в проектах ramp-up даже
крутейших инженеров занимает от 3 месяцев. [….]
Никто в своём уме не будет думать, что чувак
сможет правильно что-то починить, если он не
знает кодобазы, прошлого опыта, и проч.
https://www.facebook.com/aleksey.shipilev/posts/10154469128968049?pnref=story
Приходит к нам, значит, Ерлангист.
А мы ему кусок кода на С++, "где-то
тут критический баг, поправь. Два
часа тебе на изучение JVM".
На самом деле, у нас в проектах ramp-up даже
крутейших инженеров занимает от 3 месяцев. [….]
Никто в своём уме не будет думать, что чувак сможет
правильно что-то починить, если он не знает
кодобазы, прошлого опыта, и проч.
Кого собеседуем?
И зачем?
5 минутСвоё мнение о кандидате вы составляете за первые 5 минут общения.
Остальное время вы используете лишь для того, чтобы убедиться,
или разубедиться, в своём мнении.
Какие вопросы бывают?
Какие вопросы бывают?
Алгоритмические задачки
Какие вопросы бывают?
Алгоритмические задачки
Вопросы на знание ЯП ( Java )
Какие вопросы бывают?
Алгоритмические задачки
Вопросы на знание ЯП ( Java )
Вопросы на знание стандартной библиотеки ( JDK )
Какие вопросы бывают?
Алгоритмические задачки
Вопросы на знание ЯП ( Java )
Вопросы на знание стандартной библиотеки ( JDK )
Вопросы на знание фреймворков ( Spring )
Какие вопросы бывают?
Алгоритмические задачки
Вопросы на знание ЯП ( Java )
Вопросы на знание стандартной библиотеки ( JDK )
Вопросы на знание фреймворков ( Spring )
Какие вопросы бывают?
Какие вопросы бывают?
Вопросы о дизайне ( как бы ты сделал… )
Какие вопросы бывают?
Вопросы о дизайне ( как бы ты сделал… )
Общие вопросы по программированию
Какие вопросы бывают?
Вопросы о дизайне ( как бы ты сделал… )
Общие вопросы по программированию
Вопросы о предыдущем опыте
This slide is intentionally left blank
Инверсия бинарного дерева
Инверсия бинарного дерева
4
72
9631
4
72
9631
4
27
1369
Инверсия бинарного дерева
leetcode.com
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null){
return root;
}
TreeNode node = new TreeNode(root.val);
node.left = invertTree(root.right);
node.right = invertTree(root.left);
return node;
}
}
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null){
return root;
}
TreeNode node = new TreeNode(root.val);
node.left = invertTree(root.right);
node.right = invertTree(root.left);
return node;
}
}
public class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null) { return null; }
final Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()) {
final TreeNode node = queue.poll();
final TreeNode left = node.left;
node.left = node.right;
node.right = left;
if(node.left != null) { queue.offer(node.left); }
if(node.right != null) { queue.offer(node.right); }
}
return root;
}
}
Напишите функцию для реверса строки
Найдите общего предка для двух вершин
в бинарном дереве
Напишите функцию для реверса строки
Найдите общего предка для двух вершин
в бинарном дереве
Напишите функцию для реверса строки
Реализуйте BFS и DFS для обхода дерева,
дайте оценку времени исполнения и
потребления памяти
…
Найдите общего предка для двух вершин
в бинарном дереве
Напишите функцию для реверса строки
Реализуйте BFS и DFS для обхода дерева,
дайте оценку времени исполнения и
потребления памяти
…
Что мы пытаемся понять
задавая такие вопросы?
Create a function that takes a string as a parameter.
This function will return an integer calculated with the
number of occurrence of characters in String used as
parameter:
Magic number:
Create a function that takes a string as a parameter.
This function will return an integer calculated with the
number of occurrence of characters in String used as
parameter:
Magic number:
result = number of 'a'
* number of 'p' or 'r' or 't' or 'f'
+ number of 'e'
* number of 'n' or 'm'
- number of ' '
* number of 'a'
+ number of 'n' or 'm'
Create a function that takes a string as a parameter.
This function will return an integer calculated with the
number of occurrence of characters in String used as
parameter:
Magic number:
magicNumber("i love java"); // returns -4
result = number of 'a'
* number of 'p' or 'r' or 't' or 'f'
+ number of 'e'
* number of 'n' or 'm'
- number of ' '
* number of 'a'
+ number of 'n' or 'm'
result = number of 'a'
* number of 'p' or 'r' or 't' or 'f'
+ number of 'e'
* number of 'n' or 'm'
- number of ' '
* number of 'a'
+ number of 'n' or 'm'
Что такое
“number of”?
Как это считать??
А так и
задумано!
Сначала подумай
Сначала подумай
Подумай ещё!
Сначала подумай
Подумай ещё!
Спроси!
Сначала подумай
Подумай ещё!
Спроси!
Переспроси! Может
быть уже не надо
делать
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
Вопрос: когда поиск остановится?
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
2 4 17 44 71 119 554 661 669 771 818
6 8 19 21 25 41 52 59 111 255 414
7 9 33 37 39 55 57 99 101 241 340
“Найдите самую релевантную
комбинацию для поиска из трёх слов.”
Вопрос: когда поиск остановится?
Кто должен спросить
этот вопрос?
¯_(ツ)_/¯
https://youtu.be/XKu_SEDAykw
FizzBuzzWrite a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz"
instead of the number and for the multiples of five print "Buzz". For numbers which are multiples
of both three and five print "FizzBuzz".
Вопросы на знание ЯП
(Java edition)
Классика жанра
System.out.println(10/3);
equals() и hashCode()
В чём разница между
абстрактным классом и интерфейсом?
Параметры методов в Java передаются
по значению или по ссылке?
class Foo {
void boo() {
class Bar {}
Bar b = new Bar();
System.out.println(b);
}
}
class Foo {
void boo() {
class Bar {}
Bar b = new Bar();
System.out.println(b);
}
}
Компилируется ли это код?
class Foo {
void boo() {
class Bar {}
Bar b = new Bar();
System.out.println(b);
}
}
Компилируется ли это код?
Зачем писать такой код?
class Foo {
void boo() {
class Bar {}
Bar b = new Bar();
System.out.println(b);
}
}
Компилируется ли это код?
Зачем писать такой код?
Во что компилируется такой код?
http://arhipov.blogspot.com.ee/2015/11/finalfinallyfinalize.html
final
finally
finalize
public static int foo() {
try {
return 0;
}
finally {
return 42;
}
}
finally
public static int foo() {
try {
throw new RuntimeException();
}
finally {
return 42;
}
}
finally
public static void main(String[] args) {
try {
throw new NullPointerException("NPE 1");
} catch (NullPointerException e) {
throw new NullPointerException("NPE 2");
} finally {
return;
}
}
finally
Singleton
- instance
- Singleton
+ getInstance(): Singleton
0..1
public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new Singleton();
}
return instance;
}
}
public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new Singleton();
}
return instance;
}
}
public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new Singleton();
}
return instance;
}
}
public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new Singleton();
}
return instance;
}
}
public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new Singleton();
}
return INSTANCE;
}
}
public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
synchronized(Singleton.class){
INSTANCE = new Singleton();
}
}
return INSTANCE;
}
}
public class Singleton {
private static volatile
Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
synchronized(Singleton.class){
INSTANCE = new Singleton();
}
}
return INSTANCE;
}
}
public class Singleton {
private static volatile
Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
synchronized(Singleton.class){
INSTANCE = new Singleton();
}
}
return INSTANCE;
}
}
public class Singleton {
private static volatile
Singleton INSTANCE = null;
private Singleton() {}
public static Singleton getInstance() {
if(INSTANCE == null) {
synchronized(Singleton.class){
INSTANCE = new Singleton();
}
}
return INSTANCE;
}
}
Горец…
Горец… …и…
Горец… …и… …ещё один горец
Горец… …и… …ещё один горец
Помните о разных
загрузчиках, когда
используете синглтоны!
Как сериализовать синглтон?
Зачем?!
public enum Singleton {
INSTANCE
}
This slide is intentionally left blank
“What would you add to Java? “
“What would you add to Java? “
“How would you implement it?”
Вопросы о JDK
Что такое WeakReference?
Как получить результат вызова
хранимой процедуры (БД)?
Как получить результат вызова
хранимой процедуры (БД)?
String proc = "{call proc(?,?)}";
stmt = con.prepareCall(proc);
stmt.setInt(1, 10);
stmt.registerOutParameter(2, Types.VARCHAR);
stmt.executeUpdate();
String result = stmt.getString(2);
Как получить результат вызова
хранимой процедуры (БД)?
String proc = "{call proc(?,?)}";
stmt = con.prepareCall(proc);
stmt.setInt(1, 10);
stmt.registerOutParameter(2, Types.VARCHAR);
stmt.executeUpdate();
String result = stmt.getString(2);
Puzzlers
Map<String, String> m1 = stringsMap();
// {a=aaaaa, b=bbbbb}
Map<String, String> m2 = numbersMap();
// {a=11111, b=22222}
m2.replaceAll(m1::put);
System.out.println(m1);
System.out.println(m2);
Java 8 Puzzlers: The Strange, the Bizarre, and the Wonderful
1) Мапы поменяются местами
2) Обе мапы будут иметь содержание как в м2
3) Обе мапы будут иметь содержание как в м1
4) Этот код не компилируется!
Map<String, String> m1 = stringsMap();
// {a=aaaaa, b=bbbbb}
Map<String, String> m2 = numbersMap();
// {a=11111, b=22222}
m2.replaceAll(m1::put);
System.out.println(m1);
System.out.println(m2);
Java 8 Puzzlers: The Strange, the Bizarre, and the Wonderful
Map<String, String> m1 = stringsMap();
// {a=aaaaa, b=bbbbb}
Map<String, String> m2 = numbersMap();
// {a=11111, b=22222}
m2.replaceAll(m1::put);
System.out.println(m1); // {a=11111, b=22222}
System.out.println(m2); // {a=aaaaa, b=bbbbb}
Java 8 Puzzlers: The Strange, the Bizarre, and the Wonderful
1) Мапы поменяются местами
2) Обе мапы будут иметь содержание как в м2
3) Обе мапы будут иметь содержание как в м1
4) Этот код не компилируется!
Вопросы о дизайне
(System design questions)
Как реализовать
сокращатель ссылок?
А теперь всё вместе!
Никакие результаты интервью,
тестовых заданий, энциклопедические знания
не показывают,
Никакие результаты интервью,
тестовых заданий, энциклопедические знания
не показывают,
КАК ЭТОТ ЧЕЛОВЕК БУДЕТ РАБОТАТЬ
TechTrain 2019 - (Не)адекватное техническое интервью

TechTrain 2019 - (Не)адекватное техническое интервью

  • 1.
  • 3.
    https://twitter.com/mxcl/status/608682016205344768 “Google: 90% ofour engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.” Max Howell @mxcl
  • 4.
    Приходит к нам,значит, Ерлангист. А мы ему кусок кода на С++, "где-то тут критический баг, поправь. Два часа тебе на изучение JVM". https://www.facebook.com/aleksey.shipilev/posts/10154469128968049?pnref=story
  • 5.
    https://www.facebook.com/aleksey.shipilev/posts/10154469128968049?pnref=story Приходит к нам,значит, Ерлангист. А мы ему кусок кода на С++, "где-то тут критический баг, поправь. Два часа тебе на изучение JVM". На самом деле, у нас в проектах ramp-up даже крутейших инженеров занимает от 3 месяцев. [….] Никто в своём уме не будет думать, что чувак сможет правильно что-то починить, если он не знает кодобазы, прошлого опыта, и проч.
  • 6.
    https://www.facebook.com/aleksey.shipilev/posts/10154469128968049?pnref=story Приходит к нам,значит, Ерлангист. А мы ему кусок кода на С++, "где-то тут критический баг, поправь. Два часа тебе на изучение JVM". На самом деле, у нас в проектах ramp-up даже крутейших инженеров занимает от 3 месяцев. [….] Никто в своём уме не будет думать, что чувак сможет правильно что-то починить, если он не знает кодобазы, прошлого опыта, и проч.
  • 7.
  • 8.
    5 минутСвоё мнениео кандидате вы составляете за первые 5 минут общения. Остальное время вы используете лишь для того, чтобы убедиться, или разубедиться, в своём мнении.
  • 9.
  • 10.
  • 11.
    Какие вопросы бывают? Алгоритмическиезадачки Вопросы на знание ЯП ( Java )
  • 12.
    Какие вопросы бывают? Алгоритмическиезадачки Вопросы на знание ЯП ( Java ) Вопросы на знание стандартной библиотеки ( JDK )
  • 13.
    Какие вопросы бывают? Алгоритмическиезадачки Вопросы на знание ЯП ( Java ) Вопросы на знание стандартной библиотеки ( JDK ) Вопросы на знание фреймворков ( Spring )
  • 14.
    Какие вопросы бывают? Алгоритмическиезадачки Вопросы на знание ЯП ( Java ) Вопросы на знание стандартной библиотеки ( JDK ) Вопросы на знание фреймворков ( Spring )
  • 15.
  • 16.
    Какие вопросы бывают? Вопросыо дизайне ( как бы ты сделал… )
  • 17.
    Какие вопросы бывают? Вопросыо дизайне ( как бы ты сделал… ) Общие вопросы по программированию
  • 18.
    Какие вопросы бывают? Вопросыо дизайне ( как бы ты сделал… ) Общие вопросы по программированию Вопросы о предыдущем опыте
  • 19.
    This slide isintentionally left blank
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
    public class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
  • 25.
    public class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class Solution { public TreeNode invertTree(TreeNode root) { if(root == null){ return root; } TreeNode node = new TreeNode(root.val); node.left = invertTree(root.right); node.right = invertTree(root.left); return node; } }
  • 26.
    public class TreeNode{ int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class Solution { public TreeNode invertTree(TreeNode root) { if(root == null){ return root; } TreeNode node = new TreeNode(root.val); node.left = invertTree(root.right); node.right = invertTree(root.left); return node; } }
  • 27.
    public class Solution{ public TreeNode invertTree(TreeNode root) { if (root == null) { return null; } final Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while(!queue.isEmpty()) { final TreeNode node = queue.poll(); final TreeNode left = node.left; node.left = node.right; node.right = left; if(node.left != null) { queue.offer(node.left); } if(node.right != null) { queue.offer(node.right); } } return root; } }
  • 28.
    Напишите функцию дляреверса строки
  • 29.
    Найдите общего предкадля двух вершин в бинарном дереве Напишите функцию для реверса строки
  • 30.
    Найдите общего предкадля двух вершин в бинарном дереве Напишите функцию для реверса строки Реализуйте BFS и DFS для обхода дерева, дайте оценку времени исполнения и потребления памяти …
  • 31.
    Найдите общего предкадля двух вершин в бинарном дереве Напишите функцию для реверса строки Реализуйте BFS и DFS для обхода дерева, дайте оценку времени исполнения и потребления памяти … Что мы пытаемся понять задавая такие вопросы?
  • 32.
    Create a functionthat takes a string as a parameter. This function will return an integer calculated with the number of occurrence of characters in String used as parameter: Magic number:
  • 33.
    Create a functionthat takes a string as a parameter. This function will return an integer calculated with the number of occurrence of characters in String used as parameter: Magic number: result = number of 'a' * number of 'p' or 'r' or 't' or 'f' + number of 'e' * number of 'n' or 'm' - number of ' ' * number of 'a' + number of 'n' or 'm'
  • 34.
    Create a functionthat takes a string as a parameter. This function will return an integer calculated with the number of occurrence of characters in String used as parameter: Magic number: magicNumber("i love java"); // returns -4 result = number of 'a' * number of 'p' or 'r' or 't' or 'f' + number of 'e' * number of 'n' or 'm' - number of ' ' * number of 'a' + number of 'n' or 'm'
  • 35.
    result = numberof 'a' * number of 'p' or 'r' or 't' or 'f' + number of 'e' * number of 'n' or 'm' - number of ' ' * number of 'a' + number of 'n' or 'm' Что такое “number of”? Как это считать??
  • 36.
  • 38.
  • 39.
  • 40.
  • 41.
  • 43.
  • 44.
  • 45.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 46.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 47.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 48.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 49.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 50.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 51.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 52.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 53.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 54.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 55.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 56.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 Вопрос: когда поиск остановится? “Найдите самую релевантную комбинацию для поиска из трёх слов.”
  • 57.
    2 4 1744 71 119 554 661 669 771 818 6 8 19 21 25 41 52 59 111 255 414 7 9 33 37 39 55 57 99 101 241 340 “Найдите самую релевантную комбинацию для поиска из трёх слов.” Вопрос: когда поиск остановится? Кто должен спросить этот вопрос?
  • 58.
  • 59.
  • 60.
    FizzBuzzWrite a programthat prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".
  • 61.
    Вопросы на знаниеЯП (Java edition) Классика жанра
  • 62.
  • 63.
  • 64.
    В чём разницамежду абстрактным классом и интерфейсом?
  • 65.
    Параметры методов вJava передаются по значению или по ссылке?
  • 66.
    class Foo { voidboo() { class Bar {} Bar b = new Bar(); System.out.println(b); } }
  • 67.
    class Foo { voidboo() { class Bar {} Bar b = new Bar(); System.out.println(b); } } Компилируется ли это код?
  • 68.
    class Foo { voidboo() { class Bar {} Bar b = new Bar(); System.out.println(b); } } Компилируется ли это код? Зачем писать такой код?
  • 69.
    class Foo { voidboo() { class Bar {} Bar b = new Bar(); System.out.println(b); } } Компилируется ли это код? Зачем писать такой код? Во что компилируется такой код?
  • 70.
  • 71.
    public static intfoo() { try { return 0; } finally { return 42; } } finally
  • 72.
    public static intfoo() { try { throw new RuntimeException(); } finally { return 42; } } finally
  • 73.
    public static voidmain(String[] args) { try { throw new NullPointerException("NPE 1"); } catch (NullPointerException e) { throw new NullPointerException("NPE 2"); } finally { return; } } finally
  • 74.
    Singleton - instance - Singleton +getInstance(): Singleton 0..1
  • 75.
    public class Singleton{ private static Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { INSTANCE = new Singleton(); } return instance; } }
  • 76.
    public class Singleton{ private static Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { INSTANCE = new Singleton(); } return instance; } }
  • 77.
    public class Singleton{ private static Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { INSTANCE = new Singleton(); } return instance; } }
  • 78.
    public class Singleton{ private static Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { INSTANCE = new Singleton(); } return instance; } }
  • 79.
    public class Singleton{ private static Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { INSTANCE = new Singleton(); } return INSTANCE; } }
  • 80.
    public class Singleton{ private static Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { synchronized(Singleton.class){ INSTANCE = new Singleton(); } } return INSTANCE; } }
  • 81.
    public class Singleton{ private static volatile Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { synchronized(Singleton.class){ INSTANCE = new Singleton(); } } return INSTANCE; } }
  • 82.
    public class Singleton{ private static volatile Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { synchronized(Singleton.class){ INSTANCE = new Singleton(); } } return INSTANCE; } }
  • 83.
    public class Singleton{ private static volatile Singleton INSTANCE = null; private Singleton() {} public static Singleton getInstance() { if(INSTANCE == null) { synchronized(Singleton.class){ INSTANCE = new Singleton(); } } return INSTANCE; } }
  • 84.
  • 85.
  • 86.
  • 87.
    Горец… …и… …ещёодин горец Помните о разных загрузчиках, когда используете синглтоны!
  • 88.
  • 89.
  • 90.
  • 91.
    This slide isintentionally left blank
  • 92.
    “What would youadd to Java? “
  • 93.
    “What would youadd to Java? “ “How would you implement it?”
  • 94.
  • 95.
  • 96.
    Как получить результатвызова хранимой процедуры (БД)?
  • 97.
    Как получить результатвызова хранимой процедуры (БД)? String proc = "{call proc(?,?)}"; stmt = con.prepareCall(proc); stmt.setInt(1, 10); stmt.registerOutParameter(2, Types.VARCHAR); stmt.executeUpdate(); String result = stmt.getString(2);
  • 98.
    Как получить результатвызова хранимой процедуры (БД)? String proc = "{call proc(?,?)}"; stmt = con.prepareCall(proc); stmt.setInt(1, 10); stmt.registerOutParameter(2, Types.VARCHAR); stmt.executeUpdate(); String result = stmt.getString(2);
  • 99.
  • 100.
    Map<String, String> m1= stringsMap(); // {a=aaaaa, b=bbbbb} Map<String, String> m2 = numbersMap(); // {a=11111, b=22222} m2.replaceAll(m1::put); System.out.println(m1); System.out.println(m2); Java 8 Puzzlers: The Strange, the Bizarre, and the Wonderful
  • 101.
    1) Мапы поменяютсяместами 2) Обе мапы будут иметь содержание как в м2 3) Обе мапы будут иметь содержание как в м1 4) Этот код не компилируется! Map<String, String> m1 = stringsMap(); // {a=aaaaa, b=bbbbb} Map<String, String> m2 = numbersMap(); // {a=11111, b=22222} m2.replaceAll(m1::put); System.out.println(m1); System.out.println(m2); Java 8 Puzzlers: The Strange, the Bizarre, and the Wonderful
  • 102.
    Map<String, String> m1= stringsMap(); // {a=aaaaa, b=bbbbb} Map<String, String> m2 = numbersMap(); // {a=11111, b=22222} m2.replaceAll(m1::put); System.out.println(m1); // {a=11111, b=22222} System.out.println(m2); // {a=aaaaa, b=bbbbb} Java 8 Puzzlers: The Strange, the Bizarre, and the Wonderful 1) Мапы поменяются местами 2) Обе мапы будут иметь содержание как в м2 3) Обе мапы будут иметь содержание как в м1 4) Этот код не компилируется!
  • 103.
  • 104.
  • 105.
  • 107.
    Никакие результаты интервью, тестовыхзаданий, энциклопедические знания не показывают,
  • 108.
    Никакие результаты интервью, тестовыхзаданий, энциклопедические знания не показывают, КАК ЭТОТ ЧЕЛОВЕК БУДЕТ РАБОТАТЬ