Некоторые датели перед собесом предлагают заполнить опросник. Сюда их можно выкладывать :)
Вот пример (ответы мои, поэтому м.б. небезупречны):
JAVA
>>> Объясните как работает метод get класса TreeMap
get(Object key) возвращает значение (value), соответствующее переданному ключу (key) или null если такого ключа нет.
>>> В чем преимущества и недостатки работы с Collection.parallelStream(), если сравнивать его с Collection.stream()?
Преимущество - возможное повышение производительности за счёт распараллеливания операций над элементами коллекции.
Недостаток - возможное снижение производительности при неправильном выборе типа стрима (например, время на переключение между элементами может превысить возможный выигрыш на распараллеливание при малом объёме вычислений).
>>> Как избегать или исправлять взаимные блокировки потоков?
- использовать неблокирующие алгоритмы;
- использовать атомарные классы;
- использовать Concurrent-коллекции.
>>> Где можно использовать класс WeakHashMap и как он работает?
WeakHashMap — это HashMap, у которого ключами являются слабые ссылки. Поэтому, если во время ближайшей сборки мусора будет обнаружено, что на объект существует только ссылка в WeakHashMap, то из WeakHashMap будет удалена вся пара "ключ-значение", связанная с этим объектом.
WeakHashMap можно использовать для хранения временных значений и не заботиться об их удалении что снижает объём кода.
SPRING
>>> В чем разница между prototype и singleton бинами? Какой тип можно использовать потокобезопасно?
- singleton всегда возвращает ссылку на один и тот же объект. Он потокбезопасен;
- prototype всегда возвращает ссылки на разные объекты. Он не потокбезопасный, т.к. он не гарантирует что один и тот же экземпляр будет вызываться только в 1 потоке.
>>> Как исправлять циклическую зависимость между бинами? Например, service инжектит repository и в то же время repository инжектит service.
Использовать ленивую инициализацию бинов или использовать сеттеры вместо конструкторов
SQL
>>> Объясните разницу между типами JOIN
Внутреннее соединение даёт таблицу, в которую включены элементы, присутствующие во всех исходных таблицах. Внешнее добавляет к этому элементы одной (LEFT, RIGHT) или всех (FULL), присутствующие не во всех таблицах. Значения этих элементов будет заменено на NULL
>>> Для чего нужен оператор HAVING ?
HAVING используется для фильтрации вывода уже сгруппированной таблицы. Пишется после GROUP BY
>>> Что такое рекурсивные запросы и где они применяются?
Рекурсивный запрос - особый вид запроса. Он рекурсивный.
Используется для выборки данных из нескольких таблиц при иерархической организации данных.
Это очевидно, но на всякий случай повторю. Ответы на вопросы лучше давать своими словами на основе собственного понимания вопроса. Пусть коряво, но от себя. Это должно произвести лучшее впечатление (у дателей тоже могут быть компы и люди, умеющие гуглить). Удачи!
wan-derer.ru
40 уровень
Вопрос к собеседованию (опросники от компаний)
Комментарии (18)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сергей Java Developer в Сбер Expert
15 февраля 2021, 13:03
Это не ответ на вопрос. Тебе нужно сказать как происходит получение значения value. Последовательность действий.
Singleton используется всеми потоками. Он не потокбезопасный.
Prototype тоже может вызываться из разных потоков.
Таблица в которую включены элементы, присутствующие во всех исходных таблицах называется внешним соединением.
+1
hidden #2322530
15 февраля 2021, 13:14
почему? если Spring гарантирует единственный экземпляр этого бина во всём контексте для любого потока.
prototype при попытке получения экземпляра бина из контекста будет создавать новый объект. что из одного потока, что из нескольких.
0
Сергей Java Developer в Сбер Expert
15 февраля 2021, 13:22
Т.е. во всем приложении будет один экземпляр этого бина. Все потоки будут вызывать методы у одного объекта.
Вообще потокобезопасность зависит от того как написан сам класс.
+2
hidden #2322530
15 февраля 2021, 13:30
само собой. но я думаю что вопрос касался именно экземпляров. без учета внутренней логики. а может они имели что ещё другое
0
Сергей Java Developer в Сбер Expert
15 февраля 2021, 13:49
По поводу prototype.
У нас например есть бин С с скоупом prototype. Он внедряется в бины A и B.
В бинах А и B будут разные экзкмпляры бина С, т.к. при внедрении мы получаем каждый раз новый экземпляр из контекста.
Но если разные потоки будут обращаться например к бину A (в котором есть бин С), то все они будут использовать один экземпляр бина С.
Решить проблему можно тремя способами, например изменить proxyMode у бина C
https://www.baeldung.com/spring-inject-prototype-bean-into-singleton
https://stackoverflow.com/questions/7621920/scopeprototype-bean-scope-not-creating-new-bean 0
hidden #2322530
15 февраля 2021, 14:27
и зачем это делать, разве результат будет не таким же как использование синглтона?
0
Сергей Java Developer в Сбер Expert
15 февраля 2021, 15:18
При обращении к бину А (в котором есть бин С), будет использован один экземпляр бина С (который был при создании бина А).
При обращении к бину А (в котором есть бин С), каждый раз будет использован новый экземпляр бина С.
0
hidden #2322530
15 февраля 2021, 15:23
понятно. но не думаю что тот вопрос подразумевал именно этот случай.
но в любом случае тогда singleton можно использовать потокобезопасно. потому что он всё равно всем заинжектится и будет у всех один.
0
hidden #2322530
15 февраля 2021, 12:36
>>> В чем преимущества и недостатки работы с Collection.parallelStream(), если сравнивать его с Collection.stream()?
ещё недостаток параллельного стрима в том, что данные подаются в разнобой.
по умолчанию Collection.stream() это sequential stream (последовательный)
0
Алексей Мирный Backend Developer
15 февраля 2021, 12:17
=)))
Точно такие же вопросы прислали для приглашения на собес😂
0
Anonymous #2489173
31 декабря 2020, 00:32
>>> Что такое рекурсивные запросы и где они применяются?
Рекурсивный запрос - особый вид запроса. Он рекурсивный.
Не пойму, это перл или рекурсивное определение, которое должно иллюстрировать понятие рекурсии
+1
wan-derer.ru
31 декабря 2020, 06:26
Чтобы понять рекурсию надо понять рекурсию :)
0
hidden #2444690
30 декабря 2020, 13:36
Задумалась... То есть, чтобы пройти собес, мне нужно знать ответы на эти вопросы... Как-то я не ту теорию по-моему читаю, если это так) Не уверена, что правильно поняла, что значит "опросник", мне нравится вот эта подборка для подготовки гитхаб
+2
wan-derer.ru
30 декабря 2020, 16:52
На эти и многие другие. На долее высоких уровнях Javarush начинаются статьи с подборками вопросов по пройденным темам и не только.
Вот, например, вакансия: https://hh.ru/vacancy/41260321. Чтобы на неё откликнуться надо ответить на ряд вопросов и написать небольшой код.
За подборку спасибо!
+1
hidden #2444690
30 декабря 2020, 17:55
Понятно) спасибо)
0
funbiscuit
29 декабря 2020, 18:58
Немного странный ответ на различие между prototype и singleton.
Сам вопрос немного странный, потому что не указано вообще ничего. Если у нас в синглтоне будет храниться какое-то состояние и при этом не будет организован безопасный параллельный доступ, то будет плохо. В то же время, если у нас бины prototype создаются каждым потоком отдельно и используются только в нем, то код будет безопасным. В общем вопрос из разряда "додумай сам", но тут можно додумать до любого ответа.
+2
wan-derer.ru
28 декабря 2020, 11:06
Вот ещё опросничек (совсем простой): http://radius-etl.ru/vacansies/JavaDev/javaDev.html
0
wan-derer.ru
28 декабря 2020, 10:48
Да! Этот опросник к этой вакансии (думаю, есть смысл их указывать)
0