-
How to Pass an Interview for a Software Engineer?What to Do and
What to Avoid?Nikolay Kostovacademy.telerik.com Technical
Trainerhttp://nikolay.itTelerik Academy
-
Table of ContentsWhat is a Job Interview?Preparation for an
InterviewTypical Interview Questions and Answers for Software
EngineersClassical QuestionsTechnical QuestionsNon-Technical
(Personality) QuestionsQuestions to AskTypical 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 positionThe candidate should
prove he or she is the right person for the offered positionThe
interviewers asses the skills of the candidate and his or her
personalityBy questions and small tasksThe candidate tries to prove
his or her skillsThe candidate demonstrates his or her personal
character*
-
How to Overcome the Stress?The job interview is a stressful
situation!You need to present yourself in the best wayIn most cases
candidates fail to demonstrate their skills due to stressHow to
overcome the stress?Just be well prepared!Prepare yourself for the
technical and non-technical questionsExpect the questions and have
good answers*
-
Interview PreparationWhat is the Best Way to Prepare Yourself
for an Upcoming Interview?
-
Steps to Prepare for an InterviewOnce you have scheduled and
interview, be sure to prepare yourself for itIt is important to put
enough effort in your interview preparationHalf an hour is not
enough, invest at least few daysSteps to prepare for an
interviewResearch the company and the HRsResearch the offered
positionPrepare for technical questionsPrepare for personality
questions*
-
Research the CompanyAlways research the company you apply forYou
should expect a question at the interview like "What do you know
about our company?"If you answer "Nothing", you will failIf you say
something incorrect, it is even worseHow 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*
-
Research the Company (2)What information you should know?The
company products / services portfolioThe target market and
customersThe technologies used in the development (e.g. C#,
Silverlight, SQL Server, RIA Services, etc.)Download the products
and play with themYou will be asked what you know about the
products related to your prospective jobThe company mission,
vision, projects, etc.The corporate culture, corporate values*
-
Research the Offered PositionObligatory research the offered
position, requirements, advantages and responsibilitiesYou should
research all mentioned products, services and technologies in the
job descriptionE.g. if you see "Experience with Selenium is a
plus", be sure to install and play with SeleniumBe sure to know all
"unknown words and acronyms" in the job descriptionBe ready to
demonstrate skills and experience in the fields from the job
description*
-
Prepare for Technical QuestionsHow to prepare for the technical
questions?Typical general technical questionsData structures and
algorithmsLogical thinking and puzzlesSoftware engineering
questionsObject-oriented programming (OOP)Specific questions for
the offered positionIf the job description says "JSF and
RichFaces", you should learn these technologies*
-
Prepare for Technical QuestionsHow do you prepare for a certain
technology?Pass a course / tutorial / read a book / blog article
about the unknown technologyObligatory create a small project using
the technology and play with itThis is the only way to get some
real-life experience, live in a projectIf you have never used a
certain technology (e.g. JSF) you cannot say you are preparedThe
best way to learn it is by practicing*
-
The Interview ProcessTypical Scenario for a Technical
Interview
-
Technical Interview: The ProcessA technical interview for
software engineer / IT professional consists of the following
parts:The candidate presents himself or herselfThe interviewers
present the company, its business, products, services,
etc.Technical assessment solve few technical problems and
demonstrate the way of thinkingPersonal character
assessmentNegotiation salary expectations, start date, *
-
Presenting the Company / PositionTypical start of an
interview:
The interviewers presents themselvesUsually there is more than
one interviewerHR (or HRs) and senior devs and / or team leadersThe
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*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!
-
Presenting YourselfTypical next step in an interview:
The candidate is expected to say few words about himself /
herselfBe prepared to talk 3-5 minutesExplain how did you start
programmingYour 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*Present yourself in short
your relevant experience, education, how did you start programming,
etc.
-
Technical AssessmentThe technical assessment is one of the two
most important parts of the interviewYou will be given technical
questions to answer and technical tasks to solveAlways come with a
pen and writing padIt is not so important whether you solve
correctly the tasks or answer correctlyYou should demonstrate your
way of thinking!The interviewer wants to know how you attack the
problem, not whether the result is correct*
-
Technical Question ExampleYou should demonstrate your way of
thinking by saying what you think at the moment, e.g.
Being silent for a minute while you think is evil!*In C# which
explain the fastest algorithm to sort a list of customers by their
first name? 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.
-
Technical Task ExampleSuppose you are given a simple problem
like:
The first thing to do it to get the writing pad and write an
example!This shows a correct and serious way of thinkingBy using
the pen explain how you could randomize the sequence of
cardsExplain how you will represent a single card and a sequence of
cards (data structures)Explain how you could test your solution*How
do you can randomize a sequence of playing cards?
-
Personal Character AssessmentAssessment of your personal
character qualities is very important for the company!Good software
companies will weight your personal skills more than your technical
skillsYou 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?
-
Personal Character Assessment (2)At the personal assessment
questions there is no correct or wrong answerJust be youDon't
recite some other's wordsVery important: be positive!Negative
people are not welcome anywhereBe confidentAvoid saying "I don't
know"Demonstrate willingness and ability to work in a harmony and
with pleasure with the others*
-
NegotiationIf your interview runs well, you will reach the
"negotiation" partSalary expectations always have a good
answerEventual start dateOther terms of the contract (bonuses,
holidays, working time, etc.)Companies don't like "money-driven"
employeesYou should demonstrate motivation to work hard for
long-term and continuously improve your skills
*
-
Your QuestionsFinally you will have a chance to ask your
questionsHaving no questions is not goodDemonstrate interest to
start workingAsk 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*
-
Typical Interview Questions and Answers(for Junior Software
Development Positions)
-
Typical Interview QuestionsAt a technical interview you will be
given questions from several categories:General questionsTechnical
questionsAbstract thinking questionsPersonal character questionsThe
"salary" question*
-
General QuestionsExperience, 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?
-
Typical General Questions (2)*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?What do you know about our company?
-
Technical QuestionsAlgorithms, Databases, Web Technologies,
Etc.
-
Typical Technical QuestionsAlgorithms and data
structures:*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.Can you draw a picture of a linked
list?You have to implement a Web spider which runs on a cluster of
machines. How you will design it?Explain how polymoprhism works in
the object-oriented programming (OOP)?What is typical for the
Strings in C# / Java / PHP?
-
Typical Technical Questions (2)Databases and SQL:*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.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.
-
Typical Technical Questions (3)XML questions:
Multithreading questions:*How we execute multiple tasks in the
same time in C#?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?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?
-
Typical Technical Questions (4)Web development questions
(front-end):*Explain the meaning of the following CSS
rule:.newscolumn { width: 400px; float: left; clear: both;}Explain
the difference between HTTP GET and POST requests.We have a element
in a HTML page which is visible. How to hide the with
JavaScript?How to do the above in jQuery?
-
Typical Technical Questions (5)Web development questions (server
side):*What is custom tag / user control in a ASP.NET / Java based
Web application? How it works? When we need this technology?How you
could implement a shopping cart in ASP.NET / Java / PHP?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?
-
Typical Technical Questions (6)Software engineering
questions:*What is source control repository? Which source control
software you have used and when?What is software requirements
specification (SRS)? What is the typical structure of such
document?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.
-
Abstract Thinking QuestionsPuzzles, Unsolvable Problems,
Etc.
-
Abstract Thinking QuestionsQuestions in the category "abstract
thinking" aim to check the level of alertness, ability to think and
to attack unsolvable problemsIn 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?
-
Personal Character QuestionsYour Best and Worst Qualities,
Ability to Work in a Team, How do you Handle a Stressful
Situation?
-
Typical Personal CharacterAssessment QuestionsQuestions 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?
-
Typical Personal CharacterAssessment 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.How do you resolve a conflict with a
colleague?Describe a difficult work situation / project you have
experienced and how you overcame it.What does motivate you and what
does not?How do you handle stress and pressure?How you can evaluate
your results. What is success?
-
Typical Personal CharacterAssessment 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?
-
The "Salary" QuestionHow to Answer in the Best Way?
-
The "Salary" QuestionThe typical salary question is like
this?
Your answer should demonstrate that your work is more important
than the paymentExamples of possible answers:
*What salary do you expect?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).
-
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:
Some companies have a policy for this case:
Most companies will force you to say a certain number and you
should say something be ready!
*I don't know what salary to expect. Please make an offer for
me.You will be a junior developer (trainee). For this position our
salary range is from XXX to YYY leva.
-
The "Salary" Question (3)Typical net salary ranges (Sofia,
January 2012) for full-time software engineer jobs:Junior .NET /
Java developer 900-1300 levaJunior PHP / Web site developer 600-900
levaJunior QA engineer 600-900 levaJunior support officer 400-700
levaJunior system administrator 600-900 levaAfter a 1-1.5 years you
could expect twiceSenior developer (4-5 years) 2000-3000 leva
*
-
Typical Mistakes and How to Avoid Them?One Wrong Word Could
Spoil the Deal!
-
Typical MistakesNever say bad words about former employers,
colleagues, etc. (dont hate anyone)Always be positive!Typical
"catch-you" question
Possible nice answer:*Did you have colleagues or classmates who
you can't stand? What were they? Why you can't stand them?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.
-
Typical MistakesGenerally all kinds of inadequate claims or
pretentions are evilRequesting too high salary, too high position,
too short work-time (less than 8 hours / day)Being negative about
something or someoneBe positive, be successful, be skillful, be
professional, don't blame somebody else!You should demonstrate high
motivation to work hard for long-termAnything confirming the
opposite is harmful*
-
Typical Mistakes (2)Requesting too high salary
Requesting too high position for a start
You should always show willingness to work for a long-term*This
is my first job and I want to start with 1800 leva net salary
because I am very smart and experienced.I will work in your company
for few months and will go abroad for a better job after I get some
experience.I want to start a job at some management position
because I have graduated University in UK.
-
Typical Mistakes (3)Putting university / exams as your first
priority
You could say the same in a better way*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.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?
-
Other HintsDo not Come Late, Usual Dressing,
-
Other HintsBe sure to come exactly at the appointed timeNot
earlier, not later!Eventually come 5 minutes aheadDressing codeBe
sure to come with clean dresses and shoesDress yourself in your
everyday styleSoftware engineers do not need to wear a suitIf you
are nervous, train for the interview
*
-
Recommended Books
How to Answer Hard Interview Questions, Charlie Gibbs, 2nd
Revised edition, 2009, ISBN: 1845283732
http://www.amazon.com/dp/1845283732Programming Interviews Exposed:
Secrets to Landing Your Next Job , John Mongan, Wrox, 2006, ISBN:
0935713425 http://www.amazon.com/dp/0935713425*
-
HomeworkRead the recommended IT interviews bookFind and read IT
interview web sites in InternetPractice for a sample interview with
friendsImagine you have applied for a certain job position in
certain companyPrepare for the interview following our
guidelinesTry to play the "interviewer" roleTry to play the
"candidate" role*
-
Homework (2)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 applicationChoose a small
company where you don't want really to work (some day)Never say to
the interviewer you are just practicing, just for funPracticing
interview will reduce your stress, will increase your
self-confidence and gain experience*
-
How to Pass an Interviewfor Software Engineer?Questions?
-
Thank You!