Top Banner
How to Pass an How to Pass an Interview for a Interview for a Software Engineer? Software Engineer? What to Do and What to Avoid? What to Do and What to Avoid? Nikolay Kostov Nikolay Kostov academy.telerik.com Technical Technical Trainer Trainer http://nikolay.it Telerik Academy Telerik Academy
57
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 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!