- PVSM.RU - https://www.pvsm.ru -
Привет! Мы тут собрали тусовку одних из самых крутых русскоязычных Java-практиков и попросили их дать по задаче, чтобы вы сломали зубы,
Первая задача простая, она от телезрителя Николая Гарбузова, специалиста по скалкам, любящего рекурсию, паттерн-матчинг и магию компиляции:
Скомпилируется ли следующий аспект AJC компилятором?
Если да — то что он выведет на консоль при компиляции?public aspect QuizAspect { public static int count(int i) { return i++; } before (int n) : execution(public int QuizAspect.count(int)) && args(n) && if(QuizAspect.count(1)>1) { System.out.println("QuizAspect " + n); } }
Пока просто, правда?
Вторая задача от Владимира Ситникова (NetCracker), грязного извращенца во всём, что касается регулярных выражений. Этот нехороший человек даже анонс своего доклада на JPoint написал [2] с их помощью.
В чём подвох удалять Java-комментарии таким выражением? (считаем, что исходник написан нормальными символами) —
Pattern.compile("/\*(?:[^*]|\*[^/])*\*/")
И сразу вторая задача — можно ли написать «hello world» на java без единого пробела?
Третью задачу прислал телезритель Николай Алименков из клуба анонимных разработчиков. 10 лет он пилит свои масштабируемые системы, а к нам пришёл отдохнуть, поэтому задача одна из самых простых:
Есть 2 Spring контекста:
1. a.xml с бином
<util:list id="myList"> <value>3</value> <value>4</value> </util:list>
2. b.xml с бином
<util:list id="myList"> <value>6</value> </util:list>
Что напечатает такой фрагмент кода:
System.out.println(new ClassPathXmlApplicationContext("a.xml", "b.xml").getBean("myList"));
И как можно заставить его бросить ошибку, не изменяя логику работы кода?
Четвёртая задача предоставлена Никитой Сальников-Тарновским, конкретно упоровшимся по хардкору и написавшим инструмент для поиска утечек памяти – Plumbr. Писал не один, конечно, но прочитать полученный код может только он. Долбанный оптимизатор.
Ниже приведены 2 программы. Каждая из них пытается аллоцировать суммарно памяти больше размера хипа. Но одна из них выкидывает java.lang.OutOfMemoryError, а вторая нет. Почему?
public class OOM1 { private static final int SIZE = (int) (Runtime.getRuntime().maxMemory() * 0.55); public static void main(String[] args) { { byte[] bytes = new byte[SIZE]; System.out.println(bytes.length); } byte[] bytes1 = new byte[SIZE]; System.out.println(bytes1.length); System.out.println("I allocated memory successfully"); } } public class OOM2 { private static final int SIZE = (int) (Runtime.getRuntime().maxMemory() * 0.35); public static void main(String[] args) { { byte[] bytes = new byte[SIZE]; System.out.println(bytes.length); } byte[] bytes1 = new byte[SIZE]; System.out.println(bytes1.length); byte[] bytes2 = new byte[SIZE]; System.out.println(bytes2.length); System.out.println("I allocated memory successfully"); } }
Предпоследняя задача от Баруха Садогурского из JFrog и тусовки Bintray/Artifactory
Что выведет этот код?
def back = 'back' def quotes = ["I'll be $back", "I'll be ${-> back}", "I'll be ${back}", "I'll be "+back] println quotes back = 'bach' println quotes
Последняя – от Евгения Борисова, тренера офицеров израильской армии по Java. Spring:
Есть два бина:
@Component public class Няня { public void closeAll() { while (ребёнокГрязный()) { купайРебёнка(); } } } @Component public class Уборщица { public void closeAll() { while (посудаГрязная()) { мойПосуду(); } } }
Как сделать, чтобы при закрытия контекста, оба метода closeAll работали параллельно (и какие есть варианты)?
Ответы, пожалуйста, в комментарии под спойлер. Если вы не можете комментировать, то делайте #jpoint в Facebook или ВКонтакте.
Завтра я выложу правильные ответы на первые три вопроса, а в среду — на вопросы jbaruch [3] и EvgenyBorisov [4].
Автор: 23derevo
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/88997
Ссылки в тексте:
[1] мозг: http://www.braintools.ru
[2] написал: http://javapoint.ru/talks#sitnikov
[3] jbaruch: http://habrahabr.ru/users/jbaruch/
[4] EvgenyBorisov: http://habrahabr.ru/users/evgenyborisov/
[5] Источник: http://habrahabr.ru/post/255869/
Нажмите здесь для печати.