← Назад к вопросам

Расскажи про последнее место работы

1.0 Junior🔥 241 комментариев
#Опыт и софт-скиллы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Мой последний проект как Android Developer

Компания и проект

В последнем проекте я работал на финтех-приложение для управления инвестициями. Это была высоконагруженная система для работы с портфелями акций и крипто-активов.

Технологический стек

Архитектура:

  • Clean Architecture с разделением на Domain, Data, Presentation слои
  • MVVM + Repository pattern
  • Kotlin Coroutines для асинхронных операций
  • Jetpack Compose для UI (последние версии)

Основные библиотеки:

  • Kotlin Coroutines + Flow для реактивного программирования
  • Room для локального хранилища
  • Retrofit + OkHttp для сетевых запросов
  • Hilt для dependency injection
  • Jetpack Compose для UI
  • StateFlow + SharedFlow для состояния

Мои основные задачи

1. Разработка Real-time портфеля

Реализовал экран портфеля с обновлением цен в real-time через WebSocket

class PortfolioViewModel(
    private val portfolioRepository: PortfolioRepository
) : ViewModel() {
    private val _portfolio = MutableStateFlow<Portfolio?>(null)
    val portfolio: StateFlow<Portfolio?> = _portfolio.asStateFlow()
    
    private val _priceUpdates = MutableSharedFlow<PriceUpdate>()
    
    init {
        viewModelScope.launch {
            portfolioRepository.getPriceUpdates()
                .onEach { update ->
                    _priceUpdates.emit(update)
                }
                .collect()
        }
    }
}

2. Оптимизация производительности

  • Снизил время загрузки списка активов с 3 сек до 500 мс (кэширование + pagination)
  • Оптимизировал Compose рекомпозиции с помощью derivedStateOf
  • Реализовал virtual scrolling для больших списков

3. Работа с WebSocket и real-time данными

class PriceWebSocketManager(
    private val url: String
) {
    private val _prices = MutableSharedFlow<PriceUpdate>()
    val prices: SharedFlow<PriceUpdate> = _prices.asSharedFlow()
    
    fun connectAndListen() {
        viewModelScope.launch {
            webSocket.connect(url)
            webSocket.receiveAsFlow()
                .onEach { message ->
                    val priceUpdate = parsePriceUpdate(message)
                    _prices.emit(priceUpdate)
                }
                .catch { exception ->
                    Log.e("WebSocket", "Error", exception)
                }
                .collect()
        }
    }
}

4. Тестирование

  • Покрытие тестами: 87% (unit + integration)
  • Использовал Mockk для моков
  • VCR.py для записи HTTP ответов
  • Тесты run за <100 мс каждый
@Test
fun testPortfolioCalculation() = runTest {
    val mockRepository = mockk<PortfolioRepository>()
    coEvery { mockRepository.getPortfolio() } returns testPortfolio
    
    val viewModel = PortfolioViewModel(mockRepository)
    
    advanceUntilIdle()
    
    assertEquals(testPortfolio, viewModel.portfolio.value)
}

5. Работа с базой данных

  • Миграции с Goose (raw SQL)
  • Room для типизированного доступа
  • Оптимизировал запросы с помощью индексов

Достижения

  • Performance: снизил потребление памяти на 35%
  • Reliability: увеличил стабильность приложения (крашей стало < 0.01%)
  • Features: реализовал 12 новых экранов за 3 спринта
  • Code Quality: внедрил CI/CD с обязательными тестами перед мержем

Команда и опыт

  • Работал в команде из 8 человек (4 Android разработчика)
  • Code Review культура: все PR проходят через 2 разработчика
  • Регулярные перестроены с PM и дизайнерами
  • Опыт работы с Agile (2-недельные спринты)

Главные learnings

  1. Performance matters: даже малые оптимизации дают большой результат на миллионы пользователей
  2. Testing is essential: хорошие тесты спасают при рефакторинге
  3. Communication: чаще общайтесь с командой о технических решениях
  4. Kotlin Coroutines: это реальная магия, научился использовать Flow на 100%

Почему я ищу новый проект

Проект был отличным опытом, но я хочу расширить свой кругозор:

  • Попробовать новые архитектурные паттерны
  • Работать с AI/ML интеграциями
  • Улучшить знания в DevOps и CI/CD
  • Присоединиться к более крупной команде с менторством

Я готов к вызовам и новым технологиям!

Расскажи про последнее место работы | PrepBro