Yesterday I saw a topic about how prepare for a Front-end developer, now i think maybe you tell me about Back-end interviews.<p>I'm a django developer and I want to know how prepare for interviews.<p>What should I know? How can I prepare for that?.<p>If you help me i'll apreciate :P
A Django developer doesn't necessarily mean back-end to me. Lot of Django developers mostly work on websites and most of their time is actually spent on form validation, templating, sessions and so on which I would say is more of a front-end.<p>To really underscore that you are a back-end developer, I would try to concentrate on your Python skills instead of specifically Django:<p>* Python data structures (lists vs sets, tuples, dictionaries)<p>* List/dictionary comprehension<p>* Python 2 vs 3 (unicode, str)<p>* Decorators, Python "closures"<p>* Generators<p>* Modules and packages<p>Then be prepared to answer questions related to a specific subset of back-end work the job you are applying for entails.<p>For example, if the job description is you will be building web services consumed by third parties (mobile apps etc), then be prepared to demonstrate good understanding of HTTP, different data interchange formats (JSON, XML), APIs, REST.<p>Then I'd look at things such as Celery which is a library often used to process tasks from a message queue.<p>Also tooling around dependencies (virtualenv, pip), be able to explain how to package and deploy Python applications (could be Django apps but that's not important).<p>And then of course, last but not least, general CS questions about data structures, databases, OOP, design patterns is something you should always be prepared for.<p>Additional skills in dev ops area / networking are a big plus for back-end work.
-- OO Programming<p>-- Databases, SQL, NoSQL: what they're good for. How to design DB schemas, sharding,<p>-- Multithreading and concurrency, events<p>-- Server/service distribution<p>-- REST Design<p>-- Proficiency in one server side framework (Rails, Django, ASP.NET, Java-something, Node-something, etc)<p>-- Caching<p>-- Algorithms and data structures<p>-- HTTP/2
Some things I ask for when interviewing (I'm also a Python Dev that uses Django at work):<p>- Given an arbitrary task what framework would you use and why? I like hearing peoples answers to this as you get to see what they think is important as dev. Do they like a framework because it's modular? Because it is unopinionated? Because it's easy to modify?<p>- Given a set of requirements how would you implement an API to satisfy them? I like to see what questions they ask. Are they thinking about performance? Database impact? How will they handle errors? Are they introducing coupling between resources? I'm more interested in how well you can justify your reasoning than it being the "correct" choice. You should be able to defend your choices/opinion without being belligerent.<p>- Then there are "target of opportunity" questions. Questions that sort of just pop up during the conversation.<p>- Lastly I ask what questions they have for me. These are important as it shows what's important to you. Some good ones I have been asked:
- How much ownership do you have as a dev over a project?
- How much impact do devs have on technology decisions?
- Why do you like working here?<p>I tend to ask more high level questions and don't really do a ton of whiteboarding unless the candidate feels more comfortable writing things down. During a loop we have more than one tech interview so others whiteboard questions.
Have a clear understanding (and be able to explain) how to design different systems. For instance, you should be able to walk through (and sketch on a whiteboard) how to design a web service like Pastebin, Imgur, Pingdom or other such services.<p>You should be able to solve many common algorithmic problem patterns. It sucks, but the only way to get a job these days is to do well on coding interviews that are heavy in algorithmic problems, so do a lot of practice. The best way to practice is with a pen and paper, don't type up the solution until you're done and you've walked through it yourself.<p>Have a basic sense for social skills and learn to tell the company what they want to hear and make them feel special.<p>If you can do all three of those steps you've got a job.