You are on page 1of 57

How to Pass an

Interview for a
Software
Engineer?
What to Do and
What to Avoid?
Nikolay Kostov

Technical Trainer
http://nikolay.it
Telerik Academy
academy.telerik.com

Table of Contents
1.

What is a Job Interview?

2.

Preparation for an Interview

3.

Typical Interview Questions and


Answers for Software Engineers
Classical Questions
Technical Questions
Non-Technical (Personality) Questions
Questions to Ask

4.

Typical Mistakes and How to Avoid


Them?

What is a Job
Interview?
A Stressful Situation or a Chance
to Demonstrate Your Knowledge
and Skills?

What is a Job
Interview?

A job interview is a meeting aimed to


assess a candidate for a certain job
position

The candidate should prove he or she is the


right person for the offered position
The interviewers asses the skills of the
candidate and his or her personality
By questions and small tasks

The candidate tries to prove his or her


skills
The candidate demonstrates his or her
personal character
4

How to Overcome the


Stress?

The job interview is a stressful situation!


You need to present yourself in the best
way
In most cases candidates fail to
demonstrate their skills due to stress

How to overcome the stress?


Just be well prepared!
Prepare yourself for the technical
and non-technical questions
Expect the questions and have good
answers
5

Interview
Preparation
What is the Best Way to
Prepare Yourself for an
Upcoming Interview?

Steps to Prepare for an


Interview

Once you have scheduled and interview,


be sure to prepare yourself for it
It is important to put enough effort in
your interview preparation
Half an hour is not enough, invest at
least few days

Steps to prepare for an interview


Research the company and the HRs
Research the offered position
Prepare for technical questions
Prepare for personality questions
7

Research the Company


Always research the company you apply for
You should expect a question at the
interview like "What do you know about
our company?"

If you answer "Nothing", you will fail


If you say something incorrect, it is even
worse

How to find information?


Obligatory explore in details the company
Web site, brochures, publications, ads, etc.
Look for articles, blogs, forums, etc.
Ask your friends what do they know
8

Research the Company


(2)
What information you should know?
What information you should know?

The company products / services portfolio


The target market and customers
The technologies used in the development
(e.g. C#, Silverlight, SQL Server, RIA
Services, etc.)
Download the products and play with them
You will be asked what you know about the
products related to your prospective job

The company mission, vision, projects, etc.


The corporate culture, corporate values
9

Research the Offered


Position

Obligatory research the offered position,


requirements, advantages and
responsibilities

You should research all mentioned products,


services and technologies in the job
description
E.g. if you see "Experience with Selenium is a
plus", be sure to install and play with Selenium

Be sure to know all "unknown words and


acronyms" in the job description
Be ready to demonstrate skills and experience
in the fields from the job description
10

Prepare for Technical


Questions

How to prepare for the technical


questions?

Typical general technical questions


Data structures and algorithms
Logical thinking and puzzles
Software engineering questions

Object-oriented programming (OOP)


Specific questions for the offered position
If the job description says "JSF and
RichFaces", you should learn these
technologies

11

Prepare for Technical


Questions

How do you prepare for a certain


technology?

Pass a course / tutorial / read a book / blog


article about the unknown technology
Obligatory create a small project using
the technology and play with it
This is the only way to get some
real-life experience, live in a project

If you have never used a certain


technology (e.g. JSF) you cannot say you
are prepared
The best way to learn it is by practicing
12

The Interview
Process
Typical Scenario
for a Technical
Interview

Technical Interview: The


Process

A technical interview for software


engineer / IT professional consists of the
following parts:
The candidate presents himself or herself

The interviewers present the company, its


business, products, services, etc.
Technical assessment solve few technical
problems and demonstrate the way of
thinking
Personal character assessment
Negotiation salary expectations, start
date,

14

Presenting the Company /


Position

Typical start of an interview:

My name is Our company is bala-bla-bla We


are leader in bla-bla-bla Our products blabla-bla Our projects bla-bla-bla We are the
The
interviewers presents themselves
best!

Usually there is more than one interviewer


HR (or HRs) and senior devs and / or team
leaders

The interviewer presents in short the


company, his department, his team, the
current and upcoming projects, technologies
used, etc.
Some companies skip this step and expect the
candidate to know all this stuff
15

Presenting Yourself

Typical next step in an interview:

Present yourself in short your relevant


experience, education, how did you start
programming, etc.

The candidate is expected to say few


words about himself / herself

Be prepared to talk 3-5 minutes


Explain how did you start programming
Your last job and projects (if you have)
Your current occupation (e.g. student at
NBU)
How did you learn about the position and
your motivation to apply
16

Technical Assessment

The technical assessment is one of the


two most important parts of the interview
You will be given technical questions to
answer and technical tasks to solve
Always come with a pen and writing pad

It is not so important whether you solve


correctly the tasks or answer correctly
You should demonstrate your way of
thinking!
The interviewer wants to know how you
attack the problem, not whether the result
is correct
17

Technical Question
Example
In C# which explain the fastest algorithm to sort
a list of customers by their first name?

You should demonstrate your way of thinking


by saying what you think at the moment, e.g.
I know the build-in
am not sure it is the

Array.Sort() method, but I


fastest.

If I had a computer I would perform a Google


search.
For multi-core CPUs I could try the parallel
sorting using LINQ with parallel extensions.
I should either implement own comparer or use a
lambda function to sort by the FirstName
Being
silent for a minute while you think is
property.

evil!

18

Technical Task Example

Suppose you are given a simple problem


like:
How do you can randomize a sequence of playing
cards?

The first thing to do it to get the writing


pad and write an example!
This shows a correct and serious way of
thinking

By using the pen explain how you could


randomize the sequence of cards
Explain how you will represent a single card
and a sequence of cards (data structures)
Explain how you could test your solution
19

Personal Character
Assessment

Assessment of your personal


character qualities is very
important for the company!

Good software companies will


weight your personal skills more
than your technical skills

You
will be asked somehow
Do you have experience working in a team? What do
you prefer being
a leader orthat
a player?
irrelevant
questions
reveal
your
character, e.g.
Do you play some kind of sport? At what position?
How do you react if you are about to miss a
deadline?

20

Personal Character
Assessment (2)

At the personal assessment questions


there is no correct or wrong answer
Just be you
Don't recite some other's words

Very important: be positive!


Negative people are not welcome anywhere

Be confident
Avoid saying "I don't know"

Demonstrate willingness and ability to


work in a harmony and with pleasure with
the others
21

Negotiation

If your interview runs well, you will reach the


"negotiation" part
Salary expectations always have a good
answer
Eventual start date
Other terms of the contract (bonuses, holidays,
working time, etc.)

Companies don't like "money-driven"


employees
You should demonstrate motivation to work
hard for long-term and continuously improve
your skills
22

Your Questions

Finally you will have a chance to ask your


questions
Having no questions is not good
Demonstrate interest to start working
Ask about your first project, about the
development process, about your team,
etc.
Never ask about salary raises, bonuses,
parking space, fitness and sport facilities,
etc.
You should demonstrate motivation to work
hard, not claims
23

Typical Interview
Questions and
(for JuniorAnswers
Software Development
Positions)

Typical Interview
Questions

At a technical interview you will be


given questions from several
categories:
General questions
Technical questions
Abstract thinking questions
Personal character questions
The "salary" question
25

General Questions
Experience, Education, Future Plans

Typical General
Questions
Where are you from?
What High school have you graduated?
What University have you graduated / studying
now?
When you started programming?
How many books about computer programming you
have read? What was the name of the last?
Do you believe that computer programming is your
passion and your future job?
Can you work on full time (8 hours/day)? If not
how many hours a week you can work?
27

Typical General
Questions (2)
What do you know about our company?
What are your English skills? Can you freely talk
on the telephone in English?
What are your plans
you see your career

for the
after 2

next
or 3

few years? How


years?

How you inform yourself about new technologies?


Do you read news or blogs? Which sites?
Shall you study more after you graduate your
current University degree? Maybe abroad?
How will you describe your typical work day?
28

Technical Questions
Algorithms, Databases, Web
Technologies, Etc.

Typical Technical
Questions

Algorithms and data structures:


Can you draw a picture of a linked list?
What is typical for the Strings in C# / Java /
PHP?
Explain how polymoprhism works in the objectoriented programming (OOP)?
Explain what is a hash-table and how it works.

Explain how the QuickSort works. How fast is it?


You are given a set of words. Find all their
subsets.
You have to implement a Web spider which runs on
a cluster of machines. How you will design it?
30

Typical Technical
Questions (2)

Databases and SQL:

How we implement one-to-many and many-to-many


relationship in relational databases?
When we use "1 x 1" relationships in database
modelling? Give an example.
What is database constraint? How constraints
work?
You have a table consisting of: EmployeeId (PK),
Name, Salary, ManagerId (FK), DeptId (FK).
Write a SQL query to find the name, salary and
department of the employee that has minimal
salary in his/her department. If many employees
take the minimal salary, display just one of
them.

31

Typical Technical
Questions (3)

XML questions:
What is
parsers
PHP?
What is
How you

the difference between DOM, SAX and StAX


for XML? How you use DOM in C# / Java /
XPath and
use Xpath

how it works? Give an example.


in C# / Java / PHP?

Multithreading questions:
How we execute multiple tasks in the same time in
C#?
You have to download 500 files from Internet but
your network bandwidth is not too wide to handle
500 downloads simultaneously so you want to
download the files by 10 at a time. How you
implement this?
32

Typical Technical
Questions (4)

Web development questions (frontend):


Explain the difference between HTTP GET and POST
requests.

Explain the meaning of the following CSS rule:


.newscolumn {
width: 400px;
float: left;
clear: both;
}
We have a <div>
visible. How to

element in a HTML page which is


hide the <div> with JavaScript?

How to do the above in jQuery?


33

Typical Technical
Questions (5)
Web development questions
(server
side):
How you could
implement
ASP.NET / Java / PHP?
What
Java
need

a shopping cart in

is custom tag / user control in a ASP.NET


based Web application? How it works? When
this technology?

/
we

What is AJAX and how it works? How we use AJAX in


ASP.NET / jQuery / PHP / Java based Web
application?
We have a list of products that have name, price
and photo. We need to display them in a Web
application. Describe the steps to do this in
ASP.NET / Java / PHP.
How we implement URL rewriting in ASP.NET / Java
Web application / PHP?
34

Typical Technical
Questions (6)

Software engineering questions:


What is software requirements specification
(SRS)? What is the typical structure of such
document?
What is source control repository? Which source
control software you have used and when?

What is unit testing? When we need it? What unit


testting frameworks you have used?
How the continous integration works?
Explain what is agile development. What is SCRUM?
Explain the most important practices of SCRUM.

35

Abstract Thinking
Questions

Puzzles, Unsolvable Problems, Etc.

Abstract Thinking
Questions

Questions in the category "abstract


thinking" aim to check the level of
alertness, ability to think and to
attack unsolvable problems
In some cases there is no correct
answer
your
taskexist
is to
Estimate
how and
many gas
stations
in Sofia.
demonstrate your thinking
Do you see the tree outside on the street? Can
you calculate how many leaves it has?

You have 8 balls. One of them is defective and


weighs less than others. You have a balance to
measure balls against each other. In 2 weighings
how do you find the defective one?
37

Personal Character
Questions
Your Best and Worst Qualities, Ability

to Work in a Team, How do you Handle


a Stressful Situation?

Typical Personal
Character
Questions to assess your personal
Assessment Questions
character:
Describe the ideal

software company from your

dreams.
Can you describe an ideal collague / team member?
What are your 5 best personal character
qualities?
What are your 5 worst personal character
qualities?
What kind of sport do you practice? At which
position do you play?
What shall you do if you have a deadline until
tomorrow and your project is not completed?
How do you resolve a conflict with a colleague?
39

Typical Personal
Character
Questions
Assessment
Questions
to assess your
personal
(2)
character:
Do you prefer to work independently or in a team?
Give some examples of a team work from your
experience.
How do you resolve a conflict with a colleague?
What does motivate you and what does not?
How do you handle stress and pressure?
Describe a difficult work situation / project you
have experienced and how you overcame it.
How you can evaluate your results. What is
success?

40

Typical Personal
Character
Questions
Assessment
Questions
to assess your
personal
(3)
character:
What were your responsibilities at your last
job / last project?

What major challenges and problems did you face?


How did you handle them?
Why are you leaving your current job?
What interests you about this job?
What challenges are you looking for in this
position?
Why we need to hire you, not someone else?
41

The "Salary" Question


How to Answer in the Best Way?

The "Salary" Question

The typical salary question is like


this?
What salary do you expect?

Your answer should demonstrate that


your work is more important than the
payment

I don't care about the payment. I want to work at


Examples
the company for
and I
believe that if my
oflong-term
possible
answers:
results are good I will be paid accordingly.
I understand that I have to learn
think I could start with a salary
in a year I expect to become more
a pay rise of YYY (or be fired if
expectations).

a lot. Thus now I


of XXX leva and
skillful and get
I don't meet your
43

The "Salary" Question


(2)

You always talk about a net salary (after all


the taxes are deducted) for a full-time job (8
hours)

Some candidates will say:


I don't know what salary to expect. Please make an
offer for me.

Some companies have a policy for this case:


You will
position

be a junior developer (trainee). For this


our salary range is from XXX to YYY leva.

Most companies will force you to say a


certain number and you should say
something be ready!
44

The "Salary" Question


(3)

Typical net salary ranges (Sofia, January


2012) for full-time software engineer jobs:
Junior .NET / Java developer 900-1300 leva
Junior PHP / Web site developer 600-900
leva
Junior QA engineer 600-900 leva
Junior support officer 400-700 leva
Junior system administrator 600-900 leva

After a 1-1.5 years you could expect twice

Senior developer (4-5 years) 2000-3000


leva
45

Typical Mistakes
and How to Avoid
One WrongThem?
Word Could Spoil the
Deal!

Typical Mistakes

Never say bad words about former


employers, colleagues, etc. (dont
hate anyone)
Always be positive!

Typical
"catch-you" question
Did you have colleagues or classmates who you

can't stand? What were they? Why you can't stand


them?

Possible
nice answer:
Generally I can stand anyone. I don't

like too
much XXX kind of people but if I need to work in a
team with such colleagues I will defenitely find a
way.
47

Typical Mistakes

Generally all kinds of inadequate claims or


pretentions are evil
Requesting too high salary, too high
position, too short work-time (less than 8
hours / day)

Being negative about something or


someone
Be positive, be successful, be skillful, be
professional, don't blame somebody else!

You should demonstrate high motivation


to work hard for long-term
Anything confirming the opposite is harmful
48

Typical Mistakes (2)

Requesting too high salary


This is my first job and I want to start with 1800
leva net salary because I am very smart and
experienced.

Requesting too high position for a


start
I want to start a job at some management position
because I have graduated University in UK.

You should always show


willingness
to work for a long-term
I will work in your company for few months and
will go abroad for a better job after I get some
experience.

49

Typical Mistakes (3)

Putting university / exams as your


first
I want priority
to start working but my University
education
unable to
Wednesday
projects.

is my first priority. Thus I will be


come at work each Tuesday and each
and when I have tests, exams and

You
could
say
same
a time
better
My first
priority
is the
my job.
In the in
same
I
have some commitments in the University but I am
way
flexible to do my best to move them out of working
time. Sometimes (e.g. once monthly) I will have to
take tests / exams in the University and I hope we
could find a way to avoid harmful consequences for
my projects at work due to my eventual absence. Do
you think this would be possible?

50

Other Hints
Do not Come Late, Usual
Dressing,

Other Hints

Be sure to come exactly at the appointed


time
Not earlier, not later!
Eventually come 5 minutes ahead

Dressing code
Be sure to come with clean dresses and
shoes
Dress yourself in your everyday style
Software engineers do not need to wear a
suit

If you are nervous, train for the interview


52

Recommended Books
How to Answer Hard Interview
Questions, Charlie Gibbs, 2nd
Revised edition, 2009, ISBN:
1845283732 http://

www.amazon.com/dp/1845283
732
Programming Interviews
Exposed: Secrets to Landing
Your Next Job , John Mongan,
Wrox, 2006, ISBN: 0935713425
http://www.amazon.com/dp/09

53

Homework
1. Read

the recommended IT interviews book

Find and read IT interview web sites in


Internet

2. Practice

for a sample interview with friends

Imagine you have applied for a certain job


position in certain company

Prepare for the interview following our


guidelines

Try to play the "interviewer" role

Try to play the "candidate" role


54

Homework (2)
3.

Try to go to few interviews (just for


practicing)

Find in Internet a job opening related to you


skills and interests, prepare and submit a job
application

Choose a small company where you don't


want really to work (some day)

Never say to the interviewer you are just


practicing, just for fun

Practicing interview will reduce your stress,


will increase your self-confidence and gain
experience

55

How to Pass an
Interview
for Software Engineer?

Questions?

Thank You!