с полей боёв
Nov. 9th, 2010 12:02 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Сегодня меня четыре раза спрашивали, как работает сборка мусора в джаве. Как будто это имеет какое-то значение. И как будто уходит больше пяти минут ознакомиться с какой-нибудь статейкой, где написано, мол, mark and sweep. Один раз по телефону, и три раза в одной интересной конторе, где, вроде бы, люди умные, но какие-то слегка очумелые.
А ещё попросили написать функцию, которая берёт два целых массива и возвращает их пересечение. но называется merge. Потом переименовали в процессе. Потом попросили без
А ещё этот же человек долго добивался от меня, что такое reference в джаве. И как работает атомный плюс. Я предположил, что можно ж и через native. Нет, на самом деле, всё через CAS.
Зато первый интервьюёр понравился - ему я рисовал код, использующий ConcurrentHashMap<String, AtomicInteger>.
На самом деле, я не понимаю этого народного обсещена с синхронизацией. Что там не тривиально? И чем так уж особо интеллектуален ConcurrentHashMap, вы б поглядели сырцы. Иногда возникает ощущение, что если в коде больше одной нитки, то у программиста начинает кружиться голова, и внутри просыпаются и начинают бегать тараканы.
Лучше б задумались, почему из List<Set<T>> можно сделать Set<List<T>>, а обратно нельзя? Что-то с энтропией? Или это можно всё выразить в виде функториальных уравнений (с блэкджеком и шлюхами), и энтропия вытекает из этих уравнений? Забавно, правда? А если Option или Exception туда вбросить? Будет иерархия по энтропии?
А ещё попросили написать функцию, которая берёт два целых массива и возвращает их пересечение. но называется merge. Потом переименовали в процессе. Потом попросили без
Set
. Потом я сказал, ну хрен с ним, тогда будет O(m*n). Потом попросили распараллелить на multiple threads. А потом, внимание, спросили, почему я не использовал heapsort. И я потом долго допытывался, почему именно heapsort поможет профессионалу. А ещё этот же человек долго добивался от меня, что такое reference в джаве. И как работает атомный плюс. Я предположил, что можно ж и через native. Нет, на самом деле, всё через CAS.
Зато первый интервьюёр понравился - ему я рисовал код, использующий ConcurrentHashMap<String, AtomicInteger>.
На самом деле, я не понимаю этого народного обсещена с синхронизацией. Что там не тривиально? И чем так уж особо интеллектуален ConcurrentHashMap, вы б поглядели сырцы. Иногда возникает ощущение, что если в коде больше одной нитки, то у программиста начинает кружиться голова, и внутри просыпаются и начинают бегать тараканы.
Лучше б задумались, почему из List<Set<T>> можно сделать Set<List<T>>, а обратно нельзя? Что-то с энтропией? Или это можно всё выразить в виде функториальных уравнений (с блэкджеком и шлюхами), и энтропия вытекает из этих уравнений? Забавно, правда? А если Option или Exception туда вбросить? Будет иерархия по энтропии?
no subject
Date: 2010-11-09 07:52 pm (UTC)