Had an interview a couple days ago and boy was I embarrassed. I though I was the only one who forgot all the basic stuff and made a fool out of myself but after watching you share your experience, I am so relieved. Thank you.
Thank you for sharing. 🙏 Also if I am not mistaken, on the runblocking code examples, while both of them prints the same thing, first example should execute in 1500 ms+ while second should execute in 1000 ms+ cause of the async calls. Do Correct me if i am wrong 😇
In my case, I had a very basic questions that a senior android developer should answer but this is something I haven't really checked a long time ago and it caught me off guard. The question was: what's the difference between targetSdkVersion and compileSdkVersion. In my mind, I know one could be higher than the other and one is just to say "I know my app is working fine on that version" and the other is which Android API you compile your app with. But because it caught me off guard, I wasn't 100% sure which one is which and I said the wrong answer. I was feeling so bad because I answer this question wrong. This is a basic question but hey you always learn from your mistake. Thanks for the video!
There was some asks about my Middle Android Developer Interview question for month ago . Hope it help someone OOP property Activity life cycle why do you call setContentView() in onCreate() and not elsewhere ? when function onCreate() of the activity is called, and when it be called again ? Difference between replace() and add() fragment Ask about Hilt, Dagger, Koin, the difference, etc Did you use any firebase service ? Did you use Service, Broadcast, Content resolver, and in what situation ? About MVVM, MVP ( I Said I know both before ) The difference between them ViewModel lifecycle What is Repository Pattern , in the specific case, what did you do in there? When using LiveData, the difference of postValue and setValue What's the difference between Observer in LiveData and Rx ? How to cancel a coroutine task ? How do you you call multiple api at once using coroutines ? Questions regarding the second Room Databases: migrations, relationships, .... Is it possible to query the room's data on the main thread? Commonly used functions in custom views: This one I list a few commonly used functions, the other side does not ask more deeply In a custom view has 3 constructors, what are those do and many else that I don't remember
Im not a senior yet (im about 4y) but with the juniors thing i would set pair coding with them on the first steps when u re setting up the project, creating the layers, and modeling data... So they will be learning while the senior is doing his stuff. Then yes, i would give them UI related tasks at first, keeping a eye on them. Then perhaps doing completing the presentation layer with the viewmodels and data sharing with the views... Navigation stuffs maybe too. Finally, we can take testing together, starting with the senior doing one viewmodel test and then let them do the others, again keeping an eye. But idk as i said im no senior yet ... I did something similar with React Native years ago.
Wow this was interesting. It makes me think most (if not all) of us go through this. I experienced this a few months ago on a panel of 2 interviewers when they asked a question regarding lifecycle and since a lot of APIs are lifecycle aware nowadays, I was the one who became "lifecycle unaware" haha so I obviously choked to give them the answer they wanted to hear (which is ridiculous because it's such a basic android knowledge). Thanks for sharing this. Some bits were actually refreshing.
This interview makes sense and it is what an interview is supposed to be like, open ended. to get as much insight into the candidate as possible. In my country however they ask questions like, WRITE DOWN THE EXACT ACTIVITY LIFECYCLE LAUNCH MODES, FRAGMENT LIFECYCLE . i can just look it up. and even if i screw up one step i am already rejected SMH........
that's a fearful way to look at interviews, do not be afraid
6 месяцев назад+1
What he ment by "there is no model" is that model is a domain model, which is abstraction for domain and data layers. In mvvm, this one is called model. And vm is android's vm plus livedata or state flows that are representing ui state.
This is great! Thank you so much for sharing this. I think i would answer the junior question differently. If the backend already has the data models you need to request, i would have them create those data models in code to help get them familiar with what the apis do. So that way when they are doing business logic later, they are already thinking about how these are going to be used. Then I would do the plumbing myself. Then when that's done, I handle the business logic for the core flow of the app while juniors handle business logic for other flows or the UI.
The coroutine questions: one is synchronous, and the other is asynchronous. However, it doesn't matter because both functions return the long value in the same way.
@@revs87 if you look closely, the two functions return "val" variable which aren't affected by delay, because delay only will delay the execution time but the returns bothe are immutable.
@@mibrahimdevthey both return the same 1500 ms text and thats the trick - it is wrong on the asynchronous one! Each execution is triggered exclusively when calling the await().
To summarize, the async (second) version does finish everything within ~1 second. It starts both delayFunctions at the same time, let's say T0s. delayFunction2 finishes at T0.5s, and delayFunction1 finishes at T1s. So at T1s (i.e. one second from the start) you have both functions finished and you have both results. However, since the first one returns 1000, and the second one returns 500, when you print result1 + result2 you get 1000 + 500 = 1500. That doesn't mean it took 1.5s for the whole operation. It still took 1 second, but the printout shows you the *accumulated* time for both operations, not the total time it took. Now that I look at my comment I realize it's not as concise as I hoped it would be.
Thank you for the video! I'm a Software Engineer with 9 years of experience, but the preparation to the interview and the process itself can still be tricky for me :) About Coroutine question and my opinion on that part: It's not about that `runBlocking` is blocking 'entire Universe'. It's about `async-await` pair. Imagine if we had the same code, but without `await()` or with `launch` instead. The output sequence would be the same as you said in the second option: "Done" first, "Total time" second.
hey that's pretty reassuring, I'll be streaming tonight again and hope to see you there we can talk about your experience. And yea that coroutines bit i need to revisit unfortunately
This is great, watching other experiences (yours) made me less nervous about interviews. Not more prepared tho 😂 I still have to fail by my own, before succeding I realized something, not sure if it was exactly that way on the real interview question, but: On the coroutines question, both scenarios printed the same because literally they were adding up both results (1000 + 500) and that's always the same (1500). But if they have rather printed the "totalTime" next to the "Done" string, the result would be different, because for the async case, the suspended functions are indeed run, well, asynchronously (regarthless being on a runBlocking). Just tested on my machine and go the next results: First case -> totalTime = 1500 ms; second case -> totalTime = 1000 ms The "Done" message is printed after the other one, even if we are not in a runBlocking (like CoroutineScope(Dispatchers.IO)). I get the point, if we're not sure on how something works, we get tricked.
Thank you so much for this video! It takes a lot of courage to share not the perfect experience, I respect that. ❤ I had myself very bad interview, where I was not prepared, but later I would go and learn all the questions I failed, so I will never do it again. BTW I also was asked about SharedFlow vs StateFlow and Channels. P.S.: I didn't understand the question about what is View/ViewModel, and what is View?
For the Coroutine Questioon with async, its actually not the runBlocking that is causing this but the await keyword that is being called . await is a sunspending function and it waits until the coroutine is completed. This interview was really fun, they started from deep internals and went up to coroutines and flows. Where is the DS Algo though 😅.
Thank you for the honest sharing of your interview experience! It is easy to share your success but much harder to share your failures. Anyway, interview experience is no other than any other experience: the more you practice the better you do!
Hi Good video thanks about topic security Ceritifcate pinning not recommended for android. why? and what is the alternative you talking about? want to hear more about the 2 certificates alternative .
Hey thank you. Well it says right in the docs, like a big warning notice they have. I am not sure about the alternative as it was not my idea but I am sure that said bank still does definitely use certificate pinning as a way to mitigate MITM attacks.
it's actually terrible right now and has been terrible for the past 6 months or more even. This was confirmed by my firsthand experience, also by a recruiter that knows a lot about the market I'm in, and another colleague who is also searching!
@@odayprogrammer Wanted to get an experienced dev's opinion on this. I agree with you. Backend has more demand for jobs compared to android development I guess.
Great video, I like it! BTW, about async. I believe that in the first example, runs one after another it takes 1500mc BUT if you run with async it gonna print line 1500 but it is not gonna be true. it is gonna finish the section in 1000mc..... honestly, I did not test my assumption in the studio, :) if someone does it, please share the result :)
I failed a take home test about making a basic shopping app with a list of products, and discounts in the checkout cart. Typical Solid/Clean/Mvvm/retrofit/ComposeUI thing. Instructions where vey strict listing the requirements needed to pass the assignment, and so I did. I failed because instructions didn't mention Unit Test one single time, strict requirements, huh? According to YAGNI, no requirement, no Tests, right? Well, they thought Unit Tests should be provided by default for all code, as a given, like oxygen to breathe.
@@odayprogrammer It felt like a ripoff, not gonna lie. It felt like turning in an exam with the back side of the page blank. What I learned from this experience is I can call it a trap this first time, but the second time will be foolishness if I repeat the same mistake. Hard lesson! Great content, I like your pragmatic tone saying things, it's never boring in the IT world.
What's the purpose of asking about the latest version of Android? Instead, I'd prefer to ask (or being asked): Which version of Android did you find most frustrating, and why?
A great video bro, I hope that you have got another chance. Your video has thaught me something about myself. Well I have been learning android development for about a year now, and i was thinking that i am still a rocky, when i started watching your video I was pausing and answering the questions, an I think that i got most if not all of them(except for channels question), so, am I that good? or it's just that the interviews are something different in reality (i have never had an interview) ?
sure you're good, but these are 14 questions only, there's an endless number of questions and you probably won't know the answers to all of them, it happens and it's normal
صحيح انك معلم والله ما بفهموا اشي مقارنه مع امثالك اسمع انا مبرمج على جت باك كومبوز الي 7 اشهر بنيت اب اسلاميه للاعمال الصالحه احدث اشي على جت باك مش اس ام ال والعياذ بالله بدور على حدا يستمر فيها انا مبرمج بتكساس بدي رايك بدي افتح شركه الاب فيها مثل فايسبوك فيد على فيرستور
Suppose the answer for the "2 juniors question" will be not having them at all if you want to implement your task in time, because mentoring takes time and mental resources and with juniors you actually will be SLOWER than without them
Here is my advice to you: 1) If you are going for a Senior role, then you'd be expected to know all those questions, and answer then correctly and positively. On top, I would expect you to show confidence, in your answers, expect you to elaborate on them, and give your views, and extras. 2) I would expect you to mention people in the field, who have contributed to Android development, where relevant. 3) Expect you to know about future changes and Open source libraries that may help in the field.
Expect to know people who contributed to Android lol. That would only remotely be relevant if you're working at Google. Even then I haven't been asked that.
Had an interview a couple days ago and boy was I embarrassed. I though I was the only one who forgot all the basic stuff and made a fool out of myself but after watching you share your experience, I am so relieved. Thank you.
Thank you for sharing. 🙏
Also if I am not mistaken, on the runblocking code examples, while both of them prints the same thing, first example should execute in 1500 ms+ while second should execute in 1000 ms+ cause of the async calls. Do Correct me if i am wrong 😇
In my case, I had a very basic questions that a senior android developer should answer but this is something I haven't really checked a long time ago and it caught me off guard. The question was: what's the difference between targetSdkVersion and compileSdkVersion. In my mind, I know one could be higher than the other and one is just to say "I know my app is working fine on that version" and the other is which Android API you compile your app with. But because it caught me off guard, I wasn't 100% sure which one is which and I said the wrong answer. I was feeling so bad because I answer this question wrong. This is a basic question but hey you always learn from your mistake. Thanks for the video!
There was some asks about my Middle Android Developer Interview question for month ago .
Hope it help someone
OOP property
Activity life cycle
why do you call setContentView() in onCreate() and not elsewhere ?
when function onCreate() of the activity is called, and when it be called again ?
Difference between replace() and add() fragment
Ask about Hilt, Dagger, Koin, the difference, etc
Did you use any firebase service ?
Did you use Service, Broadcast, Content resolver, and in what situation ?
About MVVM, MVP ( I Said I know both before )
The difference between them
ViewModel lifecycle
What is Repository Pattern , in the specific case, what did you do in there?
When using LiveData, the difference of postValue and setValue
What's the difference between Observer in LiveData and Rx ?
How to cancel a coroutine task ?
How do you you call multiple api at once using coroutines ?
Questions regarding the second Room Databases: migrations, relationships, ....
Is it possible to query the room's data on the main thread?
Commonly used functions in custom views: This one I list a few commonly used functions, the other side does not ask more deeply
In a custom view has 3 constructors, what are those do
and many else that I don't remember
Those are very adequate for middle position
@@trandat2030 khoai thế a zai
Im not a senior yet (im about 4y) but with the juniors thing i would set pair coding with them on the first steps when u re setting up the project, creating the layers, and modeling data...
So they will be learning while the senior is doing his stuff.
Then yes, i would give them UI related tasks at first, keeping a eye on them.
Then perhaps doing completing the presentation layer with the viewmodels and data sharing with the views... Navigation stuffs maybe too.
Finally, we can take testing together, starting with the senior doing one viewmodel test and then let them do the others, again keeping an eye.
But idk as i said im no senior yet ... I did something similar with React Native years ago.
Wow this was interesting. It makes me think most (if not all) of us go through this. I experienced this a few months ago on a panel of 2 interviewers when they asked a question regarding lifecycle and since a lot of APIs are lifecycle aware nowadays, I was the one who became "lifecycle unaware" haha so I obviously choked to give them the answer they wanted to hear (which is ridiculous because it's such a basic android knowledge). Thanks for sharing this. Some bits were actually refreshing.
Im prepairing for my new job, very informative.
Thank you. May Aallah bless you
This interview makes sense and it is what an interview is supposed to be like, open ended. to get as much insight into the candidate as possible. In my country however they ask questions like, WRITE DOWN THE EXACT ACTIVITY LIFECYCLE LAUNCH MODES, FRAGMENT LIFECYCLE . i can just look it up. and even if i screw up one step i am already rejected SMH........
that's a fearful way to look at interviews, do not be afraid
What he ment by "there is no model" is that model is a domain model, which is abstraction for domain and data layers. In mvvm, this one is called model. And vm is android's vm plus livedata or state flows that are representing ui state.
This is great! Thank you so much for sharing this. I think i would answer the junior question differently. If the backend already has the data models you need to request, i would have them create those data models in code to help get them familiar with what the apis do. So that way when they are doing business logic later, they are already thinking about how these are going to be used. Then I would do the plumbing myself. Then when that's done, I handle the business logic for the core flow of the app while juniors handle business logic for other flows or the UI.
well thank you for taking the time to answer it, that sure does sound better than what I said..
subscribe for more Mike!
@@odayprogrammer Definitely will! Thank you so much
Thanks for sharing the experience with us. Oday, are you able to share the document.?
The coroutine questions: one is synchronous, and the other is asynchronous. However, it doesn't matter because both functions return the long value in the same way.
The synchronous one takes 1500millis, but the asynchronous one takes only 1000millis to print.
@@revs87 if you look closely, the two functions return "val" variable which aren't affected by delay, because delay only will delay the execution time but the returns bothe are immutable.
@@mibrahimdevthey both return the same 1500 ms text and thats the trick - it is wrong on the asynchronous one! Each execution is triggered exclusively when calling the await().
To summarize, the async (second) version does finish everything within ~1 second. It starts both delayFunctions at the same time, let's say T0s. delayFunction2 finishes at T0.5s, and delayFunction1 finishes at T1s. So at T1s (i.e. one second from the start) you have both functions finished and you have both results. However, since the first one returns 1000, and the second one returns 500, when you print result1 + result2 you get 1000 + 500 = 1500. That doesn't mean it took 1.5s for the whole operation. It still took 1 second, but the printout shows you the *accumulated* time for both operations, not the total time it took.
Now that I look at my comment I realize it's not as concise as I hoped it would be.
Thank you for the video!
I'm a Software Engineer with 9 years of experience, but the preparation to the interview and the process itself can still be tricky for me :)
About Coroutine question and my opinion on that part: It's not about that `runBlocking` is blocking 'entire Universe'. It's about `async-await` pair. Imagine if we had the same code, but without `await()` or with `launch` instead. The output sequence would be the same as you said in the second option: "Done" first, "Total time" second.
hey that's pretty reassuring, I'll be streaming tonight again and hope to see you there we can talk about your experience. And yea that coroutines bit i need to revisit unfortunately
@@odayprogrammer Thank you, I'll gladly check it! If it won't be late in my timezone... :D
This is great, watching other experiences (yours) made me less nervous about interviews.
Not more prepared tho 😂 I still have to fail by my own, before succeding
I realized something, not sure if it was exactly that way on the real interview question, but:
On the coroutines question, both scenarios printed the same because literally they were adding up both results (1000 + 500) and that's always the same (1500).
But if they have rather printed the "totalTime" next to the "Done" string, the result would be different, because for the async case, the suspended functions are indeed run, well, asynchronously (regarthless being on a runBlocking). Just tested on my machine and go the next results:
First case -> totalTime = 1500 ms;
second case -> totalTime = 1000 ms
The "Done" message is printed after the other one, even if we are not in a runBlocking (like CoroutineScope(Dispatchers.IO)).
I get the point, if we're not sure on how something works, we get tricked.
man i have 9 years of mobile experience, at least 8 working with android, i don't know the lastest version of android without check in the internet
🤷♂
I always know since 8 years 😇😁
You’re the best, man. Thanks for sharing
Thank you so much for this video!
It takes a lot of courage to share not the perfect experience, I respect that. ❤
I had myself very bad interview, where I was not prepared, but later I would go and learn all the questions I failed, so I will never do it again. BTW I also was asked about SharedFlow vs StateFlow and Channels.
P.S.: I didn't understand the question about what is View/ViewModel, and what is View?
Thank you for your heartfelt message, I still don’t know what the hell he meant by that question (:
@@odayprogrammer You've always been real , not fake, ma'salaama.
The Model is the domain object the viewModel offers.
In this case, it is just an Integer (count).
@3:34 so where is that document? Could you share it in the video description as you said?
For the Coroutine Questioon with async, its actually not the runBlocking that is causing this but the await keyword that is being called . await is a sunspending function and it waits until the coroutine is completed. This interview was really fun, they started from deep internals and went up to coroutines and flows. Where is the DS Algo though 😅.
Rarely do I encounter DSA interviews
@@odayprogrammer i guess it's just too competitive here, I haven't ever given one interview that didn't ask me DSA. I need to switch countries 😅
This android developer interview not for DSA.
@@bob_factory Exactly same, tired of DSA with Android
Thank you so much for this video!
Can you suggest me some kind of banking knowledge that I need to know in order to go to an interview. Thanks!
async-await examples behave a bit differently but print same thing. this is a base stuff everyone must know.
Thank you for the honest sharing of your interview experience! It is easy to share your success but much harder to share your failures. Anyway, interview experience is no other than any other experience: the more you practice the better you do!
If such Seniooooor can be rejected, I feel much better about myself being rejected 😊
And this is just 1 of the 3 other interviews
Nice video! It helps to prepare for an actual interview.
Genuinely useful content bro, thankful that you can see that
Hi
Good video thanks
about topic security Ceritifcate pinning not recommended for android.
why?
and what is the alternative you talking about?
want to hear more about the 2 certificates alternative .
Hey thank you. Well it says right in the docs, like a big warning notice they have. I am not sure about the alternative as it was not my idea but I am sure that said bank still does definitely use certificate pinning as a way to mitigate MITM attacks.
Hey I m learning and. dev using KOTLIN . so can I get to know any such imp question or any video u can make on kotlin
Thanks for sharing your experience ...
What do you think about current job market for android app development? is it in good state?
it's actually terrible right now and has been terrible for the past 6 months or more even. This was confirmed by my firsthand experience, also by a recruiter that knows a lot about the market I'm in, and another colleague who is also searching!
@@odayprogrammer Wanted to get an experienced dev's opinion on this. I agree with you. Backend has more demand for jobs compared to android development I guess.
Good one; also very funny ending. Got a flashback to your previous video on job hunting.
Well fought Legolas
Great video, I like it! BTW, about async. I believe that in the first example, runs one after another it takes 1500mc BUT if you run with async it gonna print line 1500 but it is not gonna be true. it is gonna finish the section in 1000mc..... honestly, I did not test my assumption in the studio, :) if someone does it, please share the result :)
Excellent! Thanks for sharing. I appreciate it.
I failed a take home test about making a basic shopping app with a list of products, and discounts in the checkout cart. Typical Solid/Clean/Mvvm/retrofit/ComposeUI thing. Instructions where vey strict listing the requirements needed to pass the assignment, and so I did. I failed because instructions didn't mention Unit Test one single time, strict requirements, huh? According to YAGNI, no requirement, no Tests, right? Well, they thought Unit Tests should be provided by default for all code, as a given, like oxygen to breathe.
They wanted to see if it was in your habit to test everything you write, even if not mentioned
@@odayprogrammer It felt like a ripoff, not gonna lie. It felt like turning in an exam with the back side of the page blank. What I learned from this experience is I can call it a trap this first time, but the second time will be foolishness if I repeat the same mistake. Hard lesson! Great content, I like your pragmatic tone saying things, it's never boring in the IT world.
Security docs please?
What's the purpose of asking about the latest version of Android? Instead, I'd prefer to ask (or being asked): Which version of Android did you find most frustrating, and why?
Thanks bro! Questions are really useful :)
:android version" was personal to all android devs :)
Thanks for sharing, great video!
By the way, I'm a Senior Android Programmer, want to connect up ( I forgot your name, brother )?
you can join the Discord if you like discord.gg/ZeJQAStG4c
This link doesn't work now
A great video bro, I hope that you have got another chance. Your video has thaught me something about myself. Well I have been learning android development for about a year now, and i was thinking that i am still a rocky, when i started watching your video I was pausing and answering the questions, an I think that i got most if not all of them(except for channels question), so, am I that good? or it's just that the interviews are something different in reality (i have never had an interview) ?
sure you're good, but these are 14 questions only, there's an endless number of questions and you probably won't know the answers to all of them, it happens and it's normal
I was going to apply for all the senior offers in LinkedIn 😅
Thanks for the clarification@@odayprogrammer
So helpful! Thanks!
Very helpful, thanks
Thanks!
you're crazy Andrew, stop it! By the way I'm a father now to a little baby boy, since August 2!
can i have the security doc
Thanks buddy...
This is nothing like interviews in bay Area :)
صحيح انك معلم والله ما بفهموا اشي مقارنه مع امثالك اسمع انا مبرمج على جت باك كومبوز الي 7 اشهر بنيت اب اسلاميه للاعمال الصالحه احدث اشي على جت باك مش اس ام ال والعياذ بالله بدور على حدا يستمر فيها انا مبرمج بتكساس بدي رايك بدي افتح شركه الاب فيها مثل فايسبوك فيد على فيرستور
Suppose the answer for the "2 juniors question" will be not having them at all if you want to implement your task in time, because mentoring takes time and mental resources and with juniors you actually will be SLOWER than without them
NBS ? I am quite sure that's the company you faced 😝.
Nope
@@odayprogrammer ok then my idea is wrong.
it's ABN @@AnantaCrystals
@@odayprogrammer Ohk I see. Real challenging questions have asked. It must have been very interesting.
nice like it.
Here is my advice to you:
1) If you are going for a Senior role, then you'd be expected to know all those questions, and answer then correctly and positively. On top, I would expect you to show confidence, in your answers, expect you to elaborate on them, and give your views, and extras.
2) I would expect you to mention people in the field, who have contributed to Android development, where relevant.
3) Expect you to know about future changes and Open source libraries that may help in the field.
to many expectations men
Expect to know people who contributed to Android lol. That would only remotely be relevant if you're working at Google. Even then I haven't been asked that.
latest version 14
What is the faith of developers from African countries looking for jobs in European tech companies?
If you are good you will get hired, no more no less, I know several African men here, one of them at my company too
Easy as a ABC. 😂😅😊
you said quite some things that are not correct
never
Have u given up smoking yet?
+
Hey, whats the document you mentioned ?