Основы Java, коллекции, OOP, лямбды, иммутабельность
Основы Java, коллекции, OOP, лямбды, иммутабельность
#
1. HashMap расширилась. Добавили в неё 13 элементов, потом удалили 2 что произойдет?
#
2. В HashMap вставляем 10 тыс. ключ-значений, это все разные объекты. Как сделать так, что с вероятностью 99% мы получили значение по ключу за константное время? - один вариант: сразу создать очень большую мапу 10 млрд значений
#
3. Какие коллекции позволяют дублировать, какие не позволяют?
#
4. Переменная не помечена словом final, но изменяться она не может?
#
5. Хорошо ли делать длинную цепочку наследования на классах?
#
6. Есть класс, у которого 2 поля int и java.util.date. Как сделать immutable class из этого?
#
7. Есть key, value. Программист создает Map с дженериками, где key - собственный класс, а value - string. Что ему нужно сделать, чтобы использовать key?
#
8. Есть список из 10 объектов. Делаю стрим map, filter, и другие нетерминальные операции. Сохраняю ссылку на стрим. Потом добавлю новые объекты в список. В самом конце, беру ссылку на стрим, вызываю терминальную операцию toList(). Какое количество объектов стрим обработает: изначальное или новое? Или ошибка?
#
9. Я использую массив в качестве ключа для HashMap. Во время код-ревью что вы мне скажете?
#
10. В таблице первичный ключ Х, но нужно искать не по Х, а по У. Когда грузишь мапу, что ты можешь сделать, чтобы ключь стал другим в мапе, но ты не потеряешь данные? Зачем я могу это делать?
#
11. Компилятор требует при использовании лямбды выражения либо final, либо effectively final?
#
12. Ты передаешь переменные. Параметры через конструктор. Они объявлены как final. Это иммутабельность?
#
13. У класса переопределили метод. Как вызвать метод предка из переопределенного класса? Представим, что метод приватный.
#
14. Создал иммутабельный класс, в нем 10 полей, хочу использовать свой класс как ключ в HashMap. Что делать?
#
15. Объект типа User с двумя полями String firstName, String lastName, без реализации hashCode(). Объекты User используются в качестве ключей в HashMap. Сначала записали в HashMap с ключом user1. Потом создали user2 с такими же firstName, lastName, пробуем по ключу user2 вытащить из HashMap данные. Что будет?
#
16. Сможет ли сборщик мусора удалить два объекта ссылающиеся друг на друга?
#
17. Если в интерфейсе есть один дефолтный метод, то его можно использовать как функциональный интерфейс?
#
18. Если мы переопределяем поведение родительского метода, можем ли мы изменить тип исключения, которое выбрасывает родительское?
#
19. Предположим у тебя есть объект, который представляет собой List листов стрингов. С помощью Stream API тебе надо найти String с наибольшей длиной
#
20. Статический блок, переменная статическая не final, она проинициализирована в блоке инициализации и в самом поле. Какое значение переменная примет?
#
21. Берем не final переменную. Инициализируем переменную через поле и через конструктор. Какое значение переменная примет?
#
22. Есть три способа пройтись по коллекции. Расскажи про них и какой в каком случае использовать?
#
23. Что будет если на вход map() и flatMap() приходит null
#
24. Как скопировать объект? Сделать копию объекта
#
25. Есть ArrayList на 10 элементов. Хочу получить доступ к пятому элементу. Почему доступ будет O(1)? Как сработает доступ по индексу? Если в ArrayList лежат strings?
#
26. Хочу создать LinkedList из strings. Где будут лежать strings?
#
27. У нас есть некий объект Юзер. Есть три параметра. Как инкапсулировать параметры?
#
28. Есть класс Parent и от него наследуется класс Child. В Parent есть три метода. Как нам реализовать методы, чтобы ими могли пользоваться только наследуемые.
#
29. Есть класс внутри которого находится статический параметр. Если я создам 50 инстансов этого класса и буду менять этот статический параметр, то что будет?
#
30. Создал Stream. Произвел операцию. Смогу ли я обратиться к этому стриму еще раз?
#
31. Нужно от сортировать List с какими то классами. Стринговыми юзерами. а стринговые юзеры они храняться в пакете который мы получили из мавена. Что тут лучше использовать?
#
32. Если мы напишем stream.filter.filter.filter что произойдет?
#
33. Как на практике проверить, что вместо родителя можно подставить наследника?
#
34. С чего начинается поиск ресурсов для удаления GC. Как GC ищет первые ссылки для удаления?
#
35. Представим, что у нас есть приложение, которое нормально обрабатывает 100 RPS. Жрет 250 мб оперативки. Мы захотели его ускорить и выдали ему 32 гб оперативки. Дадим на него теже 100 RPS. Измениться ли профиль ответа? Ускориться ли работа? Как будет наполняться Heap?
#
36. Как можно сравнить объекты между собой кроме equals и hashcode
#
37. Есть два класса. Один класс используется как ключ для мапы, другой класс используется только для значений в мапе. Как ты будешь реализовывать контракт hashCode и equals в этих классах
#
38. TreeSet. Есть элементы от 0 до n. Начинаю последовательно вставлять в TreeSet. Какая будет высота дерева?
#
39. Есть список состоящий из одного миллиона объектов. Нужно отыскать все дубликаты использую минимальный объем памяти
#
40. Есть класс User. Внутри есть поле класса Address. В классе Address есть поле класса Building. Хочу по user получить номер здания, в котором живет. В этой цепочке всё может быть Null. Мы не хотим NullPointerException. Как это сделать? Какой уникальный безопасный метод нужно создать?
#
41. Если в кетч поймали исключение, начали обрабатывать и словили еще одно исключение. Что будет?
#
42. Что можно сделать с List, но нельзя сделать с Queue
#
43. Как сделать копию объекта не используя стандартные методы?
#
44. Предположим у нас есть лист Юзеров. У Юзера есть логин. Как преобразовать лист в мапу, где ключ будет логин, а значение будет Юзер.
#
45. Есть бинарное дерево упорядоченное слево на право. Есть ссылка на корень дерева. Нужно вывести все элементы дерева в порядке возрастания.
#
46. Предположим есть обхект, который представляет собой List<List>. С помощью Stream нужно найти String с наибольшей длиной
#
47. Тебе с фронтенда приходит enum. Тебе надо сравнить два enum. Что ты будешь использовать? equals или == и почему?
#
48. Нужно List превратить в List. Что используешь для задачи перегнать один тип объектов в другой? Классический цикл или Java Stream API?
#
49. Я создал интерфейс там есть абстрактный метод и дефолтный метод. Это будет являться функциональным интерфейсом?
#
50. We have a large text file, we want to count all the words. What Java collection you will use?
#
51. We have a list of Strings. There are some duplicates. How to remove duplicates without loops and if statements?
#
52. Есть код, написанный на Java. Какие этапы он проходит перед тем, как он будет исполнен на машине? И что происходит при исполнении на машине?
#
53. Есть наш класс, в котором переопределили hashCode() так, что каждый раз возвращается новое рандомное значение (return Random.nextInt()). Мы параметризовали этим классом HashSet. Изменится ли сложность contains() у HashSet? Как будет работать HashSet?
#
54. Нужно реализовать энциклопедию: книжка, в которой написаны слова и их значения. Все слова упорядочены по алфавиту. Какую структуру, структуры данных ты бы использовал?
#
55. I put a key-value pair into the HashMap. Then another key (different from the first key) generates the same hashcode. What is the HashMap next scenario?
#
56. I’ve created final HashMap. Can I change elements of HashMap?
#
57. А как сделать, чтобы при получении ссылочного типа через getter я не мог его изменять внутри?
#
58. Ты создал параметризованный класс. Потом ты где-то в коде насоздавал этих классов, параметризованных разными классами. В Runtime все эти классы будут разными?
#
59. Открываем ресурс в конструкции try-with-resources. В логическом блоке вылетело исключение. Ресурс будет закрываться, но процессе закрытия что-то произошло с сетью и тоже вылетело исключение. Ресурс закроется?
#
60. Пишем Generic List. Что это будет значить? Какие объекты можем положить в этот лист?
#
61. Есть Pair a и Pair b. Содержимое одинаковое. Ты сравниваешь через равно, через тройное равно, через equals(). Какие результаты будут? Как в ключевом слове record?
#
62. Создашь переменную внутри цикла. Что с ней произойдет в Куче, после того, как одна итерация цикла пройдет? Когда она вычистится?
#
63. Мы делаем много вставок в конец ArrayList. Иногда хватает места, иногда не хватает, приходится расширяться. Какая средняя сложность операции? Чаще встречается плохой сценарий, когда надо расширяться?
#
64. Есть два списка очень больших, с млн элементов в каждом. ArrayList и LinkedList. Мы просто итерируемся foreach по каждому. Где быстрее процедура итерации?
#
65. Хотим использовать как ключ HashMap свой класс иммутабельный. В классе очень много полей 20-30, многие из них опциональные. Я не хочу создавать поля через конструктор объекта. Какую более удачную конструкцию можешь предложить для создания иммутабельных объектов с кучей опциональных полей?
#
66. Есть интерфейс. В нем один метод. В сигнатуре метода я не написал, что он кидает какие-либо исключения. Реализую этот интерфейс, хочу из этого метода кинуть проверяемое исключение. Могу ли я так сделать?
#
67. В TreeMap 100 элементов. Сколько там будет сравнений, сколько проходов в худшем случае, пока он не найдет элемент?
#
68. Ситуация с двумя списками: ArrayList vs LinkedList. Элементы одинаковые. Ты постоянно добавляешь элемент в конец каждого списка. И итерируешься полностью по листу. Что будет быстрее отрабатывать?
#
69. List очень большой, а памяти очень мало. На копирование даже половины исходного списка не хватит. Как с этим побороться?
#