juan_gandhi: (Default)
[personal profile] juan_gandhi
Сегодня меня четыре раза спрашивали, как работает сборка мусора в джаве. Как будто это имеет какое-то значение. И как будто уходит больше пяти минут ознакомиться с какой-нибудь статейкой, где написано, мол, mark and sweep. Один раз по телефону, и три раза в одной интересной конторе, где, вроде бы, люди умные, но какие-то слегка очумелые.

А ещё попросили написать функцию, которая берёт два целых массива и возвращает их пересечение. но называется merge. Потом переименовали в процессе. Потом попросили без Set. Потом я сказал, ну хрен с ним, тогда будет O(m*n). Потом попросили распараллелить на multiple threads. А потом, внимание, спросили, почему я не использовал heapsort. И я потом долго допытывался, почему именно heapsort поможет профессионалу.

А ещё этот же человек долго добивался от меня, что такое reference в джаве. И как работает атомный плюс. Я предположил, что можно ж и через native. Нет, на самом деле, всё через CAS.

Зато первый интервьюёр понравился - ему я рисовал код, использующий ConcurrentHashMap<String, AtomicInteger>.

На самом деле, я не понимаю этого народного обсещена с синхронизацией. Что там не тривиально? И чем так уж особо интеллектуален ConcurrentHashMap, вы б поглядели сырцы. Иногда возникает ощущение, что если в коде больше одной нитки, то у программиста начинает кружиться голова, и внутри просыпаются и начинают бегать тараканы.

Лучше б задумались, почему из List<Set<T>> можно сделать Set<List<T>>, а обратно нельзя? Что-то с энтропией? Или это можно всё выразить в виде функториальных уравнений (с блэкджеком и шлюхами), и энтропия вытекает из этих уравнений? Забавно, правда? А если Option или Exception туда вбросить? Будет иерархия по энтропии?

Date: 2010-11-09 08:37 am (UTC)
From: [identity profile] mr-aleph.livejournal.com
людям код нужно писать в меру работающий, в меру падучий, а вы им диссертацию по философии предлагаете.

Date: 2010-11-09 08:50 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Да надо поменьше фокусироваться на херне. Как сборка мусора работает. Какая нахер разница. Покажите мне код, чьё функционирование зависит от того, mark and sweep или там reference counting. Другое дело, что можно не нервничать относительно короткоживущих объектов да boxingа.

Надо фокусироваться на красоте и чистоте. Вот тут-то философия и поможет. Чтоб не торчать на работе по 70 часов в неделю.

Date: 2010-11-09 11:04 am (UTC)
From: [identity profile] mr-aleph.livejournal.com
ну кто их знает зачем они про гц спрашивают.

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

может они недавно наступили на какую-то неприятную багу со stop the world сборщиком --- нааллоцировали обьектов и получили паузу в лоб.

я вообще понимаю, что "elegance is not a dispensable luxury but a quality that decides between success and failure", но элегантность она возникает из баланса между практикой и теорией, а не из одной галимой теориии.

Date: 2010-11-09 12:45 pm (UTC)
From: [identity profile] alamar.livejournal.com
Это как раз просто. Если код создаёт много циклических наборов объектов6 то на reference counting оно вылетит в трубу.
А в жаве так себя ведёт в принципе любой граф объектов.

Date: 2010-11-09 09:02 am (UTC)
From: [identity profile] svv.livejournal.com
Мы на собеседованиях обычно спрашиваем и про gc, и про concurrency, но сильно глубоко не копаем. Про gc -- в основном чтобы пощупать обширность интересов человека. А про concurrency -- разумеется, не для того, чтобы он направо и налево использовал ConcurrentHashMap<String, AtomicInteger> (боже упаси :)), а чтобы убедиться, что человек знает, где там бывают подводные грабли, чтобы случайно на них не наступать, а если уж наступит -- то чтобы знал, как с этим бороться.

Date: 2010-11-09 09:17 am (UTC)
From: [identity profile] jtootf.livejournal.com
а можно насчёт List и Set подробней? непонятно :(

Date: 2010-11-09 09:42 am (UTC)

Date: 2010-11-09 04:07 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Ну как: если есть список множеств, то это, считай, декартово произведение, и из него можно построить множество списков, множество точек этого произведения. А вот если дано множество списков, то это не обязательно декартово произведение, и преобразовать его в список множеств как-то не представляется возможным.

Date: 2010-11-09 09:07 pm (UTC)
From: [identity profile] mr-aleph.livejournal.com
проекция по первой координате, проекция по второй координате ... ? как раз список множеств построенный из множества списков. чем не нравится?

Date: 2010-11-10 03:50 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Так списки ж разной длины могут быть. Хотя да, любопытно. Надо подумать.

Date: 2010-11-15 10:56 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Всё ок, вроде. Множество первых элементов, множество вторых, ..., одинаковая длина списков вовсе не нужна.

Причём это как бы обратная функция для декартова произведения, но оно не является обратной функцией для неё. Можно даже вывести в результате операцию замыкания -- типа, берём произвольное множество списков, превращаем в список множеств, потом обратно во множество списков. В ней наверное есть какой-нибудь глубокий смысл, типа строит своего рода выпуклую оболочку или ещё что-нибудь такое.

Date: 2010-11-09 09:56 am (UTC)
From: [identity profile] rezkiy.livejournal.com
атомный плюс прекрасно делается без CAS, если результат плюса не интересен.

Date: 2010-11-09 05:50 pm (UTC)
From: [identity profile] cali4nickation.livejournal.com
What's wrong with W (formerly K)? I thought they were a group of really smart people. And they even actually used Scala in production ..

Questions about GC/classloaders allow to check how experienced a developer is in the Java platform. They are not discussed much in typical Java books. And people who work on something serious (e.g. in telecom/finance where latency matters) usually are quite familiar with both.

In my experience, the world is full of Java developers who know next to nothing about j.u.c even though it's arguably the second most important part of the standard library (after the Collections framework) and there's a definitive book. Incidentally, those people tend to have a J2EE background :)

Date: 2010-11-09 07:52 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
мне тоже нравится java.util.concurrent и книжка Дага Ли, но раз народ ее не пользует, значит она, возможно, не очень-то она нужна. Есть в этом какая-то сермяжная правда.

Date: 2010-11-10 07:10 am (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
I don't know. Personality clash or something. Seems like my existence is insulting to some. And I do not like when someone is counting the hours I spend at work.

They only person writing in Scala is... guess who?

Oh, whatever.

Date: 2010-11-09 06:02 pm (UTC)
From: [identity profile] blue-slonopotam.livejournal.com
http://www.amazon.com/Garbage-Collection-Algorithms-Automatic-Management/dp/0471941484/ref=sr_1_1?ie=UTF8&qid=1289325694&sr=8-1

Ну не всё так просто.

Date: 2010-11-09 08:25 pm (UTC)
From: [identity profile] sleepy-drago.livejournal.com
>Что там не тривиально?
там юнит тесты не помогают посредственным разработчикам сделать чтобы программа работала хоть както :)
ps я сам весьма посредственный разработчик если чо

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 9 10 11 121314
15161718 1920 21
222324252627 28
29 30     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 3rd, 2025 08:57 pm
Powered by Dreamwidth Studios