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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
4 361
Obunachilar
+124 soatlar
+117 kunlar
+1830 kunlar
Postlar arxiv
Сосчитайте, сколько раз каждое слово встречается в тексте, используя Java Stream API Необходимо преобразовать List<String> в Map<String, Long>, учитывая, что слова в предложениях могут быть разделены несколькими пробелами или табуляциями, а буквы в словах иметь разный регистр. Пример списка:
var list = List.of(
    "  Эта модель    помогает нейросети запоминать правила языка",
"выбирать подходящие слова и связывать их     по смыслу",
"   Также эта нейросеть     помогает превращать введённый текст  " 
);

У вас есть односвязный список, представленный экземплярами класса Node. Список имеет произвольное (и довольно большое) количество элементов. Каждый узел указывает на следующий, последний узел указывает на null.
class Node {
    Node next;
}
Задача: Напишите алгоритм на Java, который инвертирует этот связный список. Нельзя использовать коллекции, массивы и любые встроенные средства языка для работы с коллекциями и библиотеками. Код должен уместиться в 10 строк.

Необходимо реализовать на Java метод, принимающий на вход коллекцию строк и выбрасывающий из переданной коллекции все элементы, начинающиеся на «aaa». Сигнатура необходимого метода должна иметь вид:
public static void filterTripleA(Collection strings);

Дан следующий Java-класс. Необходимо реализовать стандартный метод, осуществляющий сравнение 2-х объектов Person.
Дан следующий Java-класс. Необходимо реализовать стандартный метод, осуществляющий сравнение 2-х объектов Person.

Задача на SQL Вывести департаменты, в которых сотрудников менее 3-х
Задача на SQL Вывести департаменты, в которых сотрудников менее 3-х

Какие проблемы в коде вы видите?
Какие проблемы в коде вы видите?

Сделать код-ревью
@Service
public class UsefullService {
  @Autowired
  private UserRepository userRepository;

  @Autowired
  private CommentRepository commentRepository;

  private Map<Long, List<Comment>> cache = new HashMap<>();

  public Comment addComment(User user, String text) {
    user.setLastActivity(ZonedDateTime.now());
    userRepository.save(user);

    Comment comment = 
      Comment.builder()
        .user(user)
        .text(text)
        .build();

    comment = commentRepository.save(comment);

    if (!cache.contains(user.getId())) {
      cache.put(user.getId(), commentRepository.findAllByUser(user));
    }

    cache.get(user.getId()).add(comment);

    return comment;
  }

  public List<Comment> getComments(User user) {
    if (!cache.contains(user.getId())) {
      cache.put(user.getId(), commentRepository.findAllByUser(user));
    }
    
    return cache.get(user.getId());
  }

}

Что будет выведено в консоль?
public class Test {
    Integer a;

    int getA() {
        return a;
    }

    public static void main(String[] args) {
        Test obj = new Test();
        System.out.println(obj.getA());
    }
}

Довольно частая задача на знание пула интов
    Integer i1 = 128;
    Integer i2 = 128;
    System.out.println(i1 == i2);

    Integer i3 = 127;
    Integer i4 = 127;
    System.out.println(i3 == i4);
}

Вторая задача. Что зедсь не так?
@Service
@RequiredArgsConstructor
public class SaveStarter {

    private final MqSender sender;
    private final ContractRepository contractRepository;

    @Transactional
    public SaveResponse start(BigDecimal price) {
        var contract = new ContractEntity();
        contract.setPrice(price);
        contract.setCreatedDate(LocalDateTime.now());
        contract = contractRepository.save(contract);
        var msg = new SaveMessage();
        msg.setContractId(contract.getId());
        sender.send(msg);
        return new SaveResponse(contract.getId());
    }
}
@Service
@RequiredArgsConstructor
public class SaveListener {

    private final MqListener listener;
    private final ContractRepository contractRepository;
    private final SaveService saveService;

    @RabbitListener(queues = "SAVE_QUEUE")
    public void finalize(SaveMessage message) {
       var contract = new ContractEntity();
       ContractEntity contract = contractRepository.findById(message.getContractId()).orElseThrow();
       saveService.save(contract);
    }
}

Сделать рефакторинг (задача из одного красного банка)
@RestController
@RequestMapping(path = "/contract")
public class ContractController {

    private final ContractRepository repository;
    private final ContractService contractService;

    public ContractController(ContractRepository repository, ContractService contractService) {
        this.repository = repository;
        this.contractService = contractService;
    }

    @PostMapping(path = "/{contractId}/price")
    public void updatePrice(@PathVariable Long contractId) {
        Contract contract = repository.findById(contractId).orElseThrow();
        contractService.setContract(contract);
        contractService.updatePrice();
    }
}

@Service
public class ContractService {
    
    private final PriceService priceService;
    
    private Contract contract;
    
    public ContractService(PriceService priceService) {
        this.priceService = priceService;
    }

    public void setContract(Contract contract) {
        this.contract = contract;
    }

    public void updatePrice() {
        if (contract != null) {
            BigDecimal price = priceService.calcPrice(contract);
            contract.setPrice(price);
        }
    }
}

class Contract {

    private BigDecimal price;

    public BigDecimal getPrice() {
        return this.price;
    }
    
    public void setPrice(BigDecimal price) {
        this.price = price;
    }
}
Ответ в комментариях-

Вывести строку в обратном порядке

        String str = "abcde";

Что будет выведено на экран?
Stream.of("1", "2", "3")
            .map(s -> s + ",")
            .peek(System.out::print)
            .filter(s -> false)
            .findAny();

Дан массив string, найти первый не повторяющийся символ и вернуть его индекс. Если таких символов нет, вернуть -1

Примеры:
Input: s = "leetcode"
Output: 0

Input: s = "loveleetcode"
Output: 2

Input: s = "aabb"
Output: -1

Простенькая, но довольная частая задача на работу со стрингом Убрать повторения из стринга
 String s = "Ззззздраааавввстттвввууууй!!";
Самому писать было лень, попросил ответить chat-gpt (4o). Но как обычно он написал дичь - его код не прошел проверку в intellij. Пришлось писать самому. Ответ в комментариях

Вторая задача из этого же собеседования. Что будет выведено? (Ответ в комментариях)
Вторая задача из этого же собеседования. Что будет выведено? (Ответ в комментариях)

Задача из собеседования в одну аутстафф компанию.
//Есть 2 интерфейса:

public interface Interface1 {
    default Long calcMethod(Long id){
        return id;
    }
}

public interface Interface2 {
    default Long calcMethod(Long id){
        return id;
    }
}

//Есть реализация:

public class Extend2Interfaces implements Interface1, Interface2 {
}

//Метод какого интерфейса будет вызван?
Ответ в комментариях-