
Ask HN: How to prepare for a Back-end Developer interview? - iKenshu
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&#x27;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&#x27;ll apreciate :P
======
richardknop
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.

To really underscore that you are a back-end developer, I would try to
concentrate on your Python skills instead of specifically Django:

* Python data structures (lists vs sets, tuples, dictionaries)

* List/dictionary comprehension

* Python 2 vs 3 (unicode, str)

* Decorators, Python "closures"

* Generators

* Modules and packages

Then be prepared to answer questions related to a specific subset of back-end
work the job you are applying for entails.

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.

Then I'd look at things such as Celery which is a library often used to
process tasks from a message queue.

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).

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.

Additional skills in dev ops area / networking are a big plus for back-end
work.

------
euroclydon
\-- OO Programming

\-- Databases, SQL, NoSQL: what they're good for. How to design DB schemas,
sharding,

\-- Multithreading and concurrency, events

\-- Server/service distribution

\-- REST Design

\-- Proficiency in one server side framework (Rails, Django, ASP.NET, Java-
something, Node-something, etc)

\-- Caching

\-- Algorithms and data structures

\-- HTTP/2

~~~
twunde
To go a little deeper on a few of these: Take a look at queues like Celery as
part of events/concurrency. You'll also need to look at design patterns as
part of OO like factories or adapters.

------
imauld
Some things I ask for when interviewing (I'm also a Python Dev that uses
Django at work):

\- 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?

\- 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.

\- Then there are "target of opportunity" questions. Questions that sort of
just pop up during the conversation.

\- 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?

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.

------
saasinator
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.

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.

Have a basic sense for social skills and learn to tell the company what they
want to hear and make them feel special.

If you can do all three of those steps you've got a job.

------
tmaly
I would say focus on:

data structures databases algorithms services logging

