- 10m - candidate CV
- 5m - Organization technologies and dev workflow
- 20m - overall computer OS/network questions
- 5m - linux/git
- 10m - scalability
The candidate is given 10 minutes to talk a little about himself. Where did he studied, where did he worked, projects he has done before, technologies he likes.
Here we give a brief overview on what it is to be in the organization. We list the technologies/languages we work on, how our developement workflow occurs, and what is a normal day at the office.
Indicate to the candidate that this is a two way conversation, where the important thing is not the answer per se, but the process that uses to get to the answer. Wikipedia probably already has all the answers.
First question is:
" When I turn my computer on, i go to my browser and type in the URL bar: *www.google.pt*.
Can you tell me what happens next? I know a lot of things happen, don't worry, just start somewhere and we will talk
about other pieces gradually"
Things that should be discussed with candidate (order not important and some might be skipped, depends on candidate profile):
- DNS - Hierachical, cached
- Routing - DHCP, routing tables
- System calls (sockets)
- HTTP/TCP protocol - Here on HTTP ask status codes, and what is GET/POST/PUT
- Load balancing (on the google side)
- Cookies - Google already knows my account, who does he do that, security problem with cookies?
Segway to the next question using the fact that the candidate explained about GET/POST/PUT before and ask what is a REST architecture
Final question for this part. Ask if candidate know minimum of C (if not please interviewer should adapt to other language)
If i do a malloc on a program, and that program crashes does that memory become lost until next reboot?
(include JAVA Virtual machine in the crash to if java is the language)
Linux - Question: Imagine that the business team asks me every night to send a very important report at 1am to a client.
On the first two nights I wake up, run the script manually and then go to bed again. On the third night I'm sleepy.
How can you help me to not wake up every night.
Git - What is a difference between a git pull and a git fetch.
If candidate does not know, no problem, ask what is difference between git add and git commit. Here important is not if he knows the exact definition but if he understands the fundamentals concepts of git.
Open google docs, invite him to the document and ask the user to code with you the following problem. Explain that you are going to work as a team (pair program) and there is no problem in asking about anything. There is missing information on purpose to incentivize the dialog. Choose the language you want.
Each user has a list of calls.
We want to show to the user his 8 calls with longer duration, but right now we notice that every time we ask the server:
get_8_longer_calls(user)
get_all_calls(user)
it is getting slower each day that passes.
How can we diagnose, mitigate/solve the problem?