In this post; I like to share a guideline focused on interview preparation for developers, it is based on my experiences and readings. So, previously in my career I had received countless offers and had interviews with medium/huge companies. I’ve decided to write as a guideline, it may helpful for you too.
We all know interviewing is challenging process. So, you probably working in a fulltime role and you are solving major problems every day, doing regular tasks and sprinting, daily scrum meetings or using kanban board every morning, running sprints so on.
But, if you think you are ready for challenging interview, you are wrong. Because you still need to stay sharp, maybe you think feeling ready for the battle but pushing you forward is a good idea.
You have to be ready for your next role today, maybe inhouse or a different company, try to understand company cultures and be learn about how team organizations work in software industry and how changing business requirements.
So, keeping sharp yourself is your best bet, let’s sharp the skills!
First of all, let’s define roles in software developers.
There was three level of developers in IT industry, based on their experiences.
They need often help, especially in the middle of the task while they doing tasks assigned from seniors. Not only don’t know about business domain and requirements so and they may struggle with the language. They may make frequent mistakes.
They have more experience then others, they will be provided battle-tested solutions. They have vast experience in most areas, practially have hit-power. They won’t necessarily have an architectural vision but if they have, they can leverage overall vision. They mostly spend their times to unblock others, mentor new hires and juniors.
They spend most of their times to create an architectural vision for the project they work. They provide support, handles requests and facilitates actions to resolve issues. But most cases lead devs is one-of the senior in the team which who have a vision and have team skills, who can guide.
We know the roles (in practically), now you can decide which role is fit your experiences in work area
So, let’s define a preparation outline first.
Before the actual interview start, most of the companies like to do first Skype call or phone call to get know about the candidate. I’ve called this meeting “Introduction” meeting.
In introduction meeting, it is usually you’ll do a friendly-call with the recruiter, so they ask questions just about “You”.
So, they try to understand; are you fit for the role, are you same mindset with the company to fit with their culture etc, they try to understand what is your level of technical and soft skills.
Q1: Tell me about yourself?
Q2: What are your strength/weaknesses?
Q3: What is your previous experiences and works?
Q4: Which programming language(s) do you feel most knowledgeable/comfortable with? Which language(s) are you currently working with? What is OS platform(s) you most comfortable with?
Q5: Describe in detail what your personal/professional computing environment looks like (what hardware & software do you use) and why.
Q6: What technical projects have you contributed (e.g. open source projects) to outside of work and/or school?
Q7: What publications, websites, blogs, and communities do you follow or you’re a member of?
Bonus: As a developer/lead/manager your social profiles, i.e Stackoverflow account, Github/Bitbucket account and if you are blogging provide them too.
2- Technical / Home / On-site Assesment
This is the second meetup. Most of the questions are the technical scope. the interviewer will ask questions based on topics / or can expect you to complete a solve a problem to understand your level of knowledge in CS, algorithms, data structures, architectures, software development methodologies.
Some companies prefers giving you an home assesment with the limited time (1 day to 3 day maximum). They expect you to complete home assesment, refactor code or write a application from stratch.
You have to know about CS topics, must be well established skill set in this area (at least have an idea in the areas below is plus +)
(Explain what is Big-O, what is space/time complexity about etc.)
Union-Find (Disjoint Set)
Cryptography (Cipher, RSA, Diffie-Hellman, Elliptic Curved Crypto)
Longest Common Sequence
Longest Increasing Subsequence
Longest Palindromic Subsequence
Shortest Common Supersequence
Bit Counting (Brian Kernighan’s Algorithm)
Graph Theory (Bellman-Ford, BFS, DFS, Depth-Limited Search, Dijkstra’s Shortest Path Algorithms (Floyd-Warshall, Edmonds–Karp algorithm, Ford–Fulkerson algorithm)
Minium Spanning Tree (Kruskal’s Minimum Spanning Tree, Prim)
Search (Linear Search, Binary Search)
Sorting (Bubble Sort, Heap Sort, Insertion Sort, Merge Sort, Quick Sort, Radix Sort, Selection Sort, Shell Sort)
Tree (Binary Search Tree, Binary Search Tree Traversal, Search, Find Min and Max, Delete in Trees)
Lowest Common Ancestor
3- Interview Questions
Most common interviewing questions, technical specific/ for asked on-site assessments
IOS / Swift / Objective-C Questions
You need strong skills, experience about mobile software development, testing and mentoring other members in team is key for this role
Q1: What is the concurrency?. How many ways you know to achieve concurrency?
Q2: What are differences between Manual and Automatic Reference Counting?
Q3: Can you Explain IOS Design Patterns? ( Singletons, KVC, Notifications, MVC, Delegation)
Q4: Define OOP. What is Encapsulation, Abstract, Inheritance, Polymorphism and can you explain Solid Principles in few words?
Q5: What is the difference in method overriding and method overloading?
Q6: Can you explain memory management, What is heap and what is a stack?
Q7: Memory management and ARC (automatic reference counting) vs MRR (Manual Retain Release)?
Q8: What is a memory leak?
Q9: What are the benefits of Swift over Objective-C?
Q10: What is Synchronous vs. Asynchronous in GCD?
Q11: Why do you generally create a weak reference when using self in a block?
Q12: What is the GCD method you call to pass some work to a queue asynchronously? What parameters do you provide to this method?
Q13: What are delegates? Why you need to use?
Q14: What are NSNotificationCenter and how does it work?
Q15: What is the purpose of the reuseIdentifier?
Q16: How many UITableViewCells are allocated when you first load a UITableView? How many additional ones are allocated as you scroll through the table?
Q17: Why you are defining atomic and nonatomic properties in Objective-C?
Q18: Whats the difference between weak and strong?
Q19: What’s the difference between not-running, inactive, active, background and suspended execution states?
Q20: What is a category in Objective-C and when is it used?
Q21: What is the difference between viewDidLoad and viewDidAppear? Which should you use to load data from a remote server to display in the view?
Q22: What happens when you invoke a method on a nil pointer?
Q23: What is Git? Are you using and how?
Q24: What are some of the major differences between Objective-C and Swift?
Q25: Explain Autolayout, Constraints and Autolayout methods such as (layoutSubViews, setNeedsLayout, layoutIfNeeded and updateConstraints)
Lead specific questions
You need to know about concepts and principles about software architectures, decision-making skills, business skills and team skills are key for this role.
Q1: How would you convert the codebase of an existing iPhone or iPad app?
Q2: How would you go about structuring an iOS application that you are building from the ground up?
Q3: How you implement middleware / (BFF) backend for frontend layer?
Q4: How you explain dependency Injection, how you use?
Q5: How you do testing and can you explain contract test?
Q6: What are some ways to support newer API methods or classes while maintaining backward compatibility? For instance, if you want your view to have a red tintColor (a method introduced in iOS 7), but your app still supports iOS 6, how could you make sure it won’t crash when running on iOS 6? Another example would be using NSURLSession vs. NSURLConnection, how could you make it so that your code uses the most appropriate of those two classes?
Q7: How you handle version changes of the application. For example; consumers have different versions and they installed in different devices. You have to make sure to consumers if using an older version of the app, it must be still functional. So, how do you operate this process automated?
Q8: How did you lead to move forward with the team members if you work as Lead Developer. So, can you explain how you handle a different kind of situtations and how to make them believe you and follow you?
Q6: You have to make sure every team member in your team, produce same standards of code and produce the maximum output value. So, what is your way to do?
Q7: How did you handle large codebase built using Objective-C and how did you handle migration to Swift, what is your bulletproof process?
Q8: How you define main differences vs Objective C and Swift? What is the in-outs in these two language/platform? So, if we have a big project and decide to migrate from Objective-C to Swift is there any downsides / bottlenecks can we face?
Q9: How to you define better development practices? For example; think about your previous work, what can be done better if you lead to project?
Q10: How you define code review standards? What is the best way to make every team member have same coding model, architectural model and processes?
Q11: How to you define pair programming? Is that necessary? Do you practice before?
Q12: How to you define Continous Integration / Continous Delivery.
Q13: How to you define yourself as the manager. What is your strengths/weakness?
Q14: How to avoid or eliminate technical debt from previous project or project you leading.
Q15: Explain Provisioning Profile & App ID
Q16: Explain Code Signing in IOS?
Q17: Explain Signing Identity, Public & Private Key, Keychain Application
4- Test Driven Development (TDD)
You need to know about concepts and fundamentals about testing systems, test variations and testing scenarios, this is plus +
Q1: What is the software testing? (Explain basic concepts of testing)
Q2: What is the system under test?
Q3: What is test-driven development, how is your process?
Q4: What are best methods do testing IOS apps?
Q5: What is acceptance testing?
Q6: What is alpha testing?
Q7: What is beta testing?
Q8: What is automated testing?
Q9: What is unit testing?
Q10: What is code coverage? How can you measure?
5- HR Assessment
You need to know about yourself, learn what is your weakness/strength and learn about work ethics, business code of conduct.
Q1: Why should I hire you?
Q2: Why want to work with our company?
Q3: For the last project you have been involved, what percentage of your time did you spend coding? What did you do with the rest of your time on that project?
Q4: At what point in your life did you first decide to seek a career in software development/computer programming? Before undergraduate / during undergraduate / after undergraduate?
Q5: What kind of job and issues would you like to focus on?
Q6: What would your ideal position look like?
Q7: What is your career expectations middle and long term?
Bonus: Solve logical tests, reasoning tests and improve your decision-making skills.
Some companies maybe ask 1–2 questions if they prefer quizes to test your decision-making skills to understand how you thinking logically, how you are solving problems.
So take a look, proven testing and try to solve.
- Take Wonderlic Test
- Take Logical Reasoning Test
Thanks for the reading.
About the Author
Here is my website, portfolio, and works. 👨💻
You can get in touch with me if you have any questions/projects also say “Hi” to my bot :)
Seyhun Akyürek working as senior software specialist, writing code using iOS, Swift, Objective-C, Cocoa Touch …
You can follow me on Twitter too.