Real Interview with Big Bank Corp - Senior Android Developer position - 14 Questions

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
this is a real interview I had with a big bank here in the Netherlands for a senior Android developer position and I remember all of the questions almost this was the kind of interview where uh the questions are kind of straightforward but they're the type that you don't really think about every day you'll see what I mean when we start yes I changed my office layout again Sue me I have to let's start first question was what is Android so I said yeah Android is an operating system it's based on Linux the kernel is Linux it gets the security features from Linux it was started by some startup somewhere before 2008 Google bought it 2008 was the first version that came out and I remember this because of YouTube keeps suggesting that video of the very first Android the operating system the date was 2008 that's where I remember that from what's the latest version of Android ouch you know I mean you're you're an Android developer right reality check right what day is it what year are we in what planet are we on are you here what's the latest version I mean you should know right you're right for the latest version you stay up to date I said 23. then I said no sorry that's the minimum SDK version the latest version is 30. no it's not it's 34. all right no problem that's okay moving on what is Dalvik and what is art and what what is the difference between them okay I have some idea here so I said Dalvik and ART are run times they're uh the Java virtual machine it's where your code runs right and what's the difference between them what did Art bring that Dalvik didn't have I said just in time compilation it's wrong art brought ahead of time compilation Dalvik was just in time art is ahead of time he didn't correct me they didn't correct me as we were talking now I am correcting it because they just say okay cool next how do you secure a user's private information let's say it the their pin right so you have an Android app and it's a banking app just like these people have and you have a pin that you choose from within the app to you know using your credit card as well you're going to use it in real life it's not just your pin on the on the mobile app right so this is pretty pretty sensitive information how would you store this information and others like it like the user's provide secret question stuff like this so in this situation I knew that this interview would involve security questions so I studied for it and I even made the document which I'll share with you maybe in a video or in this video's uh description it includes everything but so I studied this stuff but I didn't really connect the dots I was never asked about where each piece of information fit in the real world right so I had bits and Bobs here and there so I first thing came in my mind I said you hash it um okay if you hash it what happens then where do you store this hash then okay and then eventually I said you use encrypted shared preferences this is from the stuff I studied encrypted share preferences or you have an encrypted file and maybe you you encrypt it and store the key in the key store okay here they nodded a little like right next one how do you communicate securely to a server from your Android application so you are talking to a server you're making requests you're doing what you do in an app how do you do this securely because it's a bank you know so I said yeah you use TLS you know https it's going to be secure no one's going to be able to encrypt that stuff you know then the follow-up question was how do you stop then a man in the middle attack meaning you are here and the server is here and someone goes in the middle and starts to repeat to you the bytes that are usually coming from the server so you say okay it looks like the server to me because this is what I'm expecting them to return because you know you don't know if if it's the server or someone else that's returning you're only checking for the bytes whether they're the same or what you expect or not so someone a man can go in the middle of that communication and uh you know repeat back to you what you want to hear and you'll go like yeah and they take your you know they take your data supposedly so how do you stop that what I said because yeah I didn't I didn't really know much Beyond https but eventually the the conversation went to oh you do certificate pinning okay but I had read previously when I'm studying for Android security that certificate pinning was not recommended to be done right and a friend of mine I was talking to a friend of mine who knows this stuff and he said yeah I have another solution for that since certificate bidding is not recommended you use two certificates so I went and told them that right but I wasn't able to defend it very much because it wasn't my idea I just heard that I just overheard it so that was that question that was the end of that question next one now the the Android actual coding stuff started so he says what is the difference between shared flow and state flow so I remember studying this from recommended Android architecture document which I'm also in the process of making a document about that to share with you and just to keep it for future references it'll be like a like a summary of all the Babbling that Google does so what's the difference between shared flow and state flow so I say State flow is the one I use and I remember not uh not not wanting to use shared flow because it's not recommended or something like that that's literally what I said no I said in the beginning I said State flow yeah you can specify where you wanted to subscribe to start emitting items and it's its life cycle dependent you can have it be life cycle dependent you can have it so only when it's on resume does this start emitting stuff so he said uh if you don't use shared flow State flow is a shared flow it's a it's an inter it's a it's a subclass of it so how do you not use shared flow you're already using it I go oh yeah I didn't know that so it turns out difference is he told me shared flow is always emitting stuff State flow is uh you know is is dependent on on state you know duh see there's the document there's the entire document about this stuff uh State flow shares flow that Google has and you could read all about the differences here you know but I didn't because you know didn't expect that anywho moving on all right I use threading right yes um so use quarantines or RX Java why I said I know RX Java a lot that's the bulk of my experience with RX Java but lately I've been using core routines and it says why well because uh it's much simpler honestly it looks simpler it's easier to implement easier to understand RX Java can get really complicated you know those big chains where it's like continue and then and then you could get like a whole chain as big as this paragraph of just one operation that just has so many folds inside of it core routines I believe does this easier okay question after that since you use quarantines how long have you used it I say seven months about that seven months have you ever used channels I say no because I haven't so there was a follow-up question to this one but I don't and have not used channels so that's out of the window next suppose you have the following code What's It Gonna print um so he shows you this code on his machine um so you got here a run blocking section which inside of it has this measure time in milliseconds and it's going to delay once delay twice and then print out the duration that this whole block took to execute and then it's going to print done so what's gonna run first what's gonna be the output right so this function is simply a delay and this function is simply a delay so here I start looking at it yeah okay run blocking um yeah since you're in run blocking this is gonna block the UI thread right it's not going to do anything until it finishes this stuff because of ROM blocking so that that you showed this one and one after that similar to it right together I start going back between the two and say okay this one is going to print total time taken is a thousand plus 500 let's say 1.5 seconds uh 1500 milliseconds and then it's going to print done great okay what's this next one gonna print here you have the same thing but they are async calls um same round blocking same wrong blocking here but inside it's async and then it calls a weight on them okay same thing prints the result and done nothing changes here same so spend whatever so here I'm I got tripped up so I look at async I think yeah it's async so it's probably gonna Escape The Run blocking have another thread right so it's gonna it's gonna go off and and then run blocking with finish it's going to print done and then after 1.5 seconds it's going to print total time taken because there's there must be a trick here right because I mean they can't they can't print the same thing you know must be a trick or something because I know around blocking is gonna block everything I mean it says in the name right but this async thing okay see if you know this by heart there were no there wouldn't be a trick anywhere you know these tricks or or when you get tripped up it's when you're not a hundred percent sure and this stuff will expose that if you haven't so anyway I say yeah it's going to print done first and then it's going to go here and do total time taken is 1.5 milliseconds sure sure let's run it runs it no they both print total time taken 1.5 seconds and then done both of them async or no async this run blocking blocks the entire universe there is no such thing as it goes out onto another thread and there is nothing round blocking means it blocks everything until this whole thing finishes okay after suppose you have the following code and you want to add caching error handling and data handling this is not the same code exactly as he showed but he showed something much simpler and I knew it was the data layer no he also mentioned like suppose you receive this request response uh in the in the data layer right it says requests here but it should be response in the data layer and you want to forward the response to the domain layer to the use cases or just directly to the UI and listen to any errors cache it and uh just show the result if it's successful so what I say here is okay first of I I would have a sealed class that would represent uh those those types of responses so I would model the response how that looks like and I would model the error how it how it should look like and then the caching well I would have a database Handler here and if the response already matches my successful response I go to the database and check if it's there if it is I just and it's not stale and it's not stale I mean if it is stale I update it if it's not I just return what I got from the database something like that right and if it is matching the model for error I just forward the error to the UI success I forward the success to the UI based on my model okay that's it okay not like oh what about no just okay next one suppose you have the following code where is the view model where is the model and where's the view so they had this entire page very similar to this a little more complicated than it's just a little more this is the activity and this is your view model so point out the model here right and point at the view model point out the view so obviously this is the view right and this is the view model okay what about the model so I say here they had the username and and first name or something like that and they had listeners for both here in the view model and the view was listening to any updates for those two Fields so I say yeah this is the model this should be the model this is what I said this should be the model it should not be floating around like this it should be probably a glass that has count and a username first name and that's what you update that is your model right to this day not to this day it sounds like a year ago this happened basically last week the interview happened uh to now I I'm still unsure of what he meant honestly eventually turns out there is no model here and I quickly said yeah yeah because this should be the model there is no model right now but this is what would make up the model and that was that for for that question that was my answer nothing after that that was that concluded the entire interview oh they also asked stuff like uh how comfortable would you be training other uh less senior people so I say yeah I would be very comfortable I have a YouTube channel I like teaching I like mentoring when I get the chance makes me understand something more that's uh that's what I think another question was uh if you were a senior person at the company and we task you with building an application along with two other Junior developers and you need to finish this application in six months let's say all right so Mr Big Guy now uh I say all right well how would you distribute the work how would you plan it out what would you do so I don't say this but I've not done this before so I start to imagine okay what is the junior Android developer going to help me with um well my mind I would just task them with implementing single activities right that's what I said so I've attacked them with implementing single activities like views hey there's this screen go to this screen the entire thing along with the connection to the view model along with the connections of the database all of that but because I don't think it's going to be as easy as I make it sound now I would suppose that this they would have to wait for me to do all the plumbing first so I would have to set up the data layer all I would give these Juniors is hey go do the screen this is how you handle the DB you get this reference inject this DB Handler inject this view model inject this repository and you're good to go for this screen so for them to reach that stage to have that stuff available in the project I would need a couple of like maybe one or or one and a half months and then they could join and start working on it because in reality I what I think is that I wouldn't uh task them with doing that stuff because they're juniors you know so this is literally what I said all of it I am Telling You Verbatim what I said they said okay great we'll see you later I say okay great I'll see you later and we enjoyed each other we said bye next day see you rejected no don't like it so that was the outcome of that interview but in all honesty I really enjoyed this interview uh it it was a reality check like I said specifically this question where are we now or die right hello checking in are you here this one really caught me off guard and uh I I found it really interesting and challenging but yeah wasn't meant to be how do you think you would have fared in such an interview let me know in the comments and uh yeah see you in the next one bye bye
Info
Channel: Oday
Views: 41,473
Rating: undefined out of 5
Keywords: android interview questions, android developer interview questions, android developer interview, android interview questions for senior developer, kotlin interview questions android, android interview questions and answers, android interview questions and answers for experienced, senior android developer interview questions and answers, android interview questions along with answers, android developer job interview questions, senior android developer interview, android
Id: 49Sg6qav6L4
Channel Id: undefined
Length: 19min 38sec (1178 seconds)
Published: Sat Jun 10 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.