Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 29 30 31 32 33 34 35 36 [37] 38   вперед  Ctrl
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
Круто!
очень красиво.


Usman
Usman
Ну, граждане джависты... есть задачка:пропущено...
Нужно решить через Stream-ы (java.util.stream.*) !!!

+
P.S.
Система поддерживает Java 8 (так что все ок)
Решение:
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

public class Solution {
    public static void main(String[] args) throws Exception {
        StreamSupport
            .stream(Spliterators.spliteratorUnknownSize(new Scanner(System.in), Spliterator.NONNULL), false)
            .mapToDouble(Double::valueOf)
            .map(Math::sqrt)
            .boxed()
            .collect(Collectors.toCollection(LinkedList::new))
            .descendingIterator()
            .forEachRemaining(r -> System.out.printf("%.4f\n", r));
    }
}

Я бы с удовольствием хотел чтобы вы у нас работали :) нет желания сменить работодателя ?
21 мар 18, 18:45    [21275517]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
scf
Atum1,

Странно, живете в парадигме ФП и не знаете, что спрашивать)
Прежде всего - стримы и лямбды. что такое functional interface, как из коллекции людей найти всех мужчин, сгруппированных по месяцу рождения и т.п.

А вообще в джаве плохое ФП. Пример: реализовать вот такой метод
Optional<Integer> sum(Optional<Integer> x, Optional<Integer> y);



Я сюда таких задач уже постил много (как из коллекции людей найти всех мужчин, сгруппированных по месяцу рождения и т.п.)

настолько это отражает знания стримов ?

если только базовые ...

есть фишки особенности , всякие - тоже примеры в этой теме есть , хитрости итд ... но их требовать с соискателя это уже другой вопрос .




Спросил вашу задачу .

Получил ответ :

вот вопрос как такое оценить?

import java.util.Optional;


public class OptionalTest {

    Optional<Integer> sum(Optional<Integer> x, Optional<Integer> y) {

        Optional<Integer> result = Optional.empty();

        if (x.isPresent() && y.isPresent()) {
            result = Optional.of(x.get() + y.get());
        } else {
            if (x.isPresent()) {
                return x;
            } else if (y.isPresent()) {
                return y;
            }
        }
        return result;
    }
}
21 мар 18, 19:05    [21275578]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
scf
Member

Откуда:
Сообщений: 1476
Atum1
вот вопрос как такое оценить?

import java.util.Optional;


public class OptionalTest {

    Optional<Integer> sum(Optional<Integer> x, Optional<Integer> y) {

        Optional<Integer> result = Optional.empty();

        if (x.isPresent() && y.isPresent()) {
            result = Optional.of(x.get() + y.get());
        } else {
            if (x.isPresent()) {
                return x;
            } else if (y.isPresent()) {
                return y;
            }
        }
        return result;
    }
}


Средний джава программист - легко определяется из-за любви к мутабельным локальным переменным.
ФП программист сделал бы вот так:
 return x.flatMap(x0 -> y.map(y0 -> x0 + y0));
Т.к. в ФП Optional комбинируются именно так - если один из аргументов отсутствует, то операция не выполняется.

Хороший Java программист сделал бы вот так:
if (x.isPresent() || y.isPresent()) {
            return Optional.of(x.orElse(0) + y.orElse(0));
        } else {
            return Optional.empty();
        }
21 мар 18, 19:50    [21275657]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
scf, хорошая задача спасибо .



Тот кто Фп программист он наверное не на java пишет :)
Второе решение , к нему можно прийти в коде , через несколько оптимизаций.

Не думаю что сходу такое кто то сможет написать на собеседовании ?!


Или просто уровень сейчас очень низкий , пробел в образовании видимо .
21 мар 18, 20:01    [21275677]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
no56892
Member

Откуда:
Сообщений: 587
Нормальный напишет int sum(int, int) : )
22 мар 18, 19:49    [21278790]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
no56892
Member

Откуда:
Сообщений: 587
Вернее long sum (int, int) ))
22 мар 18, 19:50    [21278794]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 38770
ФП программист определит sum через инкремент/декремент и сравнение с нулем.
22 мар 18, 22:45    [21279023]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
mayton
ФП программист определит sum через инкремент/декремент и сравнение с нулем.


 Optional<Integer> sum(Optional<Integer> x, Optional<Integer> y)


Мне пример понравился , он короткий и показательный .

Это своего рода "жемчужина" собеседования .

Я такие собираю - за 1 час интервью можно задать такие вопросы , точечные по всему стеку технологий от базы до фронта и понять как человек думает , как он пишет код итд ...

считаю очень полезным .

Если есть еще примеры, буду признателен.

sql java js
23 мар 18, 10:10    [21279694]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
daoinek
Member

Откуда:
Сообщений: 2
После окончания универа попал на собеседование в большую компанию. Завалили вопросами, не ответил на 2 из 16.... отказали
23 мар 18, 18:58    [21281823]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 38770
Не сильно хотелось. Скорее всего у них уже был свой кандидат. А вас собеседовали просто для квоты.
23 мар 18, 21:29    [21282092]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
daoinek
После окончания универа попал на собеседование в большую компанию. Завалили вопросами, не ответил на 2 из 16.... отказали



Что можно спросить после вуза ?
29 мар 18, 07:31    [21294836]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Локшин Марк
Member

Откуда: Воронеж
Сообщений: 3141
Atum1
daoinek
После окончания универа попал на собеседование в большую компанию. Завалили вопросами, не ответил на 2 из 16.... отказали

Что можно спросить после вуза ?

Как звали преподавателя и какого цвета методичка.
29 мар 18, 11:46    [21295569]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
Optional<Integer> sum(Optional<Integer> x, Optional<Integer>

http://www.baeldung.com/java-filter-stream-of-optional

Что то заморочился , таким образом в Java 9 все будет более логичнее а в 10 и 11 совсем хорошо

Можно будет сделать им stream flatmap и reduce
30 мар 18, 07:32    [21298034]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
http://reasonablypolymorphic.com/blog/higher-kinded-data

когда будет в java 12 ?
30 мар 18, 12:47    [21299021]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
Пятничная задача:

Есть java 8 stream int в нем нужно найти ave 95 % Перцентиль (убрать min | max )
20 апр 18, 11:10    [21354025]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
Всем добрый вечер :


Нашёл красивую задачу :


Написать в общем виде метод , который перым параметром принимает Стрим объектов , вторым Стрим функций , и возвращает результат применения всех функций к исходному стриму.

Пример :

На входе массив Чисел [5,3,2,1,4] в виде стрима .

Второй параметр Стрим функций : первая функция сортировка по возрастанию,вторая функция берет первые два элемента.
4 дек 18, 21:02    [21753696]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
Atum1
Всем добрый вечер :


Нашёл красивую задачу :


Написать в общем виде метод , который перым параметром принимает Стрим объектов , вторым Стрим функций , и возвращает результат применения всех функций к исходному стриму.

Пример :

На входе массив Чисел [5,3,2,1,4] в виде стрима .

Второй параметр Стрим функций : первая функция сортировка по возрастанию,вторая функция берет первые два элемента.



    public static Stream problem(Stream stream, Stream<Function> functions) {
        return Stream.empty();
    }
5 дек 18, 10:07    [21753984]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
ivanra
Member

Откуда:
Сообщений: 844
какое-то мутное пояснение к функциями. Наверно все-таки имелись в виду java.util.function.Function
Тогда примерно так
    public static Stream problem(Stream stream, Stream<Function> functions) {
        return stream.map(o -> {
            Object[] a = new Object[]{o};
            functions.forEachOrdered(f -> {a[0] = f.apply(a[0]);});
            return a[0];});
    }
5 дек 18, 17:15    [21754721]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
ivanra
какое-то мутное пояснение к функциями. Наверно все-таки имелись в виду java.util.function.Function
Тогда примерно так
    public static Stream problem(Stream stream, Stream<Function> functions) {
        return stream.map(o -> {
            Object[] a = new Object[]{o};
            functions.forEachOrdered(f -> {a[0] = f.apply(a[0]);});
            return a[0];});
    }


Спасибо ,

мне нужно более подробно описать и детализировать , там скорее будет foldLeft.
6 дек 18, 12:59    [21755692]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
Atum1
ivanra
какое-то мутное пояснение к функциями. Наверно все-таки имелись в виду java.util.function.Function
Тогда примерно так
    public static Stream problem(Stream stream, Stream<Function> functions) {
        return stream.map(o -> {
            Object[] a = new Object[]{o};
            functions.forEachOrdered(f -> {a[0] = f.apply(a[0]);});
            return a[0];});
    }


Спасибо ,

мне нужно более подробно описать и детализировать , там скорее будет foldLeft.


На уровне идеи :


    public static Stream<Integer> reztsov(Stream<Integer> stream, Stream<Function> f) {
        
        List<Integer> results = stream.collect(toList());
        List<Function> list = f.collect(toList());
        for (Function function : list) {
            
            List<Integer> objs = (List<Integer>) results.stream().map(function).collect(toList());
            results  = objs;
        }
        
        return results.stream();
    }



Вызов

public static void main(String[] args) {
        
        Stream<Integer> input = Stream.of(1, 3, 2, 5, 4);
        
        
         Function<Integer,Integer> add1 = x -> x + 1;
         Comparator<Integer> sort = (a, b) -> a - b;
         
        //Arrays.s
        //ad//d1.andThen(add1)
        Stream f = Stream.of(add1,sort);
         
        reztsov(input ,f).forEach(System.out::println);
        



будет ошибка так как разные сигнатуры у add1 и sort
6 дек 18, 17:51    [21756188]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
ivanra
Member

Откуда:
Сообщений: 844
Да, можно и в обратном порядке, но терминальные операции на каждой итерации - это лишнее:
    public static Stream problem2(Stream stream, Stream<Function> functions) {
        Stream[] holder = new Stream[] {stream};
        functions.forEachOrdered(f -> {holder[0] = holder[0].map(f);});
        return holder[0];
    }
8 дек 18, 16:43    [21757924]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
ivanra
Да, можно и в обратном порядке, но терминальные операции на каждой итерации - это лишнее:
    public static Stream problem2(Stream stream, Stream<Function> functions) {
        Stream[] holder = new Stream[] {stream};
        functions.forEachOrdered(f -> {holder[0] = holder[0].map(f);});
        return holder[0];
    }


Спасибо .

Если не делать терминальные , то логику сломать можно - например сортировка и взять первые 10 или

взять первые 10 и сортировка ...

разные результаты
10 дек 18, 10:43    [21758861]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Atum1
Member

Откуда: СПБ
Сообщений: 1834
Задача для собеседования :

по java 8

Есть две коллекции - получить одну где каждый элемент из первой коллекции джойнится с первым элементом второй итд ..

Пример :

//Дано 
List<String> name1 = Arrays.asList("Stan", "Kyle", "Eric");
List<String> name2 = Arrays.asList("Marsh", "Broflovski", "Cartman");
//нужно получить
List<String> name3 = Arrays.asList("Stan Marsh", "Kyle Broflovski", "Eric Cartman");



и обратная задача :
+

//Дано 
List<String> name3 = Arrays.asList("Stan Marsh", "Kyle Broflovski", "Eric Cartman");

//нужно получить
List<String> name1 = Arrays.asList("Stan", "Kyle", "Eric");
List<String> name2 = Arrays.asList("Marsh", "Broflovski", "Cartman");


5 фев 19, 12:14    [21801836]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
забыл ник
Member

Откуда:
Сообщений: 2601
В общем-то элементарная задачка на zip/Unzip, сто лет в обед решенная

https://google.github.io/guava/releases/21.0/api/docs/com/google/common/collect/Streams.html#zip-java.util.stream.Stream-java.util.stream.Stream-java.util.function.BiFunction-
5 фев 19, 16:39    [21802060]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 4785
забыл ник, как-то unzip у меня в голове ничем, кроме partitioningBy не укладывается. А по ссылке как-то и не нашел.
5 фев 19, 17:13    [21802083]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 29 30 31 32 33 34 35 36 [37] 38   вперед  Ctrl
Все форумы / Java Ответить