Pull to refresh
85
0
Александр @nobodyhave

Android разработчик

Send message
Ну, не так уж и глупо. Например можно выяснить что кандидаты не в курсе о том что:
— array[array.length] вызовет исключение
— что строки в Java иммутабельны
— что string1 + string2 даст новую строку, а не изменит старую
— что рекурсия потребляет память
— что char занимает 16 бит, а byte 8
и прочих банальных вещах.
Конкретно эту — да. Потому что это стандартная задача. Но для каждой стандартной задачи существуют ее нестандартные вариации. Например нам надо развернуть не всю строку, а каждые 7 букв, заменяя при этом среднюю на X (да, мне доводилось делать нечто похожее в реальном коде).
Если иметь представление, как решить оригинальную задачу, любая производная не доставит проблем. Иначе «опытный» программист рискует застрять в гугле надолго.
А я и не просил никого вспоминать. Говорю же — ограничений не было. Хочешь — бери метод из коробки. Не помнишь такого — пиши свой. А уж сколько всего вылезло при написании… На пару часов гугления, что для написания примитивного метода как-то уж слишком.
Довелось недавно участвовать в довольно большом количестве интвервью. И все кандидаты по резюме как на подбор — больше 3-х лет опыта, разные там проекты, специалисты во всем.
Начинаешь разговаривать, спрашивать про проекты, про достижения, прочие вопросы. И вроде все хорошо. Проходит час, начинаешь спрашивать технические вещи — и вдруг тишина. Кандидат не может ответить на простейшие вопросы. Даешь элементарную задачу — сделать разворот строки. Из «habrahabr» сделать «rbaharbah». И ведь не могут. Кто-то делает, но с кучей ошибок. И ни один не вспомнил про то, что в Java есть StringBuilder, который может это сделать из коробки, хотя никаких ограничений не ставилось.
Отсюда и появляется подход — вы мне сначала связный список разверните, а потом мы уже поговорим про ваши проекты. А то тратить впустую час на каждого кандидата несколько расточительно.
Найти адвоката, занимающегося натурализацией. Занести ему денег, собрать кучу документов, выполнить кучу условий. Дальше ждать N лет. Я пока лично не знаком с людьми, у кого эти N лет истекли, так что точнее не скажу.
В городе да, пляжи так себе. А вот если отъехать на машине подальше, то уже вполне.
Ну и смотря про какой город речь )
Дополню про права. Если есть российские, можно поменять их на местные за 40 евро (цена в 2015 году) без экзамена и каких-либо заморочек. Мне выдали аж по 2035-й год.
Раньше было, по словам самих киприотов. Можно было оставить дверь в доме открытой, на случай «если соседу вдруг что понадобится». А ключи оставляли в машинах с открытыми окнами. Сейчас да, все поменялось. Хотя забыть ключи в машине и найти ее на том же месте мне довелось )
Смотря зачем ехать ) Пожить несколько лет на море, совмещая это с работой — очень даже вариант. Особенно если переезд за счет компании.
Остаться надолго или навсегда — есть страны поинтереснее.
Это перевод. В оригинале списка нет. Ну и на самом деле список можно сделать весьма длинным, так решение многих задач состоит в использовании правильной структуры данных. А чтобы выбрать правильную, нужно знать их все. Иногда бывает решаешь задачку на соревновании, вроде и понимаешь, что надо сделать, а по времени не заходит. Потом внезапно оказывается, что какое-нибудь link cut tree эту задачу прекрасно решает.
Если говорить именно о техниках, то я бы назвал:
— sorting (во многих случаях сильно упрощает проблему, хотя далеко не всегда оптимально)
— two pointers
— sliding window
— square root decomposition в частности и использование buckets в целом
— divide and conquer
— greedy approach
— dynamic programming
— приведение задачи к графу и попытки решить через алгоритмы для графов
— ну и наконец перебор разных структур данных, авось какая подойдет
К сожалению, некоторые люди решают реальные задачи через заднее место, абсолютно не задумываясь о том, что же они творят. И им бы хорошо было бы как раз порешать задачи начального/среднего уровня, чтобы не делать банальных глупостей.
Как пример, реальная ситуация, которую пришлось решать. Мобильное приложение умирало при добавлении нескольких тысяч элементов в список. Вскрытие показало, что элементы добавляются по одному. На каждый вызов элемента вызывается сортировка всего списка. На каждый вызов метода сравнения в компараторе вызывается полный просмотр другого списка поменьше, на 10-100 элементов). Теперь посчитаем сложность при размере одного списка N и второго M.
Добавляется N элементов. Сортировка на каждое добавление NlgN, итого уже (N^2)lgN. Ну и раз при каждом сравнении мы пробегаем по другому списку, получаем (N^2)*M*lgN. И все вот этого просто для создания сортированного списка с некоторыми проверками при сортировке. После рефакторинга значение, которое искали в коротком списке было закешировано, ибо не менялось, а добавление с сортировкой превратились в TreeSet. И стало все N*lgN.
Посмотрите на вторую половину списка, где сложность помечена как Intermediate — Advanced. На этих сайтах есть как базовые задачки, так и весьма любопытные.
В частности Hard и выше задачки на Hackerrank, Hard задачки на Leetcode, Medium и выше на Codechef.
Должно быть все в аккаунте Oracle. Вроде как где-то тут. По крайне мере у меня оба серфтиката в электронной форме. Если он там есть, то все должно автоматом сработать. По крайне мере я ничего не предъявлял. Если нет, то связаться с поддержкой либо Oracle, либо того, через кого будете бронировать экзамен.
Во-вторых, разрешение экранов. У яблофонов просто огромные разрешения, особенно в плюсах, от чего, бывают проблемы, когда выставляешь кнопки с нужными размерами шрифтов, на iOS все смотрится хорошо, на андроиде все слипается — экран маловат будет.

iPhone 7+: 5.5" 1920-by-1080-pixel resolution at 401 ppi
LG G6: экран 5.7", разрешение 2880x1440 при 565 ppi

Вот было придумано, что должна быть активити

И придумана не просто так. Активити отвечает за жизненный цикл.

Для передачи информации нужен Intent, а он без проблем может передавать только простые типы, а если хочется передать объект, то все, здравствуй Parcelable.

Потому, что он в том числе используется для IPC. Я реакт пока еще особо не пробовал — он умеет общаться с другими андроид приложениями не через интенты?

Тут у нас 3 разные кнопки.

Тут у нас всего одна кнопка, для которой можно сделать
setCompoundDrawables(@Nullable Drawable left, @Nullable Drawable top, @Nullable Drawable right, @Nullable Drawable bottom)

А вообще хотелось бы больше примеров реакта, как в первой части статьи :)
Как раз таки n! это брутфорс, он же полный перебор. А вот динамика это уже оптимизированное решение, учитвающее наличие в задаче оптимальной структуры и повторяющихся подзадач.

«Динамическое программирование в теории управления и теории вычислительных систем — способ решения сложных задач путём разбиения их на более простые подзадачи. Он применим к задачам с оптимальной подструктурой (англ.), выглядящим как набор перекрывающихся подзадач, сложность которых чуть меньше исходной. В этом случае время вычислений, по сравнению с «наивными» методами, можно значительно сократить.»
Примеры приведенные автором это только малая часть Rx. Причем именно та часть, которую можно заменить стримами или методами для работы с коллекциями в kotlin/scala. Но, как уже говорилось, они чисто для наглядности.
Интересности начинаются, когда доходит до Schedulers, Subjects, обработки ошибок и прочих вещей.
В разделе 13.5 дважды упоминается LinkedListMap. Такого класса в Java (как минимум в SE) не существует. По смыслу там LinkedHashMap.
По словам автора публикации тоже самое в оригинале, скорее всего опечатка со стороны автора книги.
Можно, если есть Professional предыдущей версии. А когда я получал Professional по 6-й Java, такого требования еще не было. Поэтому я благополучно этого избежал )
Я не получал уровень Associate. Я получил сначала SE 6 Professional, а потом SE 8 Professional.
Первый получил, так как менял на тот момент работу и хотел некое подтверждение того, что я знаю Java, так как опыта работы у меня с ней было крайне мало.
А второй получил скорее для коллекции, попутно совместив с изучением новинок 8-й Java. В жизни мне с ней сталкиваться не приходится, так как основная Java под Android пока 6-я.
Да, было бы приятнее. Но чего нет того нет. Oracle кстати бумажные сертификаты высылает. 4 года назад слал в обязательном порядке. Теперь по запросу. Не скажу, что он очень уж защищен, но все-таки это реальная бумажка. А еще Oracle прислал футболку. Мелочь, а приятно )

Information

Rating
Does not participate
Location
Amsterdam, Noord-Holland, Нидерланды
Date of birth
Registered
Activity