#вопросы_с_собеседований
🐦 Swift
Что такое паттерн Singleton и где он может быть полезен?
Паттерн Singleton гарантирует, что класс имеет только один экземпляр и обеспечивает глобальную точку доступа к этому экземпляру. Синглтоны полезны для общих ресурсов, таких как сетевые сессии или соединения с базами данных, где наличие нескольких экземпляров может привести к конфликтам или потреблению чрезмерных ресурсов.
Пример синглтона:
class NetworkManager {
static let shared = NetworkManager()
private init() {
// Инициализация сетевых конфигураций или задач
}
func fetchData(from url: URL, completion: @escaping (Data?, Error?) -> Void) {
URLSession.shared.dataTask(with: url) { data, response, error in
DispatchQueue.main.async {
completion(data, error)
}
}.resume()
}
}
В этом примере NetworkManager имеет статическое свойство shared, которое хранит единственный экземпляр класса.
🐦 Swift
Что такое паттерн Singleton и где он может быть полезен?
Пример синглтона:
class NetworkManager {
static let shared = NetworkManager()
private init() {
// Инициализация сетевых конфигураций или задач
}
func fetchData(from url: URL, completion:
URLSession.shared.dataTask(with: url) { data, response, error in
DispatchQueue.main.async {
completion(data, error)
}
}.resume()
}
}
В этом примере NetworkManager имеет статическое свойство shared, которое хранит единственный экземпляр класса.
❤3⚡1👍1🥱1
⚙️ Автоматизация обнаружения утечек памяти
Статья о том, как автоматизировать обнаружение утечек памяти с интеграцией CI для iOS. Автор объясняет, что не все циклы удержания являются утечками, и что утечки могут возникать, когда мы теряем ссылку на объект, который имеет цикл удержания. Как использовать инструмент Xcode Memory Graph Debugger для поиска и исправления утечека, автоматизация этого процесса с помощью Fastlane и Danger.
💡 Обо всём подробнее в статье
Статья о том, как автоматизировать обнаружение утечек памяти с интеграцией CI для iOS. Автор объясняет, что не все циклы удержания являются утечками, и что утечки могут возникать, когда мы теряем ссылку на объект, который имеет цикл удержания. Как использовать инструмент Xcode Memory Graph Debugger для поиска и исправления утечека, автоматизация этого процесса с помощью Fastlane и Danger.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Статья Долгополова Дениса из Ozon Tech, рассказывает о том, как работают куки в Android и как их можно управлять с помощью разных классов и методов. Автор объясняет, что такое куки, зачем они нужны, какие у них свойства и как они влияют на безопасность и производительность приложений. Демонстрирует, как можно использовать WebView для отображения веб-страниц с куками и как настраивать CookieManager и CookieStore для хранения и передачи куков между приложением и сервером.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1🎉1
Современный мир прогрессирует, и одно из достижений это супераппы. Но в этом свои минусы — долгая компиляция, огромный код, сложность рефакторинга и огромные затраты на создание новых функций. Решили спросить у вас, что думаете об этом?
Используете ли вы супераппы? Кажутся ли они вам удобными?
#интерактив
Используете ли вы супераппы? Кажутся ли они вам удобными?
#интерактив
⚡1
Вышли первые Mobile Interview — неформальные беседы про мобильную разработку в Яндексе
Ребята из разных команд мобильной разработки Яндекса рассказывают, какие задачи решают каждый день и почему им нравится эта работа. Первые выпуски уже можно посмотреть на YouTube-канале Yandex for Mobile:
🔸 В первом выпуске обсудили инфраструктуру Такси. Как и зачем собирать команду мобильной инфраструктуры приложения и чем ребята занимаются на ежедневной основе.
🔸 Во втором выпуске разбирались в разработке Карт. Какие задачи ребята решают, как адаптируются под сложности определения геолокации, развивается ли MapKit, как уживаются приложения Карт и Навигатора.
🔸 В третьем выпуске беседовали о разработке под iOS. Как мы делали браузер под iOS, легко ли переключаться между платформами и под какую проще разрабатывать, что нужно сделать, чтобы завоевать авторитет в большой команде, и в чём заключается специфика разработки браузеров.
🔸 В четвёртом выпуске поговорили с деврелом. Что за люди делают мероприятия для мобильных разработчиков, как организовать большую конференцию и не сойти с ума, чем ещё занимаются DevRel-команды и зачем простым разработчикам связываться с ними.
Смотрите интервью и подписывайтесь на канал — скоро там выйдет пятый выпуск Mobile Interview.
Ребята из разных команд мобильной разработки Яндекса рассказывают, какие задачи решают каждый день и почему им нравится эта работа. Первые выпуски уже можно посмотреть на YouTube-канале Yandex for Mobile:
🔸 В первом выпуске обсудили инфраструктуру Такси. Как и зачем собирать команду мобильной инфраструктуры приложения и чем ребята занимаются на ежедневной основе.
🔸 Во втором выпуске разбирались в разработке Карт. Какие задачи ребята решают, как адаптируются под сложности определения геолокации, развивается ли MapKit, как уживаются приложения Карт и Навигатора.
🔸 В третьем выпуске беседовали о разработке под iOS. Как мы делали браузер под iOS, легко ли переключаться между платформами и под какую проще разрабатывать, что нужно сделать, чтобы завоевать авторитет в большой команде, и в чём заключается специфика разработки браузеров.
🔸 В четвёртом выпуске поговорили с деврелом. Что за люди делают мероприятия для мобильных разработчиков, как организовать большую конференцию и не сойти с ума, чем ещё занимаются DevRel-команды и зачем простым разработчикам связываться с ними.
Смотрите интервью и подписывайтесь на канал — скоро там выйдет пятый выпуск Mobile Interview.
❤3
Аналитика магазинов приложений в России за ноябрь 2023 года. В ней рассказывается о том, какие приложения были самыми скачиваемыми и зарабатывающими в этот период.
Спойлер: Телеграм и Wildberries в топах по установкам.
Вся статистика тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за ноябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
🗺️ Дорожная карта Go-разработчика в 2023 году
🧑💻 6 карьерных советов программисту
⚖️ 25 курсов, книг и подкастов для развития критического мышления
🐍🎨 Генерация красивых QR-кодов с помощью Python
🔈16+ лучших нейронок для синтеза речи
⭐ FAQ по трудоустройству: разбираем самые популярные вопросы
👨💻 7 типов «сложных» разработчиков
∞ Дорожная карта DevOps-инженера в 2023 году
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
🔤 Азбука SQL в примерах (часть 1 + часть 2)
🔢 Как научиться решать сложные задачи
🏆 Самые популярные языки программирования 2023
📰❌ 10 признаков фейковой вакансии
🏃 Самоучитель по Go для начинающих (часть 1 + часть 2)
⚛️ 45 вопросов для подготовки к собеседованию по React
🐍 5 задач для подготовки к собеседованию по Python
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
🗺️ Дорожная карта Go-разработчика в 2023 году
🧑💻 6 карьерных советов программисту
⚖️ 25 курсов, книг и подкастов для развития критического мышления
🐍🎨 Генерация красивых QR-кодов с помощью Python
🔈16+ лучших нейронок для синтеза речи
⭐ FAQ по трудоустройству: разбираем самые популярные вопросы
👨💻 7 типов «сложных» разработчиков
∞ Дорожная карта DevOps-инженера в 2023 году
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
👀 6 способов привлечь внимание работодателя
🤖📜 Искусственный интеллект: краткая история
🔤 Азбука SQL в примерах (часть 1 + часть 2)
🔢 Как научиться решать сложные задачи
🏆 Самые популярные языки программирования 2023
📰❌ 10 признаков фейковой вакансии
🏃 Самоучитель по Go для начинающих (часть 1 + часть 2)
⚛️ 45 вопросов для подготовки к собеседованию по React
🐍 5 задач для подготовки к собеседованию по Python
🐍🤖✍️ Документирование кода и проектов на Python с помощью ChatGPT
👍1🔥1🎉1
#джайджест полезностей мобильного разработчика
🔹 SberPay в своё приложение — как добавить и какие преимущества.
🔹 FlexibleBottomSheet — расширенный нижний экран для Jetpack Compose.
🔹 Библиотека foSho — создаём безопасную и эффективную навигацию в Jetpack Compose.
🔹 Не делайте так — какие практики и действия вредят качеству кода.
🔹 Inline функции — что это такое и зачем они нужны?
🔹 Мастер в функциях — какие функции в Kotlin являются необходимыми для каждого.
🔹 Baseline Profiles — создаём профиль для ускорения приложения.
🔹 SberPay в своё приложение — как добавить и какие преимущества.
🔹 FlexibleBottomSheet — расширенный нижний экран для Jetpack Compose.
🔹 Библиотека foSho — создаём безопасную и эффективную навигацию в Jetpack Compose.
🔹 Не делайте так — какие практики и действия вредят качеству кода.
🔹 Inline функции — что это такое и зачем они нужны?
🔹 Мастер в функциях — какие функции в Kotlin являются необходимыми для каждого.
🔹 Baseline Profiles — создаём профиль для ускорения приложения.
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1🎉1
🖼️ Легко создаём ассеты для своих проектов
AssetsGen — приложения для разработчиков iOS и Android, которое позволяет легко создавать и управлять ассетами. С помощью AssetsGen вы сможете:
– Генерировать ассеты разных размеров и форматов для разных устройств и платформ;
– Экспортировать ассеты в Xcode и Android Studio.
#полезное
AssetsGen — приложения для разработчиков iOS и Android, которое позволяет легко создавать и управлять ассетами. С помощью AssetsGen вы сможете:
– Генерировать ассеты разных размеров и форматов для разных устройств и платформ;
– Экспортировать ассеты в Xcode и Android Studio.
#полезное
❤1
В Swift typealias позволяет вам создавать псевдоним для существующего типа данных. Его можно использовать для того, чтобы сделать код более понятным и удобочитаемым, давая более описательные имена типам данных, особенно если они имеют сложную структуру.
typealias Point = (x: Int, y: Int)
Но здесь есть но. Если мы будем использовать Double, то код не сбилдится.
typealias Point = (x: Int, y: Int)
let pointUsingInt = Point(x: 1, y: 2)
let pointUsingDouble = Point (x: 3.0, y: 4.0)
И здесь нас спасут generic`и!
typealias Point<T> = (x: T, y: T)
Теперь наш код будем принимать Int и Double.
Но мы можем улучшить код. Ограничиваем ввод только числовым типом:
typealias Point<T: Numeric> = (x: T, y: T)
В чём ещё полезность? Мы можем убрать лишний код в completionHanlder:
typealias CompletionHandler<T> = (Result<T, Error>) –> Void
func fetchData(_ completion: @escaping CompletionHandler<Data>) { }
Выглядит лучше! Осваивайте новую фишку и используйте на практике.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥱3❤2😁1
В статье вы узнаете внутреннее устройство iMessage, изученного автором в процессе работы над pypush — опенсорсным проектом по воссозданию реализации iMessage. Автор простым языком расссказывает о системе получения сообщений от Apple. От APNs до шифрования и аутентификации.
Ознакомиться со статьей можно тут
Github pypush
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1🎉1
Статья рассказывает о Gemini, новой мощной модели искусственного интеллекта от Google для Android. Gemini предназначена для работы в различных системах и представлена в трёх размерах: Ultra, Pro и Nano.
Gemini Nano, оптимизированный для мобильных устройств, способен выполнять задачи непосредственно на мобильном процессоре, включая качественное резюмирование текстов, контекстные умные ответы и продвинутую грамматическую коррекцию.
Нас ждёт интеграция с новой системой Android AICore в Android 14, обещающая новые горизонты в использовании AI на мобильных устройствах.
📘 Читать статью полностью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Обширное видео по функциональному программированию в Dart, языке программирования, поддерживающем несколько парадигм. Как более эффективно использовать функции функционального программирования, сравнение объектно-ориентированного и функционального подхода к созданию иерархий классов и многое другое.
00:00 — Императивное программирование против функционального
14:12 — Иерархии классов ООП
17:05 — Алгебраические типы данных
23:35 — Обработка ошибок с помощью Try-Catch
27:27 — Обработка ошибок с помощью Either
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🌚1
🧠Чему вы бы хотели научиться?
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
😁3🔥1
большой #дайджест полезностей по Kotlin и Swift
Swift
🔸 Swift Utilities — интегрируем SwiftUI в UIKit.
🔸 GPT for Apple — набор различных GPT, специализирующиеся на определенных фреймворках Apple.
🔸 Swift Macro — как скомпилировать макрос в бинарный файл и добавить его в спецификацию пода.
🔸 SFSafariViewController — открываем веб-страницы внутри приложения.
🔸 Интерактивные виджеты — Взаимодействуем с виджетами в SwiftUI.
Kotlin
🔹 Dynamic Features — как динамически загружать части функционала приложения в зависимости от потребностей пользователя или возможностей устройства.
🔹 Советы для новеньких — интервью с глобальными экспертами Google по разработке, которые делятся своими любимыми инструментами и советами для начинающих разработчиков.
🔹 Кража API ключей — использование различных инструментов для анализа сетевых запросов, декомпиляция и извлечения скрытых данных и как и предотвратить подобные атаки.
🔹 KSP2 — как настроить и использовать в своих проектах, и какие преимущества он дает.
🔹 CountryCP — библиотека для выбора страны и телефонного кода для Jetpack Compose.
Swift
🔸 Swift Utilities — интегрируем SwiftUI в UIKit.
🔸 GPT for Apple — набор различных GPT, специализирующиеся на определенных фреймворках Apple.
🔸 Swift Macro — как скомпилировать макрос в бинарный файл и добавить его в спецификацию пода.
🔸 SFSafariViewController — открываем веб-страницы внутри приложения.
🔸 Интерактивные виджеты — Взаимодействуем с виджетами в SwiftUI.
Kotlin
🔹 Dynamic Features — как динамически загружать части функционала приложения в зависимости от потребностей пользователя или возможностей устройства.
🔹 Советы для новеньких — интервью с глобальными экспертами Google по разработке, которые делятся своими любимыми инструментами и советами для начинающих разработчиков.
🔹 Кража API ключей — использование различных инструментов для анализа сетевых запросов, декомпиляция и извлечения скрытых данных и как и предотвратить подобные атаки.
🔹 KSP2 — как настроить и использовать в своих проектах, и какие преимущества он дает.
🔹 CountryCP — библиотека для выбора страны и телефонного кода для Jetpack Compose.
❤1🔥1🎉1
Собираетесь ли вы развиваться и заниматься программированием на новогодних праздниках? Что именно будете делать?
Anonymous Poll
33%
Попробую освоить новые инструменты и подходы к разработке
1%
Приму участие в хакатонах
4%
Посмотрю фильмы и сериалы про IT
36%
Поработаю над собственными проектами — добавлю новую функциональность
37%
Почитаю книги и статьи по программированию — расширю кругозор
46%
Просто отдохну и наберусь сил
❤3
В Swift можно имитировать наследование с помощью перечислений. Автор показывает, как использовать перечисления с ассоциированными значениями для создания разных типов фигур, которые имеют общий протокол. Он демонстрирует, как реализовать полиморфизм и динамическое связывание с помощью switch-выражений и расширений протоколов.
Примеры кода, иллюстрации и сама статья по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
#вопросы_с_собеседований
🤖 Kotlin
Зачем нужен класс
В Kotlin класс Nothing представляет собой специальный тип, который не имеет значений. В основном, он используется в качестве типа возвращаемого значения функций, которые никогда не завершаются нормально или выбрасывают исключение.
Рассмотрим несколько сценариев, когда Nothing может быть использован:
1. Функции, выбрасывающие исключение:
fun throwError(): Nothing {
throw RuntimeException(«This function always throws an exception.»)
}
В этом примере функция throwError возвращает тип Nothing, поскольку она всегда выбрасывает исключение и не возвращает нормальное значение.
2. Бесконечные циклы:
fun infiniteLoop(): Nothing {
while (true) {
// код, который никогда не завершится
}
}
Если функция выполняет бесконечный цикл или какой-то другой код, который никогда не завершается, она также может возвращать Nothing.
3. Процессы, которые не могут завершиться нормально:
fun launchRocket(): Nothing {
// код запуска ракеты, который не может завершиться нормально
}
Функции, представляющие процессы, которые не могут завершиться нормально, могут использовать Nothing в качестве типа возвращаемого значения.
Зачем нужен класс
Nothing
в Kotlin?Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in the widget
VIEW IN TELEGRAM
👍3