How to be a 10X, 100X, 1000X Stellar Senior Android Engineer, for In-person Interviews ??
TLDR at the bottom.
experience - 15+ java, includes 8+ android.
obligatory tc - just as my handle says, there's that!
age is certainly catching up. every single senior engineer interview now has a macbook thrown in my face with several different types of "programming" problems, and about 45 to 50 mins to solve.
1) a sample app has a UI (represented with just one activity), and some form of an analytics view-tracker type of a component. The challenge is to figure out 2 bugs that were inherently introduced into this code-base. The first bug in the UI was a non-standard non-guideline, bad-practice thing. The second bug in the analytics tracker file was causing an app-crash. The nature of the bugs was clearly set-out up-front. The bugs were so glaringly right-in-my-face, and yet I took over 40 mins and a 1 time build-compile-execute-run cycle on an emulator to identify the second one in the given time.
2) a sample app is essentially more so like a analytics library. This java class / kotlin file that I am looking at is all goody-good when a "normal" module is executed in the emulator. But when "malicious-1" module runs in the emulator, the expected functionality breaks, and incorrect data is @PUT into the micro-service api-endpoint. Despite fixing that when "malicious-2" module runs, the fix for the first malicious module does nothing, and incorrect data is still @PUT into the micro-service api-endpoint, as observed in Charles Proxy. no access to the malicious-apps code-base, task was to look at the one-and-only kotlin file that functions like this analytics library, and formulate the root-cause and fix it. Still managed to take a hunch, that reflection-api was being used to inject some form of an interceptor in the okhttpclient invocation. well, over-flowed 45 mins duration.
3) tasked with writing an analytics class that'll log quartiles for video-playback using android's MediaPlayer api. Why did I have to over-engineer and avoid polling less than 500 millisecond or so, instead had to calculate the remaining wait-time, and rely on Handler api postAtTime or postDelayed or other similar post methods instantiating and using very minimal runnables?
4) there's this "https://dog.ceo/api/", and some basic minimal android app code-base already setup. supposedly fetch dog-breed names, and images, and display master-detail sorta grid-view and detailed-view functionality. The catch here, some of the components were purposely wrongly developed in the minimalistic code-base that was already made available to me. Retrofit2 DogApi interface method @GET("/breeds/list") has a return type List<String>, that would run into a parse exception unless I use custom kotlin data-class, or not? Open-book api reference is a waste of time in these types of interview rounds? lifecycle-viewmodel-ktx was not 2.1.0 version, so no viewModelScope available. Rely on rxjava2 and rxandroid for transformations to fetch image-urls after fetching dog-breed names. Hell, retrofit.create(DogApi.class) was never even there, and worst of all, Retrofit.Builder().addCallAdapterFactory(RxJava2CallAdapterFactory.create()) was missing entirely. Nothing existed in the UI layers either, no RecyclerView, no RecyclerView.Adapter, no RecyclerView.ViewHolder. Expected time to complete - you guessed it!
5) even basic leetcode problems - atm class with deposit and withdraw functionality, intersecting rectangles, i may be over-thinking, or missing out on basic tricks, and i end-up taking all of the available time, rushing in the last 10 mins or so.
i mean, how much practice is enough practice? i get the output, but is that enough? may be i try and cover as much detail as i possibly could while speaking out aloud my thinking process.
after all, i am human, with decently adequate employable skills. i am not superman. all i need is a job so i can survive.
tldr; is senior engineering role really just a stellar code-monkey?