Since I left my previous job at Prezi in September to come back in San Diego, I have been working on personal projects. I have mainly worked on some Android applications, my blog engine/CMS and some weekend projects here and there. I have also spent a lot of time reading and when it was time to look for possible startup jobs I decided to keep track of the best articles I have read.
I got contacted for several different positions, but the ones that interested me the most where related to web development, with emphasis on the front-end, and Android development.
I am not really good at technical interviews, so I decided to focus on being really confident when explaining my previous work, and knowing the basics of all the technologies I would have to use perfectly. I am still far from perfect but all those different readings helped me making sure I knew what I was talking about.
There are a lot of resources out there to prepare yourself for technical interviews, especially when it comes to the HTML/CSS/JS stack.
The best resource is probably this one: Front End Developer Interview Question.
I basically went through all those questions and made sure I knew most (if not all) of them. The point is not to learn it by heart but just to make sure you can explain all those notions to your interviewer.
Obviously, I didn’t know all of those things, especially the things related to HTML standards, and was surprised by the amount of information I had to go through.
All the following links are good explanations for those differents questions (of course you can find A LOT of others resources to complete your knowledge)
- Progressive enhancement vs Graceful degredation
- Front-end Performance
- Long Polling, WebSockets, SentEvents 1, 2.
- Avoiding the FOUC
- Quirks mode and Standards mode
- Data Attributes
- Difference between Cookies, LocalStorage and SessionStorage
- Difference between id and class in CSS
- How float works?
- z-index and stacking context
- Inline vs inline-block
- Event delegation
- Inheritance and Prototype
- CommonJS and RequireJS
- Module pattern
- null, undefined, undeclared
- What are closures?
- How JSONP works?
- Same origin policy
- How does bind work?
- Difference between native and host objects?
- Benefits of anonymous functions
- Don’t extend dom built-in objects!
- Difference window.onload and document.onready
- Function expression vs function declaration
Getting ready for the Android part is not so easy. As I didn’t find the same kind of resources as I found for the Web stack interview, I decide to basically read the Android documentation from scratch. I really focused on the main parts and knowing the differences between the main elements of the Android ecosystem.
What is important to know?
- Lifecycle of Activity
- Differences between Activities and Fragments
- Type of intents
- How can you store data?
- How can you pass data between components of your application
- Memory management for Activities
- How do you create your layouts?
- How do you test your application? Known frameworks?
- A/B testing frameworks?
- Tools that you use? Emulators?
I worked on several Android applications but I am far from being an expert. Knowing that and being confident about those notions is a good start. You should be able to have a nice discussion with your interviewer.
When it came to practice, I was working on some personal projects, but I would recommend being able to implement quickly:
- your movies collection in Android, both for phones and tablets.
I actually haven’t done the Android practice so I’ll leave you to it :)
Let me know your thoughts!