- please develop the app using VIPER architecture (must have)
- export an users health data using FHIR data format (nice to have).
- for iOS please use Apple Health/Google Fit repo.
- for Android please use Google Fit.
- A team can choose its platform of choice (independent of its current competency - iOS, Android, RN, Flutter, Phonegap, Xamarin).
- We plan to have a discussion at the end of the task to share and learn from each implementation.
// | |
// RestClient.swift | |
// | |
// Created by Apro on 02/12/19. | |
// | |
import Foundation | |
class RestClient { | |
private static let postMethod = "POST" |
import com.fasterxml.jackson.databind.Module; | |
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
@Configuration | |
class JacksonConfig { | |
@Bean | |
Module dateTimeModule() { | |
return new JavaTimeModule(); |
Many thanks for investing the time in interviewing with us. For the next step we would like you to create a Pokemon App (iOS/Android/React Native app) to display an initial list of Pokemons with a further list showing a list of Pokemons evolved from the initial Pokemon. Please submit the code for the specific platform your were asked to in the interview. For React Native candidates, please note since we use a type system in all of our projects, we would prefer if you use Typescript/flow to finish the challenge.
- Pokemon is a imaginary animal from the Pokemon video game, generally Pokemons evolve into new species as time evolves.
- Please use the Poke API v2 to fetch an initial list of pokemons and its various properties (plea
List<Integer> flatten(final List<?> arrays) { | |
final List<Integer> result = new ArrayList<>(); | |
flattenRecursive(arrays, 0, result); | |
return result; | |
} | |
private void flattenRecursive(List<?> arrays, int index, List<Integer> result) { | |
if (arrays.get(index) instanceof List<?>) { | |
flattenRecursive((List<?>) arrays.get(index), index, result); | |
} else if (arrays.get(index) instanceof Integer) { |
Many thanks for investing the time in interviewing with us. For the next step we would like you to create a Google Image Search mobile client (iOS/Android app) to display an infini-scroll Image list based on a user's search input.
- Please use the Google Image Search API for searching and fetching relevant images.
- Please refrain from using any additional 3rd party APIs (e.g. Alamofire, Retrofit, RxJava etc...) except for the iOS or Google Android SDK, as required.
- Please focus on proper code structure and applying OOP and/or SOLID coding principles as and when applicable.
- Please don't spend too much time on producing a snazzy UI; we are more interested in your coding competency.
- Ideally you shouldn't spend more than 4 hours to finish this task.
- Please ensure you submit the task within 7 working days fro
Many thanks for investing the time in interviewing with us. For the next step we would like you to create a Twitter mobile client (iOS/Android/React Native app) to display the 50 most trending topics around a users' current location.
Please submit the code for the specific platform your were asked to in the interview.
- Please use the Twitter Trends API to fetch the relevant trends data.
- Please refrain from using any additional 3rd party APIs (e.g. Alamofire, Retrofit, RxJava etc...) except for the iOS or Google Android SDK, as required.
- Please focus on proper code structure and applying OOP and/or SOLID coding principles as and when applicable.
- Please don't spend too much time on producing a snazzy UI; we are more interested in your coding competency.
package com.github.aprofromindia.utils; | |
import javax.validation.constraints.NotNull; | |
public class StringUtils { | |
public static String capitalize(@NotNull String string) { | |
StringBuilder builder = new StringBuilder(); | |
if (string.length() > 0) { | |
builder.append(string.substring(0, 1).toUpperCase()); | |
} |
- I propose to use an MVVM based application architecture.
- for iOS I would recommend data binding (View to ViewModel) using RxSwift for a sample implementation by myself click here.
- for Android I would propose Data Binding with my own helper library. Rest of the document would only focus on an iOS solution.
- As for code organisation, we can use an use-case based folder grouping.
- We should also separate our classes into Entities, Domain Services, Application Services, Repositories and Network layer.
- the RESTClient should be a singleton, sample [implementation here](https://github.com/aprofromindia/Yahoo-Weather/blob/master/Yahoo%20Weather/RE
extension Collection where Self.Iterator.Element: Comparable { | |
func binarySearch(element: Iterator.Element) -> Index { | |
var low = startIndex, high = index(startIndex, offsetBy: count - 1) | |
while low <= high { | |
let i = index(low, offsetBy: distance(from: low, to: high)/2) | |
if self[i] == element { | |
return i |