uk
Feedback
Реальные задачи с собеседований | Java

Реальные задачи с собеседований | Java

Відкрити в Telegram

Буду сюда выкладывать реальные задачи и вопросы с собеседований, без копипаста с интернета и других каналов) Ссылка для друга - https://t.me/+K4vJFdalwlthYTQy Прислать задачи, реклама - @privatevoidmain

Показати більше
4 354
Підписники
+124 години
+87 днів
+1430 день
Архів дописів
синхро Написать метод, который принимает массив чисел и считает сумму параллельно. #synchro | Прислать задачу | Подписаться

СБЕР Даны два листа стрингов. Написать метод возвращающий совпадения #sber | Прислать задачу | Подписаться

Авито (#repeat) снова прислали эту задачу). — https://t.me/java_interviews/533 #avito | Подписаться

2гис ( не 100%) В комментариях дан скл-запрос. Нужно сделать аналог этого запроса в методе join() #2gis | Прислать задачу | П
2гис ( не 100%) В комментариях дан скл-запрос. Нужно сделать аналог этого запроса в методе join() #2gis | Прислать задачу | Подписаться

2гис Инвертировать дерево #2gis | Прислать задачу | Подписаться
2гис Инвертировать дерево #2gis | Прислать задачу | Подписаться

у кого есть задачи с собесов, присылайте - @privatevoidmain🫡
у кого есть задачи с собесов, присылайте - @privatevoidmain🫡

задачи закончились, буду публиковать мемы😏😂

Т-банк (стажировка, 2 задача) Завершится ли программа или нет? И если завершится, то что будет выведено в конце?
import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Increment { private static int counter1 = 0; private static int counter2 = 0; public static void main(String[] args) throws InterruptedException { int tasksCount = 100_000; CountDownLatch latch = new CountDownLatch(tasksCount); ExecutorService executor = Executors.newFixedThreadPool(100); for (int i = 0; i < tasksCount; i++) { executor.submit(() -> { counter1++; counter2++; latch.countDown(); }); } latch.await(); System.out.println(counter1); System.out.println(counter2); System.exit(0); } }
#tbank | Прислать задачу | Подписаться

х5 #sql Вывести список отделов, количество сотрудников в которых не превышает 3 человек
-- Отдел: CREATE TABLE department ( id INTEGER NOT NULL, -- идентификатор отдела name VARCHAR(128) NOT NULL, -- название отдела PRIMARY KEY (id) ); -- Сотрудник: CREATE TABLE employee ( id INTEGER NOT NULL, -- идентификатор сотрудника department_id INTEGER NOT NULL, -- идентификатор отдела manager_id INTEGER, -- идентификатор начальника name VARCHAR(128) NOT NULL, -- имя сотрудника salary DECIMAL NOT NULL, -- оклад сотрудника PRIMARY KEY (id), FOREIGN KEY (department_id) REFERENCES department(id), FOREIGN KEY (manager_id) REFERENCES employee(id) );
#x5 | Прислать задачу | Подписаться

Всех с окончанием рабочей недели) #fridaymemes

Сбер Дописать метод +рефакторинг
/* Спроектировать класс "Банкомат", хранящий купюры в различных номиналах., Предусмотреть методы загрузки, выгрузки, расчета остатка, выдачи суммы клиенту (в номинальном разрезе)*/, public class Atm {     Hashtable<Short, Integer> denominations; // номиналы /     public void load(Hashtable<Short, Integer> denominations) {         this.denominations = new Hashtable<>();         Object[]keys = denominations,keySet().toArray();         for (int i = 0; i < keys.length; i++) {             this.denominations.put((Short)keys[i], denominations.get((Short)keys[i]));         }     } //Выгружает банкноты, оставляя пустую емкость. //@return карта "номинал" -> число выгруженных купюр public Hashtable<Short, Integer> unload() {     Hashtable<Short, Integer> result = new Hashtable<>();     Object[] keys = denominations.keySet().toArray();         for (int i = 0; i < keys.length; i++) {             result.put((Short)keys[i], denominations.get((Short)keys[i]));         }         return result;     }      //Рассчитывает остаток в банкомате. @return*/ public Integer getRest() {     int result = new Integer(0);     Object[] keys = denominations.keySet().toArray();,         for (int i = 0; i < keys.length; i++) {             result += (Integer)denominations.get((Short)keys[i]) * (Short)keys[i];         }         return result;     } } public HashTable<Short, Integer> dispense (Integer amount) { //TODO return null; }
#sber | Прислать задачу | Подписаться

Т-банк (стажировка) Сделать код ревью
import java.util.UIID; /** * Сервис бронирования места в самолете. * Клиент с купленным билетом может за дополнительную плату выбрать конкретное место. * Базовая цена мест определяется тарифами (внешним сервисом). * Для клиентов с определенными тарифами (PREMIUM, ULTRA) необходимо сделать скидку при оплате. * При бронировании клиенту выставляется инвойс на оплату. Управление оплатой осуществляется в стороннем сервисе. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Бронирование. * @param seatCode код места (например 19A) * @param ticketId ид билета */ @Transactional public void bookSeat(String seatCode, UIID ticketId) { var ticket = ticketRepository.findById(ticketId); // бронируем var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); // ищем базовый тариф для выбранного места в самолете var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); // ищем данные о клиенте long userId = (long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Найден пользователь " + userData.getFio() + " номер документа " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { // скидка 50% price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { // скидка 20% price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); // выставляем платежку paymentClient.sendInvoice(invoice); } } @Data @Table("seat_booking") public class SeatBooking { @Column private String seatCode; @Column private UUID flightId; @Column private UUID ticketId; @Column private BookingStatus status; } public enum BookingStatus { BOOKED, PAID; }
#tbank | Прислать задачу | Подписаться

Задач осталось на два-три дня🫡 Прислать задачу - @privatevoidmain
Задач осталось на два-три дня🫡 Прислать задачу - @privatevoidmain

Всех с окончанием рабочей недели) #fridaymemes

It-one Запустится ли код? #itone | Прислать задачу | Подписаться
It-one Запустится ли код? #itone | Прислать задачу | Подписаться

Астон Что будет выведено?
class MyCode { public static void main(String[] args) { SuperBase sb = new Base(); Object o = ""; sb.mm(o); sb.mm(""); } static class SuperBase { public int i = 3; protected void mm(Object o) { System.out.println("Object " + i); } private void mm(String o) { System.out.println("String " + i); } } public static class Base extends SuperBase { public Base() { i = 5; } } }
#aston | Прислать задачу | Подписаться

СБЕР
# Следующий класс работает в продакшен среде. Класс компилируется и не содержит Runtime исключений. Но у него есть несколько проблем, которые вам предлагается найти их, и предложить идеи по исправлению(рефакторингу), * class Cat4Profile существует и находится в том же пакете public class Cat4 { private final ConcurrentHashMap<byte[], BigDecimal> CACHE = new ConcurrentHashMap<>(); public int jumpsCount = 0; private Cat4Profile cat4Profile; private final DataSource dataSource; public Cat4(DataSource dataSource) { this.dataSource = dataSource; } public void doRandomJumps(int maxJumps) { Random rnd = new Random(); int jumpsToDo = Math.abs(rnd.nextInt()) % maxJumps; for (int i = 0; i < jumpsToDo; i++) { new Thread(() -> { doJump(); }).start(); } } public void setCat4Profile(Cat4Profile cat4Profile) { this.cat4Profile = cat4Profile; } public String getCat4Name() { try { return this.cat4Profile.getCatName(); } catch (NullPointerException e) { return "Max"; } } public void doJump() { this.jumpsCount++; Logger.getLogger(Cat4.class.getName()).fine("Jump!"); } public void doMeow() { Logger.getLogger(Cat4.class.getName()).fine("Meow!"); } public BigDecimal doQuery(byte[] parameters) throws SQLException { Connection conn = null; Statement stmt = null; try { conn = dataSource.getConnection(); stmt = conn.createStatement(); ResultSet resultSet = stmt.executeQuery("select weight from Cat where name = '" + new String(parameters) + "')"); resultSet.next(); return resultSet.getBigDecimal("weight"); } finally { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } public BigDecimal doQueryCached(byte[] parameters) throws SQLException { if (CACHE.get(parameters) != null) return CACHE.get(parameters); BigDecimal weight = doQuery(parameters); CACHE.put(parameters, weight); return weight; } public int getJumpsCount() { int result = jumpsCount; jumpsCount = 0; return result; } public void setJumpsCount() { this.jumpsCount++; } }
#sber | Прислать задачу | Подписаться