Size: a a a

2020 July 16

SK

Sergey Kapralov in JUG NN
Да и сам хештейбл это нихрена не компактная штука по сравнению с массивом. Entry<?,?>[] table далеко не то же самое что int[]. Тем более учитывая что пустых мест среди вагонов нет, весь range заполнен
источник

MV

Max Vorontsov in JUG NN
всё равно не верю, что это задача на пол часа в FANG
источник

MV

Max Vorontsov in JUG NN
поэтому ищу какую-то заковырку
источник

MV

Max Vorontsov in JUG NN
я прямо ради интереса запущу visualVM и посмотрю разницу в использовании памяти %) Но это завтра
источник

SK

Sergey Kapralov in JUG NN
Max Vorontsov
поэтому ищу какую-то заковырку
Ну, меньше чем N интов размер данных из этой лямбды не станет. Дальше только сжимать как то, может там и есть закавыка
источник

II

Iurii Iurchenko in JUG NN
Max Vorontsov
всё равно не верю, что это задача на пол часа в FANG
не знаю, может мы недооцениваем плачевное состояние индустрии
источник

II

Iurii Iurchenko in JUG NN
дальше вроде действительно если только сжимать, но непонятно как
источник

ЮЗ

Юлия Зямбахтина... in JUG NN
Привет!
Приходите 30 июля на Java Quiz от EPAM и «Мозгобойни»!
Регистрируйтесь тут: https://epa.ms/JavaQuiz-ru
источник

MM

Maksim Maslov in JUG NN
Alexey
справедливо. вот тебе задача на 30 минут из FAANG

A train has wagonCount wagons indexed as 0, 1, ..., wagonCount - 1. Each wagon must be filled in the constructor of the Train using the fillWagon function, which accepts the wagon's index and returns the wagon's cargo.

The code below works, but the server has enough memory only for a small train. Refactor the code so that the server has enough memory even for a large train.

import java.util.Hashtable;
import java.util.function.Function;

public class Train {
   private Hashtable<Integer, Integer> wagons;

   public Train(int wagonCount, Function<Integer, Integer> fillWagon) {
       this.wagons = new Hashtable<Integer,Integer>();
       for (int i = 0; i < wagonCount; i++) {
           this.wagons.put(i, fillWagon.apply(i));
       }
   }

   public int peekWagon(int wagonIndex) {
        return this.wagons.get(wagonIndex);
   }

   public static void main(String[] args) {
       Train train = new Train(10, wagonIndex -> wagonIndex);

       for (int i = 0; i < 10; i++) {
           System.out.println("Wagon: " + i + ", cargo: " + train.peekWagon(i));
       }
   }
}
я бы попробовал использовать byte[] для хранения вагонов
источник

MM

Maksim Maslov in JUG NN
в таком случае вроде все кладется в off-heap
источник

SK

Sergey Kapralov in JUG NN
Maksim Maslov
в таком случае вроде все кладется в off-heap
Откуда инфа? Первый раз такое слышу...
источник

A

Alexey in JUG NN
Iurii Iurchenko
не знаю, может мы недооцениваем плачевное состояние индустрии
А что не так с заданием? Чтобы проверить что запплаился не робот по-моему норм. Понимание unboxong, внутренней структуры hashmap,  statefulness функций
источник

II

Iurii Iurchenko in JUG NN
Да мне тоже кажется что норм задание. Особенно если ещё обсуждение в 30 минут входит, то можно много интересных вопросов поднять
источник

II

Iurii Iurchenko in JUG NN
Плачевное состояние индустрии - это про обилие роботов
источник

A

Alexey in JUG NN
Maksim Maslov
я бы попробовал использовать byte[] для хранения вагонов
Это как?
источник

II

Iurii Iurchenko in JUG NN
опять же одно обсуждение того сколько на поинтерах будем экономить может на интересные темы вывести
https://blog.codecentric.de/en/2014/02/35gb-heap-less-32gb-java-jvm-memory-oddities/
источник

MM

Maksim Maslov in JUG NN
Sergey Kapralov
Откуда инфа? Первый раз такое слышу...
источник

SK

Sergey Kapralov in JUG NN
Так это байт буфера, а не массив байтов
источник

MM

Maksim Maslov in JUG NN
нууу даа...
источник

SK

Sergey Kapralov in JUG NN
Ты просто так это выше сказал, будто вот я щас запилю массив байтов, и он у меня сразу в оффхип уедет...
источник