Technical Questions

advertisement
How to Pass an Interview
for a Software Engineer?
What to Do and What to Avoid?
SoftUni Team
Technical Trainers
Software University
http://softuni.bg
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 formal meeting: candidate vs. employer
 Aimed to assess a candidate for a certain job position
 The candidate should convince he or she is the right person for
the offered position
 The interviewers assess the skills and 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
 Many 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
 Practice going to interviews
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
 Put enough effort in your interview preparation
 Half an hour is not enough, invest a 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?

Explore 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

Download the company's products and play with them
 The target market and customers
 The technologies used in the development

E.g. PHP, JavaScript, Angular.js, MySQL, jQuery, etc.
 The company mission, vision, projects, etc.
 The corporate culture, corporate values
9
Research the Offered Position
 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 (2)
 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
 Typical interview steps for a technical position:
1.
The candidate presents himself or herself
2.
The interviewers present the company, its business, products,
services, etc.
3.
Technical assessment – solve few technical problems and
demonstrate the way of thinking
4.
Personal character assessment
5.
Negotiation – salary expectations, start date, etc.
6.
The candidate asks questions
14
Presenting the Company / Position
 Typical interview start:
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, current / upcoming projects, technologies involved, etc.

Some companies skip this step, expect the candidate to know this
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 SoftUni / FMI / NBU)

How did you learn about the position and your motivation to apply
16
Technical Assessment
 The technical assessment is critical for passing the interview
 You will be given technical questions to answer
 And small technical problems 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 Questions – Examples
In C# 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 if 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 parallel LINQ.
I can use a Customer class and 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 Problem – Example
 Suppose you are given a simple problem like:
How can you shuffle a deck of playing cards?
 The first thing to do is to get the writing pad and draw an
example!

This shows a correct and serious way of thinking
 By using the pen explain how you could shuffle the cards
 Explain how you will represent a single card and a deck 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 irrelevant questions that reveal your character
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 yourself

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 team
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
 Money should not be the primary focus for your first job
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.
 Avoid asking 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 Categories
 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
Your Last Employer
 Why did you leave your last employer?
 Be positive, be mild, avoid hating
 Never say "they were fools, idiots, stupid, …"
 Explain that you are looking for a better career
 If you hate your former employer, you will hate your next
employer too
 Companies don't like haters
29
Technical Questions
Algorithms, Databases, Web Technologies, Etc.
Typical Technical Questions
 Algorithms, data structures, OOP:
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.
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?
31
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.
What is typical for the NoSQL databases? Give examples.
32
Typical Technical Questions (3)
 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 (3)
 Web development questions (front-end):
How do you implement a HTML form with variable number of
fields (with [Add row] / [Remove row] functionaliry)?
How will you create a responsive Web site of 4 columns, which
shrinks to 2 columns and 1 column on smaller devices?
Explain how SASS works.
Explain what is a "closure" in JavaScript.
How do you color the odd / even table rows in a HTML table?
34
Typical Technical Questions (4)
 Web development questions (server side):
How you could implement a shopping cart in PHP / ASP.NET / Java?
What is a custom tag / user control in a ASP.NET / Java / PHP 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 PHP / ASP.NET / Java Web app?
35
Typical Technical Questions (5)
 XML questions:
What is the difference between DOM, SAX and StAX parsers for XML?
How do 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 to do this?
36
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 testing frameworks
you have used?
How the "continous integration" works?
Explain what is agile development. What is Scrum? Explain the most
important practices of Scrum.
37
Abstract Thinking Questions
Puzzles, Unsolvable Problems, Etc.
Abstract Thinking Questions
 Questions in the category "abstract thinking" aim to check your
ability to think and to attack unsolvable problems

Sometime no correct answer exist

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?
39
Personal Character Questions
Your Best and Worst Qualities, Ability to Work
in a Team, Handling a Stressful Situation
Personal Character 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?
41
Personal Character Questions (2)
 Questions to assess your personal character:
Do you prefer to work independently or in a team?
Give some examples of a teamwork 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?
42
Personal Character 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?
43
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?
 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).
45
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!
46
Typical Mistakes
One Wrong Word Could Spoil the Deal!
Typical Mistakes
 Don't hate your former employers, colleagues, etc.
 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.
48
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 motivation to work hard for long-term
 Anything confirming the opposite is harmful
49
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 a 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.
50
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?
51
Other Hints
Do not Come Late, Usual Dressing, …
Other Hints
 Be sure to come exactly at the appointed time
 Don't come later!
 Eventually come 5-10 minutes ahead (not too early)
 Dressing code: everyday style
 Software engineers do not need to wear a suit
 Typical interview clothes: shirt + jeans
 If you are nervous, train for the interview
 After 5-6 interviews, you will feel comfortable
53
Personal Hygiene
 Some developers are not hired due to bad hygiene
 Take a bath every day, especially before the interview
 Clean regularly your teeth

Use toothbrush and toothpaste

Use dental floss, visit dentist, use mouthwash
 Deodorant sticks exist

Just use them after taking a bath
 Use clean, new clothes and shoes
54
Recommended Books
Cracking the Coding Interview: 150 Programming
Questions and Solutions, Gayle Laakmann
McDowell, 5th edition, 2011, ISBN 098478280X
http://www.amazon.com/dp/098478280X/
Programming Interviews Exposed: Secrets to
Landing Your Next Job, Noah Suojanen, John
Mongan, Noah Kindler, Eric Giguere, 3rd edition,
Wrox, 2012, ISBN: 1118261364
http://www.amazon.com/dp/0935713425
55
How to Pass an Interview?
?
https://softuni.bg/courses/teamwork-and-personal-skills/
License
 This course (slides, examples, demos, videos, homework, etc.)
is licensed under the "Creative Commons AttributionNonCommercial-ShareAlike 4.0 International" license
57
Free Trainings @ Software University
 Software University Foundation – softuni.org
 Software University – High-Quality Education,
Profession and Job for Software Developers

softuni.bg
 Software University @ Facebook

facebook.com/SoftwareUniversity
 Software University @ YouTube

youtube.com/SoftwareUniversity
 Software University Forums – forum.softuni.bg
Download