I've done a few as a candidate and interviewer. My favorite for Android might be...<p>Round 1:<p>Quick call, 30 min max. Filter that they can speak the language, not come late, aren't intolerable assholes. Ask a question, let them talk, maybe 2-3 questions, doesn't have to be technical. This is to show respect for the next stage. It can also be a few chats via email, or a coffee. Usually HR does this.<p>Round 2:<p>Technical filter. This is to filter them out before they get to your expensive engineers. This can be your HackerRank/Codility. 0.5-4 hours is ideal there.<p>Alternatively, it can be a technical project, up to a weekend. A simple one like downloading files or accessing a network. Keep in mind that apps take a long time to build from scratch... it might take 2 hours to write a page, but it'll take a whole day to set up a project, architecture, network, testing suite, and so on. You'll want to assess that they <i>can</i> write code.<p>Round 3:<p>Personal interview, done by the engineering manager and/or colleagues. Dig into their resume, see if they're hiding something (good or bad). Don't hammer them with small questions. Don't be shy here, bring up all the yellow flags. Let them talk, then ask probing questions based on this answer, go with your gut. Many devs are introverts, and most of us can't clearly remember the details some engineering challenge from a job 3 years ago. Watch what makes them animated, watch what they zone out on.<p>Good questions are how they'd implement/update caches, hardware related questions if you do that. How would they implement a beauty filter on the camera? How would they make a SDK? How would they handle live data? What's their opinion on Jetpack Compose?<p>Bad questions are vague ones like "What drives you?" or "Tell me your biggest challenge." I've freelanced for years; I have a 22 page portfolio documenting challenges. Asking me which one was hardest is just going to activate my death march PTSD. Be specific.<p>Round 4:<p>Technical fit interview. Anyone here should have about a 50% chance of getting the job. Adjust previous filters if there's too many.<p>This should be about 1-3 full days, depending on seniority. Offer to pay for their time. Fly them into the HQ, give them a comfy hotel. This should hurt the employer too, especially the longer the interview is. This is also where you show respect so they pick you over other offers; any skilled person would still be evaluating 3 other options at this point. This is also where they get cold feet.<p>Again, building an app from scratch costs about half a day. Whether the question is trivial or difficult, it'll cost them. Online demos are popular during this pandemic, but many devs don't use an emulator, and they're terribly glitchy. A compiled file, or git branch could work better for demos.<p>So the ideal is to have a bit of code written up, based on your existing architecture. It's technical fit, let them figure out your code. Ask them to hack something into it.<p>The hard things to implement are architecture/Jetpack, testing, hardware (camera/file/permissions) related, database. Give them things that need to be in muscle memory and are already part of your workflow.