After you have gone through an iOS development course or are tired of working in your current company, now you want to look for a new opportunity as an iOS developer. This blog post gives you an overview of what you should expect and prepare for your coming interview in Malaysia context based on my personal experience.
I won’t go into details about how you should write your resume. You only need to make sure what you wrote is true and legit, otherwise, you risk being identified as someone not trustworthy when you couldn’t answer the questions the interviewer asks about your previous experience. Also, personally, I don’t think your resume holds a very important role in helping you to get through the interview, the most important things people look at are your portfolios, experience and also how well you do in the interview. Feel free to comment and let me know if you have a second opinion on this.
Your interview experience will be different depending on the company’s size, especially in tech and whether or not they are a technology-centric company. Generally, to tell whether a company is technology-centric, you can ask yourself whether technology is the core of their business. In other words, the company started off with technology or only adopted it into their day-to-day business afterwards. A good example would be eWallet companies and traditional banks. While the banks may adopt technology along the way after realising it is important for their business, a lot of their operations still remains the same as before. Whereelse, the eWallet companies are born out of technology and adopted it at the very beginning of their business. Just what Bane said to Batman in The Dark Knight Rises:
“Ah you think darkness is your ally? You merely adopted the dark. I was born in it, molded by it. I didn’t see the light until I was already a man, by then it was nothing to me but blinding!”Bane (The Dark Knight Rises)
You can imagine in this case:
- Darkness = Technology
- Batman = Non-technology centric company, ex: banks
- Bane = Technology centric company, ex: eWallets
However, please don’t get me wrong, there are still some good companies out there that started off as non-technology centric, then made a huge investment into tech and successfully transition into a tech company, such as Amazon. Here are the different positions that the company may be hiring based on their mobile engineering team size below.
The First Person
You are the first mobile or iOS engineer in the company.
The interview normally revolves around your achievement, past experience, portfolios and leadership. This is because they will require you to either complete the project on your own independently or hire a few more developers, usually junior developers for the company. Example questions are:
- Share with us about the projects you have done in company XYZ
- How many production apps have you created or maintained in the past?
- Have you managed a team before? How big is the team size?
- And, other general engineering questions if they have a CTO interviewing you.
Small Team (2 – 5 developers)
Now things get a bit more interesting. Normally, at this team size, the team lead would normally be the person who will be interviewing you. Some will ask to complete an assignment exercise to build a simple iOS application with certain requirements, such as CRUD (Create, Read, Update, Delete, ex: TODO app), architecture (MVC, MVP, MVVM, VIPER, etc), Unit Test, etc. The reason for the assignment is mainly to filter the candidates and also save the interviewer’s time to interview only those who submitted and did well in the assignment.
During the interview, normally the interviewers will ask questions specifically for iOS development, such as:
- Storage system (ex: User Default, Core Data, Keychain, File System, etc) and their pros and cons
- Automatic Reference Counting (ARC)
- Auto Layout (Content Hugging Priority and Content Compression Ressistance) or Swift UI
- Retain Cycle and how to debug and fix them.
- Class vs Struct and when to use each of them.
- Unit Test
Medium Size Team and Beyond (>= 6 developers)
At this stage, normally the companies will start to use some platforms like codality, hackerank, etc to test the candidate’s data structure and algorithm capability and also to filter the candidates. Just make sure you have done some exercises in platforms like leetcode and hackerank to prepare yourself before the interview. After you have passed through the interview, usually there will be a few interviews waiting for you in the line, each one of them will interview based on different scopes, such as Data Structure and Algorithm, iOS, architecture, behaviour, etc.
Data Structure and Algorithm
Please study leetcode, hackerank and Swift Algorithm Club by Raywenderlich and focus on array and hashmap first. I recommend you to get started with some easy questions, then study more medium questions and few hard questions to get the right balance of exposure to different difficulties of questions.
Aside from the questions that I showed earlier, the company in this stage will test a few things more to see if you are a right fit:
- SOLID Principles and what is each of them
- In prompt request to create an app from scratch, show VIPER archictecture, or implement unit test in pair programming
- CICD pipeline
- Unit Test, the interviewer may ask you to demonstrate in pair programming.
- Some random questions like what is the hardest question you would ask if you are interviewing me.
If you don’t know how to answer them, just did your research and make sure you understand them before applying for the jobs.
In this interview, the interviewer will normally be your potential engineering manager, the questions won’t be programming related but more towards to culture fit and how you handle the different situations in work, such as:
- What is your biggest challenge in work and how you overcomes it.
- What is your strength and weakness?
- If you have a conflict with your manager, what you will do?
Questions to ask The Interviewers
Finally, other than preparing the questions that the interviewers might ask, you should also prepare the questions to ask the interviewers to get a sense of how it feels to be working in the team, sometimes what you ask might help you to stand up among the candidates as well.
Things I normally will ask the interviewer during the interview are:
- What is the software development methodology the team uses? Ex: Scrum, Kanban, Waterfall, etc. If they uses Waterfall or not follow any methodology, I wouldn’t consider to work in this company because most likely I will be working day and night without any boundaries.
- What are your tech stack?
- What are the career ladder in the company?
- How does the team measures KPI? This is important! Your promotion and bonus will depend on it.
No matter the result of the interview, just remember to have fun and learn from the interview. If you find this article helpful, please remember to share it to your friends. See you next time.