https://zen.yandex.ru/media/id/5ddd77e9f4882e4380666d35/iterable-roditel-vseh-kollekcii-5e5962eff848ee31c817bbc5 — Интерфейс Iterable.
Яндекс Дзен
Iterable. Родитель всех коллекций.
Посмотрим интерфейс Iterable. Он появился в Java 1.5. Кстати, именно от него наследуется интерфейс Collection. Для чего нужен этот интерфейс? Реализация его позволяет перебирать элементы коллекций/объектов с помощью forEach. — это как раз тип элементов,…
Немного радости. Вчера я прошла испытательный срок и теперь с чистой совестью могу называть себя разработчиком. Это моя первая работа именно разработчиком, поэтому я до конца не верила, что правда справляюсь. Мне казалось, что в любой момент придёт тимлид и скажет: «Всё, хватит занимать чужое место. Поиграла и хватит» или «У тебя не хватает опыта и ты не справляешься». Но этого не случилось. Что я поняла за эти три месяца:
1. Не нужно бояться. Все ошибаются (кроме тимлида). Никто не уволит вас даже за косяк за 10 минут до релиза. Все ведь прекрасно всё понимали, когда нанимали джуниора;
2. Нужно задавать вопросы. Всегда и много. Чем больше вопросов, тем быстрее научишься;
3. Некоторые задачи невероятно скучные, но такова судьба джуниоров. Кто-то должен этим заниматься;
4. Некоторые задачи невероятно сложные. Но такова судьба джуниоров. Зато быстрее научишься;
5. В любой непонятной ситуации лезь в документацию;
6. Не стоит расстраиваться, когда открываешь гит, а там 30 комментариев с код-ревью и все надо переделать;
7. Если начальник вздыхает и смотрит с грустью на тебя, то лучше подождать с вопросами. Вероятно, он только что посмотрел твой код;
8. Мне невероятно повезло с командой. Помню, что меня звали в компанию, где не было других разработчиков, но я отказалась. Так вот убеждаюсь с каждым днём, что это правильное решение. Джуниорам нужен наставник и кто-то, кто оставит 50 комментариев на код-ревью;
9. Не бойтесь рисковать и менять профессию. Если новая деятельность приносит счастье и вы чувствуете, что это именно то, чем хотите заниматься, когда вырастете — дерзайте.
1. Не нужно бояться. Все ошибаются (кроме тимлида). Никто не уволит вас даже за косяк за 10 минут до релиза. Все ведь прекрасно всё понимали, когда нанимали джуниора;
2. Нужно задавать вопросы. Всегда и много. Чем больше вопросов, тем быстрее научишься;
3. Некоторые задачи невероятно скучные, но такова судьба джуниоров. Кто-то должен этим заниматься;
4. Некоторые задачи невероятно сложные. Но такова судьба джуниоров. Зато быстрее научишься;
5. В любой непонятной ситуации лезь в документацию;
6. Не стоит расстраиваться, когда открываешь гит, а там 30 комментариев с код-ревью и все надо переделать;
7. Если начальник вздыхает и смотрит с грустью на тебя, то лучше подождать с вопросами. Вероятно, он только что посмотрел твой код;
8. Мне невероятно повезло с командой. Помню, что меня звали в компанию, где не было других разработчиков, но я отказалась. Так вот убеждаюсь с каждым днём, что это правильное решение. Джуниорам нужен наставник и кто-то, кто оставит 50 комментариев на код-ревью;
9. Не бойтесь рисковать и менять профессию. Если новая деятельность приносит счастье и вы чувствуете, что это именно то, чем хотите заниматься, когда вырастете — дерзайте.
https://zen.yandex.ru/media/id/5ddd77e9f4882e4380666d35/kak-sozdat-lokalnyi-kesh-android-5e5ea793dc29ff1c4ebe4181 — сейчас эта тема кажется невероятно простой и очевидной. Но когда мне задали похожий вопрос на моем первом собеседовании, то я растерялась и ничего не ответила. И даже подсказки разработчиков про коллекции мне не помогли. Хотя, возможно, это ещё и стресс от собеседования повлиял.
В пятницу коллеги обсуждали, как легко создать Телеграмм-бота. Конечно, я решила это сделать, но на котлин. Но т.к. я ещё и быстро хотела это сделать, то воспользовалась https://github.com/kotlin-telegram-bot/kotlin-telegram-bot. И всё шло отлично, пока я не запустила проект. В итоге ошибка HTTP FAILED: java.net.ConnectException: Failed to connect to api.telegram.org. Совсем забыла, что в России у нас не любят телеграмм. Видимо, придётся полностью писать самостоятельно, чтобы учитывалось прокси. Прям печаль 😭
GitHub
GitHub - kotlin-telegram-bot/kotlin-telegram-bot: 🤖 A wrapper for the Telegram Bot API written in Kotlin
🤖 A wrapper for the Telegram Bot API written in Kotlin - kotlin-telegram-bot/kotlin-telegram-bot
Как продолжить развиваться при скучных задачах?
Как джуниору, мне постоянно нужно учиться и не останавливаться на одном уровне. Это сложно делать, когда тебе дают какие-то однотипные или скучные задачи. Например, задачи уровня поменять картинку и цвет кнопки или писать тесты. И если с первыми всё ок (кто-то должен это делать), то тесты (ui, а не обычные) я просто ненавижу и чувствую, что тупею с каждым днём от такой задачи. Я не вижу ничего нового. Только эспрессо. Ещё больше снижает воодушевлённость то, что информации по тестам с нужными условиями почти нет. Две статьи на китайском сайте, где нет решений.
Что можно сделать?
• Попросить дать более интересную задачу в следующий раз. У меня не сработало;
• Полюбить тесты. Тоже не сработало;
• Параллельно учиться чему-то. Пока получается. Можно смотреть видео, пока переводишь китайский сайт;
• Уволиться (надеюсь, никто из моей компании меня не читает). Слишком кардинально. Я люблю работу и проект. Мне хочется хоть раз в две недели делать что-то интересное. Но я понимаю, что вряд ли я быстро найду такой же хороший коллектив и хорошее место;
• Ждать и верить в лучшее. Вот это и делаю. Не всегда же я буду писать тесты. Когда-нибудь они закончатся;
Теперь ответы на заголовок статьи:
• Не остановиться в развитии мне помогает этот блог и YouTube-канал. Приходится находить новую информацию и что-то изучать. Всем новичкам советую так делать, если не хватает силы воли на самостоятельное развитие. Я узнала очень много нового пока искала что-нибудь для статей;
• Также я люблю писать код и пробовать новое, так что это тоже помогает. Можно в свободное время заняться чем-то интересным: написать бота для телеграмм или свой собственный проект. А ещё можно брать мелкие задачи на сайтах фриланса. Просто для опыта, а не ради денег;
• Я приучилась задавать вопрос «Почему?» почти всегда. И это правда полезно. Иногда многое открываешь задавая этот простой вопрос казалось бы на очевидную фразу.
Как джуниору, мне постоянно нужно учиться и не останавливаться на одном уровне. Это сложно делать, когда тебе дают какие-то однотипные или скучные задачи. Например, задачи уровня поменять картинку и цвет кнопки или писать тесты. И если с первыми всё ок (кто-то должен это делать), то тесты (ui, а не обычные) я просто ненавижу и чувствую, что тупею с каждым днём от такой задачи. Я не вижу ничего нового. Только эспрессо. Ещё больше снижает воодушевлённость то, что информации по тестам с нужными условиями почти нет. Две статьи на китайском сайте, где нет решений.
Что можно сделать?
• Попросить дать более интересную задачу в следующий раз. У меня не сработало;
• Полюбить тесты. Тоже не сработало;
• Параллельно учиться чему-то. Пока получается. Можно смотреть видео, пока переводишь китайский сайт;
• Уволиться (надеюсь, никто из моей компании меня не читает). Слишком кардинально. Я люблю работу и проект. Мне хочется хоть раз в две недели делать что-то интересное. Но я понимаю, что вряд ли я быстро найду такой же хороший коллектив и хорошее место;
• Ждать и верить в лучшее. Вот это и делаю. Не всегда же я буду писать тесты. Когда-нибудь они закончатся;
Теперь ответы на заголовок статьи:
• Не остановиться в развитии мне помогает этот блог и YouTube-канал. Приходится находить новую информацию и что-то изучать. Всем новичкам советую так делать, если не хватает силы воли на самостоятельное развитие. Я узнала очень много нового пока искала что-нибудь для статей;
• Также я люблю писать код и пробовать новое, так что это тоже помогает. Можно в свободное время заняться чем-то интересным: написать бота для телеграмм или свой собственный проект. А ещё можно брать мелкие задачи на сайтах фриланса. Просто для опыта, а не ради денег;
• Я приучилась задавать вопрос «Почему?» почти всегда. И это правда полезно. Иногда многое открываешь задавая этот простой вопрос казалось бы на очевидную фразу.
Как устроен Android. Частый вопрос на собеседованиях.
Сегодня посмотрим на то, как внутри устроена ОС Android. Этот вопрос частенько задают на собеседованиях. Мне правда задавали его только один раз, но ходят слухи, что в хороших компаниях это спрашивают.
Специально для вас нарисовала картинку. В душе я дизайнер, так что надеюсь, вы оценили сочетание цветов. Не бойтесь, если она выглядит страшновато из-за непонятных слов (не из-за дизайна!). :)
Мы смотрим только основные элементы. Если хотите ещё подробнее разобраться, то пишите. Мб когда-нибудь посмотрю.
Каждый верхний уровень использует нижний уровень, который находится под ним.
Начнём снизу:
• Ядро Linux — ОС Android основана на ОС Linux. Что тут происходит? Это собственно ядро ОС, которое позволяет приложениям (которые мы пишем) использовать всякие функции устройства: звук, видео, сеть и т.п. Также тут происходит управление потоками и процессами. Каждое приложение создаётся в своём процессе и в своей среде выполнения. Внутри одного процесса может быть несколько потоков. Именно на этом розовом уровне решается, сколько времени получит процесс и потоки.
• Среда выполнения — это такая среда, которая выполняет скомпилированный байт-код в виртуальной машине Android-приложения. У каждого приложения своя среда выполнения. Раньше это был Dalvik, а теперь ART (после API 19).
• Системные библиотеки — тут всякие библиотеки, которые работают с графикой, базами данных, системными ресурсами и т.п. Эти библиотеки обычно написаны на С/С++. Мы, как разработчики обычных Android-приложений, напрямую не работаем с системными библиотеками. Прикладная среда (фиолетовый слой выше) даёт нам для этого обёртки, которые написаны на Java. Это то, что мы обычно используем в нашем коде.
• Прикладная среда — подходим уже ближе к самому андроиду. Тут различные классы Android для работы со всем, что нужно для написания приложения (ресурсы, компоненты и т.п.). Здесь определяются жизненные циклы и взаимодействие компонентов друг с другом. Тут же у нас находятся всякие интересные штуки для асинхронного выполнения: Handler, IntentService, AsyncTask, Loaders и дп.
• Ядро Java — библиотеки Java, которые мы используем в наших приложениях и которые используются в прикладной среде. Например, java.lang и java.util.
• Приложения — наши обычные приложения, которые мы пишем. Тут мы можем использовать уровень ниже: прикладную среду и ядро Java.
Как видите, всё гораздо проще, чем могло показаться. Если совсем кратко: наши приложения используют прикладную среду для написания самого кода и ядро Java, которое предоставляет нам обёртки для системных библиотеки. Системные библиотеки написаны на си и там происходит работа с графикой и другими сложными вещами, которые как-то взаимодействуют с системой, т.е. с телефоном/планшетом и т.п.
И чуть-чуть в стороне есть среда выполнения, которая заставляет наше приложение работать. И создаётся эта среда выполнения на нижнем слое в ядре Linux.
Сегодня посмотрим на то, как внутри устроена ОС Android. Этот вопрос частенько задают на собеседованиях. Мне правда задавали его только один раз, но ходят слухи, что в хороших компаниях это спрашивают.
Специально для вас нарисовала картинку. В душе я дизайнер, так что надеюсь, вы оценили сочетание цветов. Не бойтесь, если она выглядит страшновато из-за непонятных слов (не из-за дизайна!). :)
Мы смотрим только основные элементы. Если хотите ещё подробнее разобраться, то пишите. Мб когда-нибудь посмотрю.
Каждый верхний уровень использует нижний уровень, который находится под ним.
Начнём снизу:
• Ядро Linux — ОС Android основана на ОС Linux. Что тут происходит? Это собственно ядро ОС, которое позволяет приложениям (которые мы пишем) использовать всякие функции устройства: звук, видео, сеть и т.п. Также тут происходит управление потоками и процессами. Каждое приложение создаётся в своём процессе и в своей среде выполнения. Внутри одного процесса может быть несколько потоков. Именно на этом розовом уровне решается, сколько времени получит процесс и потоки.
• Среда выполнения — это такая среда, которая выполняет скомпилированный байт-код в виртуальной машине Android-приложения. У каждого приложения своя среда выполнения. Раньше это был Dalvik, а теперь ART (после API 19).
• Системные библиотеки — тут всякие библиотеки, которые работают с графикой, базами данных, системными ресурсами и т.п. Эти библиотеки обычно написаны на С/С++. Мы, как разработчики обычных Android-приложений, напрямую не работаем с системными библиотеками. Прикладная среда (фиолетовый слой выше) даёт нам для этого обёртки, которые написаны на Java. Это то, что мы обычно используем в нашем коде.
• Прикладная среда — подходим уже ближе к самому андроиду. Тут различные классы Android для работы со всем, что нужно для написания приложения (ресурсы, компоненты и т.п.). Здесь определяются жизненные циклы и взаимодействие компонентов друг с другом. Тут же у нас находятся всякие интересные штуки для асинхронного выполнения: Handler, IntentService, AsyncTask, Loaders и дп.
• Ядро Java — библиотеки Java, которые мы используем в наших приложениях и которые используются в прикладной среде. Например, java.lang и java.util.
• Приложения — наши обычные приложения, которые мы пишем. Тут мы можем использовать уровень ниже: прикладную среду и ядро Java.
Как видите, всё гораздо проще, чем могло показаться. Если совсем кратко: наши приложения используют прикладную среду для написания самого кода и ядро Java, которое предоставляет нам обёртки для системных библиотеки. Системные библиотеки написаны на си и там происходит работа с графикой и другими сложными вещами, которые как-то взаимодействуют с системой, т.е. с телефоном/планшетом и т.п.
И чуть-чуть в стороне есть среда выполнения, которая заставляет наше приложение работать. И создаётся эта среда выполнения на нижнем слое в ядре Linux.
Мы упорно игнорировали вирус и говорили, что всё в порядке, но он всё равно к нам пришёл. Весь день в голове одна мысль: "Ты можешь уйти с удалённой работы, но она всё равно найдёт тебя". Последние 5 лет я работала удалённо, поэтому специально искала работу, чтобы ходить в офис и общаться с людьми. Плюс, как джуниору, мне мега-важно, чтобы я могла подойти, показать что-то и спросить в стиле "Ну вот тут какая-то непонятная штука. И показывает вот это. Что делать?". И мне помогают, потому что видят, что у меня происходит.
Сейчас нас переводят на удалённую работу. Это не только мы. Во многих компаниях принудительно уже перевели. В некоторых только начинают. У нас вот, например, даже есть выбор: можно дома сидеть, а можно ездить в офис. Конечно, я предпочла второй вариант. Но теперь беда в том, что мой любимый ведущий программист, которого я всегда мучаю вопросами, решил работать из дома (надеюсь, не из-за меня). Немного радует, что есть всё-таки разработчики, которые тоже будут ходить в офис.
Немного почитала новостей и пишут, что планируют чуть ли не комендантский час внедрять и запрет транспорта в вечернее время. Да и всеобщая паника вокруг начинает передаваться. Даже на хабре статьи про вирус начали писать. Я теперь на каждого человека в маске теперь смотрю с подозрением, хотя и понимаю, что это просто не самые умные люди, которые абсолютно здоровы. И немного рада, что испытательный срок уже прошел и есть дмс. Хотя бы не так страшно теперь болеть.
А вообще: не болейте, пожалуйста. И будьте осторожны. Пусть учёные побыстрее найдут лекарство и всех вылечат.
Сейчас нас переводят на удалённую работу. Это не только мы. Во многих компаниях принудительно уже перевели. В некоторых только начинают. У нас вот, например, даже есть выбор: можно дома сидеть, а можно ездить в офис. Конечно, я предпочла второй вариант. Но теперь беда в том, что мой любимый ведущий программист, которого я всегда мучаю вопросами, решил работать из дома (надеюсь, не из-за меня). Немного радует, что есть всё-таки разработчики, которые тоже будут ходить в офис.
Немного почитала новостей и пишут, что планируют чуть ли не комендантский час внедрять и запрет транспорта в вечернее время. Да и всеобщая паника вокруг начинает передаваться. Даже на хабре статьи про вирус начали писать. Я теперь на каждого человека в маске теперь смотрю с подозрением, хотя и понимаю, что это просто не самые умные люди, которые абсолютно здоровы. И немного рада, что испытательный срок уже прошел и есть дмс. Хотя бы не так страшно теперь болеть.
А вообще: не болейте, пожалуйста. И будьте осторожны. Пусть учёные побыстрее найдут лекарство и всех вылечат.
Не могу не поделиться. Вы только посмотрите, какая потрясающая вещь. Карты для разработчиков, чтобы оценивать время для задач. Сегодня меня учили это делать в игровой форме. Было интересно и продуктивно. И даже когда я называла завышенные цифры, то все было ок и ответ принимался как будто это и ожидалось.
После стажировки я немного боялась, когда меня начнут просить оценивать время. Потому что там тимлид был очень прямолинеен и прямо сразу просил конкретные цифры. А когда я один раз рискнула назвать, то в ответ было «И это столько времени всего на две кнопки?!». Он очень хороший руководитель, но немного жесткий для меня. Ну не умеют начинающие точно понять, сколько времени понадобится. Все-таки как мне повезло с командой в этот раз ❤️
После стажировки я немного боялась, когда меня начнут просить оценивать время. Потому что там тимлид был очень прямолинеен и прямо сразу просил конкретные цифры. А когда я один раз рискнула назвать, то в ответ было «И это столько времени всего на две кнопки?!». Он очень хороший руководитель, но немного жесткий для меня. Ну не умеют начинающие точно понять, сколько времени понадобится. Все-таки как мне повезло с командой в этот раз ❤️
Как здорово, что даже во время карантина продолжается какая-то активность. Ура. :)
Forwarded from Android Dev Virtual Meetups
Первый митап понедельник 23 марта в 19-00 по московскому времени.
Денис Неклюдов об IoT хобби:
Эфир уже доступен для подписки: https://youtu.be/_tDcYDUNr3c
Денис Неклюдов об IoT хобби:
Internet of Things-хобби в связке с Android. Разберем что такое ESP8266, Raspberry Pi, Arduino, MQQT и как это все контролировать с Android за 30 минутЭфир уже доступен для подписки: https://youtu.be/_tDcYDUNr3c
YouTube
Денис Неклюдов об IoT хобби: IoT хобби в связке с Android.
Денис Неклюдов о IoT хобби:
IoT хобби в связке с Android. Разберем что за ESP8266, Raspberry Pi, Arduino, MQTT и как это все контролировать с Android за 30 минут
Организовано при поддержке Android Broadcast и Android Dev Podcast
Полезные ссылки:
- Слайды…
IoT хобби в связке с Android. Разберем что за ESP8266, Raspberry Pi, Arduino, MQTT и как это все контролировать с Android за 30 минут
Организовано при поддержке Android Broadcast и Android Dev Podcast
Полезные ссылки:
- Слайды…
https://zen.yandex.ru/media/id/5ddd77e9f4882e4380666d35/kak-peredat-v-metod-neopredelennoe-kolichestvo-parametrov-vararg-v-kotlin-5e761363aed81f64b076be69 Про vararg в Kotlin. Возможно, кому-то тоже будет полезно.
Яндекс Дзен
Как передать в метод неопределенное количество параметров? Vararg в Kotlin
Бывают ситуации, когда в метод нужно передать какое-то количество параметров одного типа, но мы не знаем, сколько их будет. В Java это возможно сделать: В method1 принимается String... names — вот эти три точки как раз означают, что в метод можно передать…
Уже неделю наша команда работает удалённо. Я ужасно боялась этого момента. Мне важно взаимодействовать с командой и общаться. Плюс, как джуниору, мне надо задавать миллион вопросов всем подряд. Я очень боялась, что в итоге немного останусь в стороне и не смогу полноценно работать и познавать новое. Что получилось в итоге:
— Первые дни и правда тяжелые. Сложно проснуться и заставить себя одеться и идти работать. Постоянно хотелось отвлечься на помыть посуду/помыть пол/приготовить еду. Немного помог таймер помодоро;
— Очень важно не бояться писать вопросы в чате. Вот раньше я подходила ко всем, а теперь можно эти вопросы писать. Иногда так даже удобнее. Никого не отвлекаешь и тебе ответят, когда будет время;
— Очень помогают ежедневные созвоны. Это помогает остаться в рабочем ритме;
— В скайпе нужно выключать микрофон, если не разговариваешь. А разговоры одновременно — кошмар. Но зато мы научились слушать друг-друга;
— Сложно остановиться и не работать, если время закончилось. Но отдыхать надо. Не стоит смотреть всего один маленький баг/PR в час ночи;
— Работу вполне получается выполнять удалённо, но мы все безумно скучаем по офису и общению. Быстрей бы вернуться.
— Можно играть в удалённое бинго. Я близка к победе. :)
— Первые дни и правда тяжелые. Сложно проснуться и заставить себя одеться и идти работать. Постоянно хотелось отвлечься на помыть посуду/помыть пол/приготовить еду. Немного помог таймер помодоро;
— Очень важно не бояться писать вопросы в чате. Вот раньше я подходила ко всем, а теперь можно эти вопросы писать. Иногда так даже удобнее. Никого не отвлекаешь и тебе ответят, когда будет время;
— Очень помогают ежедневные созвоны. Это помогает остаться в рабочем ритме;
— В скайпе нужно выключать микрофон, если не разговариваешь. А разговоры одновременно — кошмар. Но зато мы научились слушать друг-друга;
— Сложно остановиться и не работать, если время закончилось. Но отдыхать надо. Не стоит смотреть всего один маленький баг/PR в час ночи;
— Работу вполне получается выполнять удалённо, но мы все безумно скучаем по офису и общению. Быстрей бы вернуться.
— Можно играть в удалённое бинго. Я близка к победе. :)
Немного информации про то, как создать модуль buildSrc. Помню, что у меня далеко не с первого раза получилось это сделать. Надеюсь, что кому-то будет полезно. :) https://zen.yandex.ru/media/id/5ddd77e9f4882e4380666d35/kak-sozdat-modul-buildsrc-i-zachem-5e7f5297587fbc169934d873
Яндекс Дзен
Как создать модуль buildSrc и зачем?
Я этот модуль использую, чтобы создать красивые зависимости и чтобы не засорять основные build.gradle лишней информацией. Учитывая, что я фанатка многомодульности, то это ещё и помогает повышать версии, не заходя в каждый модуль. В Android Studio нажимаем…
https://zen.yandex.ru/media/id/5ddd77e9f4882e4380666d35/voprosy-djunioram-na-sobesedovanii-android-5e80888d93baaa4efffe9f6d о том, какие вопросы мне задавали на собеседовании на джуниора.
Дзен | Статьи
Вопросы джуниорам на собеседовании. Android.
Статья автора «Блог Android-разработчицы» в Дзене ✍: Я уже 4 месяца как работаю, но в моей голове свежи воспоминания о собеседованиях. Итак, какие вопросы мне задавали.
Я тут подсела на https://leetcode.com. Так как карантин и делать нечего, то сначала я вспомнила про https://www.hackerrank.com. Его я тоже очень люблю, но вы только посмотрите какой литкод красивый! А ещё мне очень нравится, что он считает скорость. ❤️
Leetcode
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
https://zen.yandex.ru/media/id/5ddd77e9f4882e4380666d35/sozdaiu-svoego-telegrambota-chast-1-5e8757f401822a01b722b0ee вторая попытка создать своего бота. Теперь без сторонних библиотек. Наконец-то получилось настроить прокси, чтобы запросы проходили. Ура :)
Яндекс Дзен
Создаю своего телеграм-бота. Часть 1.
Впереди выходные и я подумала, что было бы неплохо чем-то полезным заняться. Я думаю сделать простого бота, который будет генерировать какие-то предложения на тему, чем заняться дома. Я уже пробовала создавать бота и основная информация есть здесь: https…
Вчера я участвовала в https://leetcode.com/contest/biweekly-contest-23. Само соревнование длилось 1,5 часа. За это время надо было решить 4 задачи: 1 легкая, 2 среднего уровня и 1 сложная. И у меня ушло минут 15 просто на то, чтобы перестать пугаться заданий и понять их. Кстати, за это время многие уже решили все 4 задачи. У первого места время 14:15.
Я смогла решить две задачи: лёгкую и сложную. Причём начала я сначала зачем-то со сложной, потом остановилась и сделала лёгкую, а потом вернулась к сложной. А вот на средние не хватило времени, да и я не особо старалась их понять.
После окончания соревнования можно посмотреть, что написали соперники. Было интересно видеть, как победители в несколько строчек элегантно вместили мой код на 500 строчек.
Качество решений, конечно, сильно хромает, потому что было ограниченное время. Но я всё равно довольна. Это очень полезный опыт.
В целом, мне очень понравилось и я буду пробовать ещё! 🏆
Я смогла решить две задачи: лёгкую и сложную. Причём начала я сначала зачем-то со сложной, потом остановилась и сделала лёгкую, а потом вернулась к сложной. А вот на средние не хватило времени, да и я не особо старалась их понять.
После окончания соревнования можно посмотреть, что написали соперники. Было интересно видеть, как победители в несколько строчек элегантно вместили мой код на 500 строчек.
Качество решений, конечно, сильно хромает, потому что было ограниченное время. Но я всё равно довольна. Это очень полезный опыт.
В целом, мне очень понравилось и я буду пробовать ещё! 🏆
Leetcode
Contest - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
Почему не получается придумать красивое название для метода
Вчера я очень сильно злилась, потому что с ревью вернулся код уже второй раз. И снова были комментарии про названия. При этом я стараюсь называть нормально, а не в стиле abc15. Конечно, сначала я психанула. Ну ведь очевидно, что метод делает вот это, а потом вот это. Ну что тебе ещё надо от меня? Уже вечером, после бокала вина, я успокоилась и посмотрела комментарии ещё раз. И тут до меня дошло, почему я не могу придумать идеальное название. Да просто потому что мой метод занимается двумя разными вещами, которые в принципе не совместимы. Не могу же я его назвать methodDoThisAndThenDoThat. И вот так вот просто комментарий про название привёл к большому рефакторингу. Зато теперь из названия сразу видно, что именно происходит.
Пока что у меня есть такой недостаток, что я иногда забываю, что один метод должен заниматься чем-то одним. Постоянно кажется, что если добавить ещё одну маленькую детальку, то ничего не изменится, но нет. Вероятно, надо всё-таки начать читать "Чистый код". Как раз карантин и самое подходящее время для этого.
Вчера я очень сильно злилась, потому что с ревью вернулся код уже второй раз. И снова были комментарии про названия. При этом я стараюсь называть нормально, а не в стиле abc15. Конечно, сначала я психанула. Ну ведь очевидно, что метод делает вот это, а потом вот это. Ну что тебе ещё надо от меня? Уже вечером, после бокала вина, я успокоилась и посмотрела комментарии ещё раз. И тут до меня дошло, почему я не могу придумать идеальное название. Да просто потому что мой метод занимается двумя разными вещами, которые в принципе не совместимы. Не могу же я его назвать methodDoThisAndThenDoThat. И вот так вот просто комментарий про название привёл к большому рефакторингу. Зато теперь из названия сразу видно, что именно происходит.
Пока что у меня есть такой недостаток, что я иногда забываю, что один метод должен заниматься чем-то одним. Постоянно кажется, что если добавить ещё одну маленькую детальку, то ничего не изменится, но нет. Вероятно, надо всё-таки начать читать "Чистый код". Как раз карантин и самое подходящее время для этого.
Наткнулась я сегодня на LeetCode на, казалось бы, простую задачку: Given an array nums of integers, return how many of them contain an even number of digits. Надо просто из массива чисел найти сколько из них имеют чётное количество цифр.
Думаю, многие решат эту задачку обычным делением. Я тоже изначально так сделала, а потом начала искать более оптимальные способы и нашла статью: https://www.baeldung.com/java-number-of-digits-in-int#3-repeated-multiplication
И вот интересные выводы, которые я сегодня сделала:
1. Это мне посоветовал друг. Чтобы оценивать, что сложнее: умножение, деление или логарифм — надо взять листочек, два числа и выполнить каждое действие с ними. Будет очевидно, что умножение самое простое и экономит примерно 30% времени;
2. Логарифм самый сложный. И это не только на листочке. Во-первых, даже смотреть на формулу сложно. А во-вторых, там внутри есть ещё перевод int в double и обратно;
3. Варианты со String и сравнением я сразу отбросила. Они даже выглядят не очень. Если я в проекте применю где-то такое сравнение, то, боюсь, моего тимлида потом придётся отпаивать вином и валерьянкой;
4. Даже самая простая задачка может привести к интересным выводам.
А ещё я тут познаю codeforces и topcoder. Визуально они выглядят намного хуже чем литкод, но я решила дать и им шанс.
Думаю, многие решат эту задачку обычным делением. Я тоже изначально так сделала, а потом начала искать более оптимальные способы и нашла статью: https://www.baeldung.com/java-number-of-digits-in-int#3-repeated-multiplication
И вот интересные выводы, которые я сегодня сделала:
1. Это мне посоветовал друг. Чтобы оценивать, что сложнее: умножение, деление или логарифм — надо взять листочек, два числа и выполнить каждое действие с ними. Будет очевидно, что умножение самое простое и экономит примерно 30% времени;
2. Логарифм самый сложный. И это не только на листочке. Во-первых, даже смотреть на формулу сложно. А во-вторых, там внутри есть ещё перевод int в double и обратно;
3. Варианты со String и сравнением я сразу отбросила. Они даже выглядят не очень. Если я в проекте применю где-то такое сравнение, то, боюсь, моего тимлида потом придётся отпаивать вином и валерьянкой;
4. Даже самая простая задачка может привести к интересным выводам.
А ещё я тут познаю codeforces и topcoder. Визуально они выглядят намного хуже чем литкод, но я решила дать и им шанс.
Baeldung on Kotlin
Number of Digits in an Integer in Java | Baeldung
Learn different ways of getting the number of digits in an Integer in Java.
Недавно мне дали две задачи, которые я никак не могу сделать. Обе на изучение и в обеих мой ответ: без понятия что тут происходит.
На фоне этих задач, которые бесконечно вводят меня в печаль, когда я их вижу, вспомнились мне дни работы в техподдержке. К нам часто приходили пользователи с багами. Мы эти баги относили разработчикам, а в ответ довольно часто было "Хз. У меня не воспроизводится". И тогда я злилась, потому что ну как так? Вот же пользователь! У него всё плохо! Чините давайте. Не воспроизводится у них видите ли.
А вот теперь я встала на позицию разработчика и теперь у меня не воспроизводится. Но в моей компании я не могу ответить "Хз". Надо решить проблему и помочь, чтобы никто не остался расстроенным. И вот уже второй день мой диалог с коллегой выглядит примерно так:
— Слушай, а может это? У меня воспроизвелось с такими настройками.
— Нет. У клиента правильные настройки.
— Блин.
И это циклично повторяется примерно каждые пять часов. Я даже попыталась сделать перерыв, чтобы с новыми силами потом вернуться к задачам, но и это не помогло. Просто какой-то тлен и безысходность. Надеюсь, завтра я проснусь и придёт озарение, что именно могло пойти не так.
На фоне этих задач, которые бесконечно вводят меня в печаль, когда я их вижу, вспомнились мне дни работы в техподдержке. К нам часто приходили пользователи с багами. Мы эти баги относили разработчикам, а в ответ довольно часто было "Хз. У меня не воспроизводится". И тогда я злилась, потому что ну как так? Вот же пользователь! У него всё плохо! Чините давайте. Не воспроизводится у них видите ли.
А вот теперь я встала на позицию разработчика и теперь у меня не воспроизводится. Но в моей компании я не могу ответить "Хз". Надо решить проблему и помочь, чтобы никто не остался расстроенным. И вот уже второй день мой диалог с коллегой выглядит примерно так:
— Слушай, а может это? У меня воспроизвелось с такими настройками.
— Нет. У клиента правильные настройки.
— Блин.
И это циклично повторяется примерно каждые пять часов. Я даже попыталась сделать перерыв, чтобы с новыми силами потом вернуться к задачам, но и это не помогло. Просто какой-то тлен и безысходность. Надеюсь, завтра я проснусь и придёт озарение, что именно могло пойти не так.