/knowledge-base

Temy Knowledge Base

Primary LanguageHTMLGNU General Public License v3.0GPL-3.0

iOS Knowledge Matrix

User Interface

Qualified Competent Expert
Autolayout
Anatomy of constraint,
external and internal changes, autolayout vs frame-based layout
Stackview, debugging autolayout, anchors, safe area, self-sized views,
Hugging priority/Content compression resistance
Layout directions (left-to-right/right-to-left),
VFL,
autoresizing masks (springs&struts)
Xibs (Nibs), Storyboards
xibs and/vs storyboards, custom UI elements in xibs and storyboards, file's owner, loading from xibs and storyboards programmaticaly, segue, pass data via segue, customization ui best practices IBInspectable/IBDesignable, size classes, xib vs nib, NIB object lifecycle, unwind segues, git conflicts in xibs and storyboards, xib's xml structure
Animations
animations via autolayout,UIView.animate, CALayer, CAAnimation facebook pop, UIDynamics, 3D animations, UIViewPropertyAnimator, CADisplayLink SpriteKit? Adobe After Effects?
Other
Localizations
HIG
Internationalization i18n & Localisation l10n

Data persistence

Qualified Competent Expert
Core Data
Core Data Stack & Architecture, Relationships, Data Types, fetching Performance, concurrency/multithreading/multiple contexts, [changes and updates tracking](changes and updates tracking) Migrations, nestedcontexts, profiling, persistence under the hood (SQLite, XML, Binary, In-memory). iCloud synchronization,Security
Other approaches
UserDefaults, KeyedArchiver Realm, Keychain

Languages

Qualified Competent Expert
Swift
Basic syntax, optionals, control flow, error handling, memory management (ARC), classes, structures, enums, functions, initialization/deinitialization, inheritance Objective-C Interoperability, POP, generics, type safety, KVO/KVC, value and reference types, subscripts, bitwise operators, overflow operators, operator methods, access control Swift performance, Swift + LLVM, method dispatch, swizzling, @dynamic, final, playgrounds, Swift Standard Library
Objective-C
Basic syntax, variables and types, collections, initializations Blocks, categories, Integrating Swift into ObjC, C/C++ code usage inside Obj-C Runtime, Class structure (isa), Method swizzling, MRC

Networking

Qualified Competent Expert
URLSession
NSURLSession basics, encoding/decoding of URL data, lifecycle of a URL Session Multipart requests, response caching, handling redirects Background handling, NSURLAuthentication, TLS Chain Validation, streams, sockets, NSURLConnection
Response handling
JSONSerialization, error handling Codable/Decodable, NSCoding
Building a network layer
Alamofire, mappers Moya , CFNetwork

Deployment

Qualified Competent Expert
Understanding of code signing, provisioning profiles, app schemes configuration, Launching app on device Working with iTunes Connect, App Review Guidelines. Build automation, beta-testing tools and deployment platforms. Fastlane Advanced automation skills (plugins, scripts)

iOS essentials

Qualified Competent Expert
UIViewController lifecycle, iOS app lifecycle, NotificationCenter Working with filesystem, background modes, Xcode project structure

Multithreading

Qualified Competent Expert
Grand Central Dispatch
basic knowledge about multithreading and concurrent programming, deadlocks, race conditions. async vs sync, main vs background Dispatch queues, units of work, prioritizing, quality of service, timing (time & after) Dispatch groups, semaphores, dispatch I/O, dispatch sources. Interprocess communication, XPC Services
NSOperation
basic knowledge about multithreading and concurrent programming, deadlocks, race conditions. Operation executing, cancelling and configuring. Operation states. NSOperationQueue. Subclassing and overriding. BlockOperation Operation dependencies, NSOperationQueue
Thread (NSThread)
Ability to work with Thread. Initializing, starting/stopping, state handling, prioritizing. Locks, NSRunLoop.

Marketing

Qualified Competent Expert
Push Notifications, URL schemes Deep linking, Universal links, App Indexing Advertisements (AdSupport, AdMob etc)

Testing

Qualified Competent Expert
Basic knowledge of unit tests Complex unit tests, XCTest, Quick/Nimble (Kiwi for Obj-C) TDD, UI tests, web testing and debugging

Xcode build system

Qualified Competent Expert
xcodebuild, xcrun. Targets, bundles, frameworks, libraries. pbxproj, xcconfig, xcodeproj, xcworkspace, xcscheme, xctoolchain. Build phases, shell scripts, build rules, build configurations. lldb, lipo, llbuild, swift package manager, linker. Flags

Security

Qualified Competent Expert
Keychain, iOS security guidelines, TouchID, FaceID Security framework - authorization and authentication, code signing, cryptography, result codes. Secure coding guide. iOS security overview

Performance

Qualified Competent Expert
Basic knowledge of measuring app performance with Xcode instruments. Object Graph, Network Link Conditioner. UI optimization (opaque views, fat XIBs, image sizes, main thread blockers, layers vs paths etc) Optimization modes in Xcode, whole module optimization, gzip compression, lazy load and reuse of views, caching, tableview and collectionview optimization, date formatters Memory warnings handling, speeding up app launch time(static vs dynamic libraries, merging several frameworks into one monolithic)

Architecture Patterns

Qualified Competent Expert
Delegate, MVC, observer, chain of responsibility, Singleton. MVP, MVVM, VIPER, VIP, Router. State, Strategy, Visitor. Abstract Factory, Factory Method, Builder. Adapter, Decorator, Facade. Flux, Redux. Mediator, Memento, Command, Prototype, Proxy

Functional/Reactive programming

Qualified Competent Expert
Basic knowledge. Recursion RxSwift/ReactiveCocoa/ReactiveSwift/ReactiveKit, higher order functions. Futures&Promises. Pure functions. Complete understanding of reactive approach. Functors, Applicatives and Monads.

Hardware & Media

Qualified Competent Expert
Basic AVFoundation, CoreBluetooth, AVKit Core Audio. Advanced AVFoundation, CoreBluetooth, AVKit. WebKit. Core Telephony, Core Media Core Motion, IOKit, Compression

Other

Qualified Competent Expert
Basic MapKit & CoreLocation. Basic socials integration. Sharing AddressBook, AddressBookUI, Messages, MessagesUI, Advanced MapKit & CoreLocation. Advanced socials integration. In-app purchases

Optionals

Qualified Competent Expert
App extensions tvOS, watchOS, SpriteKit, SceneKit, HomeKit, HealthKit, EventKit Metal, CoreGraphics, OpenGL, cross-platform development, ARKit CryptoTokenKit, SiriKit

Android Knowledge Matrix

User Interface

Qualified Competent Expert
Activity, fragment, view group, view Material design principles; material design implementation in support library; draw canvas, layout inflater, measuring view tree Remote views; view tree observer; rendering optimization
Layouts
Linear Layout, Frame Layout, Relative Layout Constraint Layout, Coordinator Layout, Pull-to-refresh, Drawer
Styles and Themization
Android themes; day-night theme; status bar themization; text appearance; difference between style and theme attributes
Animations
Custom and system animations; object animator, property animation; animation resources; animation set and complex animations; animating constrains; vector animations; animate layout changes; recycler view animations; animate view Optimization animation; complex vector animation; executing animations on render thread; application and fragment transition with shared element
Cuctom Chrome Tabs
Using web view vs Chrome Tabs Chrome tabs customization; using KeepAlive service; cutom controls flow architecture to intercept results
Notifications
Notification Manager, Notification Builder, Notification Parameters Using Pending Intents in notifications; using resources for notifications Notifications in Oreo, channels; Push Notifications; Urbanairship, Pushwoosh; Using console to test notification
Remote Views
Application Widget and Pin Lock guard themization, using remore views for Custom Chrome tabs
Other
Resource types Localization; Vector Drawables, Animated Vector Drawables, importing resources External Resources; using tools to mock resources for tests

Data persistence

Qualified Competent Expert
SQLite, Database helper, Shared Preference Manager Realm, Firebase Storage; Content resolver and Content provider, Room database; Data synchronization, backup, restoring device, changing device

Languages

Qualified Competent Expert
Java
Primitive types; loop and branch syntax, blocks, local variables; operation and operand order; scopes; packages, wildcard import, static import; inheritance; method signature; incapsulation; class, abstract class, enum, interface, annotation; Serializable interface; final keyword; immutable pattern; String and datetime basic operations; Checked and unchecked Exceptions; try-catch syntax; java-beans, POJO; singleton, setters, getters, builders Collections; Atomic types; Concurrency programming: synchronization, threads, executors, futures, thread safe collections, fork-jon framework; generics; Arrays and Objects utility classes; reflexions; Annotations and preprocessors; auto-closeable try catch; work with filesystem NIO2; lambdas, functional interfaces, default method; locales, formatting and internationalization; creating own annotations Streams; javax; guava; data structures; sorting algorythms; big data optimization; math extensions; parallel programming; blockchains; matrix computations; O-complexity of basic algorythms; grpc (.protobuff), gson
Kotlin
Scopes, val and var keywords, NPE safe; migration java class to Kotlin Extensions, coroutines, companion objects

Networking

Qualified Competent Expert
HttpURLConnection, OkHttp, basic REST Socket.IO, MQTT, XMPP (Jabber), TLS; RetroFit, Volley; Download manager; handling network changes Certificate pinning, SSLSocketFactory interception; Samsung Smart switch

Android essentials

Qualified Competent Expert
App Fundamentals
Manifest; App Components; system services available from context User id, proces id, android id; AsynckTask, Loaders; Fragment Manager tree; Android specific classes: Sparse Array, Text Utils Support Java 8 in Android limitations;
App Components Lollipop, Marshmallow, Oreo specific work with components; themization and localization context
Context: application context, services, activities, broadcast receivers; Context wrappers
Manifest
Manifest structure
Activities
Activity lifecycle, activity manager; starting activities, starting activities for result Activity lifecycle callbacks; task, activity, affinity; shared element; launch modes; start activity flags; saving state Persistable activity; starting foreign activity; activity and multi-process
Fragments
Fragment Manager, Child Fragment Manager; Fragment Lifecycle
Services
Start service, bind service; Service, IntentService, JobService Services in Lollipop, Marshmallow and Oreo; starting service security issues; binding flags and types; starting foreground service
Broadcast Receivers
Main purpose, sending broadcasts Security issues sending broadcasts; Local Broadcast Manager Sticky broadcasts
Content Providers
Main purpose for content providers; known system content providers; content resolver; system preferences Creating content provider; database helper, migration, contract, urls
Intercomponent communication
Intents, intent filters, actions, categories Binder, aidl files; Parcellable vs Object stream (Serializable); marshalling data using Parcel; using content providers; exported activities and services; running intent as user; resolving permission for contacts; activity picker, contact picker, account picker; Deeplinks Using power locks, secure communication, activity manager flow switching activities; App Indexing; App Links

Testing

Qualified Competent Expert
Instrumentation Tests, Espresso, UIAuthomator; unittest and android test; popular test runners; mocks and stubs PowerMock, Mockito, Multidex runner, Roboelectric; Mocking context; Creating Rules

Build system

Qualified Competent Expert
Build environment
Android Studio, Eclipse; adding classes, resources; navigation panels Gradle, cmake; repositories, artifacts; instant run optimization; libraries, modules; maven project; signing keystores; .jar, .aar, .so, .dex, .class; aapt2, shrinking resources; build vatiants, flavors Groovy, gradle tasks; errorprone; compile preprocessors; gragle plugins: android, firebase, kotlin; Lombok
Java Machine in Android
Java machine environment; UI and background threads JNI, embedding C++ libraries; render thread; zygote, process; multidex, D8 Kernel versions; using kernel libraries; using HAL to launch own system implementation; Class loader tree

Security

Qualified Competent Expert
Permitions, permition levels, groups; file system permitions; runtime permitions Account Management; User Management; Lock types; Lock Guard; Confirm Credentials; Fingerprint Manager; resolving runtime permitions; share permitions for external activities; fileholder permitions; Keychain Android Keystore (version related difference, hardware backed); Trust Zone: DEK, KEK; Safety Net; available security algorythms depending on version; DRM; system permissions; Kiosk mode; boot aware mode; root permissions; device administrator

Performance

Qualified Competent Expert
Memory management
handling memory callbacks; memory alocation; retain release; drawing canvas increase memory limits; caching strategies; LRU collections; ashmem; heap Garbage collector; row hammer attack; uisng leak canary
Profiling App
ADB integration, monitoring memory Memory dumps
Battery Management
Power optimization best practices Dump battery stats

Architecture Patterns

Qualified Competent Expert
MVC, MVP, MVVM, SOLID, Clean Architecture, KISS; TDD, DDD; GOF Patterns

Functional/Reactive programming

Qualified Competent Expert
RxJava
Reactive programming concepts; using lambdas; subscribers, observers Difference RxJava 1 and 2; transformers; rx functional interfaces; publishers and thread safe; schedulers Mocking RxJava schedulers

Hardware & Media

Qualified Competent Expert
Camera and Gallery; Location Manager; Sensor Manager; BlueTooth manager Android TV, Smart watches, Google glass

Other

Qualified Competent Expert
Data Binding Library
MVVM concept; data binding inflator; bindings; observable fields binding adaptors
Support Library
AppCompatActivity, AppCompat... components ContextCompat utility class; Material design with Support Library
Play Services
Basic components of play services; Google maps
Continuous Integration
basic principles; Google Test Lab Jenkins, Fabric, Crashlytics, Leak Canary; deploying apps onto play market Bitrise, Fastline; gradle signing task
Source control
Git, git-flow; branches, repositories, commits git hooks; Gerrit, gitlab; managing git history; garbage collection; merging strategies; integration git and Android Studio
Project Management
Basic knowledge of JIRA; tickets, stories, estimations, estimation strategies, time reporting, kanban
Dependency Injection
dependency injection principles; DDD concept; basic annotations Dagger Android; Dagger 1 and 2 difference; Object graph; Scopes, components, subcomponents

Optionals

Qualified Competent Expert
Android Platform Architecture
Dalvik, ART; Android framework; System apps IPC; Kernel, drivers, Binder, HAL, Android framework Trust Zone, Trusty; Andoid without framework; AOSP
Instant App
Feature modules, instant app limits Dynamic links