How to Pass an Interview for a Software Engineer?

advertisement
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?
2
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?
 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 bla-bla-bla …
Our projects … bla-bla-bla … We are the best!

The interviewers presents themselves
 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 Array.Sort() method, but I am
not sure it is the 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 property.

Being silent for a minute while you think is 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 irrelevant
questions that reveal your character, e.g.
Do you have experience working in a team? What do you
prefer – being a leader or a player?
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 Answers
(for Junior 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 for the next few years? How you
see your career after 2 or 3 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 object-oriented
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 the difference between DOM, SAX and StAX
parsers for XML? How you use DOM in C# / Java / PHP?
What is XPath and how it works? Give an example. How
you use Xpath 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 (front-end):
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> element in a HTML page which is
visible. How to 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 a shopping cart in ASP.NET /
Java / PHP?
What is custom tag / user control in a ASP.NET / Java
based Web application? How it works? When we need this
technology?
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 and
your task is to demonstrate your thinking
Estimate how many gas stations exist in Sofia.
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
Assessment Questions
 Questions to assess
your personal 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
Assessment Questions (2)
 Questions to assess
your personal character:
Do you prefer to work independently or in a team?
Give some examples of a team work from your experience.
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
Assessment Questions (3)
 Questions to assess
your personal 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

Examples of possible answers:
I don't care about the payment. I want to work at the
company for long-term and I believe that if my results
are good I will be paid accordingly.
I understand that I have to learn a lot. Thus now I
think I could start with a salary of XXX leva and in a
year I expect to become more skillful and get a pay rise
of YYY (or be fired if I don't meet your expectations).
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 be a junior developer (trainee). For this
position 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 Them?
One Wrong Word Could Spoil the Deal!
Typical Mistakes
 Never say bad words
about former employers,
colleagues, etc. (don’t 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 priority
I want to start working but my University education is
my first priority. Thus I will be unable to come at
work each Tuesday and each Wednesday and when I have
tests, exams and projects.
 You could say
the same in a better way
My first priority is my job. In the same time I have
some commitments in the University but I am 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/1845283732
Programming Interviews Exposed:
Secrets to Landing Your Next Job , John
Mongan, Wrox, 2006, ISBN: 0935713425
http://www.amazon.com/dp/0935713425
53
Homework
1.
Read the recommended IT interviews book

2.
Find and read IT interview web sites in Internet
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)
Try to go to few interviews (just for practicing)
3.

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!
Download