spring 2020 software engineering interviewing and wrap up ...rjust/courses/2020spring/cse403… ·...

28
CSE 403 Software Engineering Spring 2020 Interviewing and Wrap up June 05, 2020

Upload: others

Post on 19-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

CSE 403Software Engineering

Spring 2020

Interviewing and Wrap up

June 05, 2020

Page 2: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● Interviewing● Code-interview examples● Wrapping up the quarter

Today

Page 3: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

Interviewing

Page 4: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● If you have done this before, reflect on your experienceand think about what you would add.

● If you have not, you are likely going to be doing this soon!

Overview

Page 5: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

1. Recruiter/resume screen2. Preliminary interview(s)

● Non-technical and/or technical phone screening● 1-2 technical phone interviews● 1-2 online programming challenges

3. On-site interview day(s)● About 3-6 in-person technical interviews

4. Follow-up technical phone/video interview(s)

Timeline: 3 weeks to 3 months

The process

Page 6: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● Practice result-first and situation-action-result pitch.○ By how much did you lower costs or increase profits, and how?

● Focus on recent experience and prepare for typical questions.○ Tell me about a project you’ve worked on.○ Tell me about a recent programming challenge you faced.○ Tell me about a recent conflict with a teammate.○ Why do you want to work here?

Studying for non-technical questions

Page 7: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● Practice result-first and situation-action-result pitch.○ By how much did you lower costs or increase profits, and how?

● Focus on recent experience and prepare for typical questions.○ Tell me about a project you’ve worked on.○ Tell me about a recent programming challenge you faced.○ Tell me about a recent conflict with a teammate.○ Why do you want to work here?

Keep in mind your “basic” job description.

Studying for non-technical questions

Page 8: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● Practice result-first and situation-action-result pitch.○ By how much did you lower costs or increase profits, and how?

● Focus on recent experience and prepare for typical questions.○ Tell me about a project you’ve worked on.○ Tell me about a recent programming challenge you faced.○ Tell me about a recent conflict with a teammate.○ Why do you want to work here?

Your CSE 403 reflection is a great starting point.

Studying for non-technical questions

Page 9: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● DO pick a good language and know it well!○ Use language features that make things easy (e.g., list slices in Python)

● DO know the obvious topics○ Depth-first and breadth-first traversals.○ Implementation/operations/traversals/running times for hash tables, binary

(search) trees, arrays, singly-linked lists, and heaps.○ Quicksort, merge sort, ...○ Non-traditional uses of hash tables.○ Dynamic programming.

Studying for technical questions

Page 10: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● DO practice real questions○ Strongly prefer breadth of knowledge to depth.○ Work through the questions, don’t just read the answers.○ Read interview books and websites (interviewers look here too).○ Share with friends (but consider NDAs).

● DO use paper or a whiteboard, not a computer.● DO switch roles with a friend being “interviewer”

and “interviewee”.

Studying for technical questions

Page 11: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● DON’T (re)learn complex data structures in detail○ Your interviewers haven’t written an AVL tree since college, if ever.○ Most questions feature traversals of arrays/strings, linked lists, grids

(two-dimensional arrays), and DAGs.

● DON’T rely on the recruiter to tell you about questionsand topics to expect○ Each interviewer selects their own questions.○ Interviewers are likely from different teams.

Studying for technical questions

Page 12: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

1. Write the problem on the whiteboard. Ask clarification questions.

2. Talk through an algorithm. No code yet!

3. Write code at a moderate pace.

4. Step through at least one non-trivial test case. Fix bugs carefully and methodically.

Tackling a technical question: outline

Page 13: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

1. Write the problem on the whiteboard. Ask clarification questions.● Guarantees that you understand the question/problem.

● If you’ve done this exact problem, say so and outline a solution(be prepared to describe the solution in detail).

● Discuss simplifying assumptions and clarify the spec:○ What about symbolic links in file systems?○ Does this maze have more than one exit?○ Is the input size bounded (is space complexity an issue)?

Tackling a technical question

Page 14: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

1. Write the problem on the whiteboard. Ask clarification questions.

2. Talk through an algorithm. No code yet!● Always mention obvious-but-inefficient solutions. They’re great

fallbacks, and show that you can solve the problem.

● You’re never totally stuck. You can always decompose and solve at least part of the problem, so focus on that!

● Stay positive.

Tackling a technical question

Page 15: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

1. Write the problem on the whiteboard. Ask clarification questions.

2. Talk through an algorithm. No code yet!

3. Write code at a moderate pace.● This will feel slow!

● It’s okay to forget some syntax or an API, just say so.

● Use good decomposition: “I really wish I had a function that …” (don’t implement any helpers unless asked to).

● And btw, stay positive :)

Tackling a technical question

Page 16: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

1. Write the problem on the whiteboard. Ask clarification questions.

2. Talk through an algorithm. No code yet!

3. Write code at a moderate pace.

4. Step through at least one non-trivial test case. Fix bugs carefully and methodically.● Don’t be careless or fast-paced.

● Make sure to diagnose the root cause before fixing a problem.

● And yes, stay positive :)

Tackling a technical question

Page 17: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

Examples

Page 18: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

Two code-interview examples

Breakout rooms● Pairs, 2x8 minutes

1. Student 1: interviewer; student 2: interviewee2. Student 2: interviewer; student 1: interviewee

● Coding problems:1. Given a set of n-1 numbers

○ Numbers enumerated from a to b (n numbers)○ One number is missing○ Find the missing number

2. Determine whether a player has won in Tic Tac Toe

Page 19: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● You have to be competent and make the interviewers like you.

● Some interviewers pick a question they know you can’t solvejust to see how far you get and how you handle the stress.

● Postpone important interviews until after you’ve had practicewith other companies.

Other aspects: psychology

Page 20: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● You are also evaluated on the questions you ask.● Demonstrate insights, passion, and critical thinking

○ I’m interested in learning X. Did you come to this company with a background in X already, or are there opportunities to learn it?

○ How do you overcome problem Y given your environment(scale, distributed systems, tools, deployment, etc.)?

Other aspects: your turn to ask questions

Page 21: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● You are also evaluated on the questions you ask.● Demonstrate insights, passion, and critical thinking

○ I’m interested in learning X. Did you come to this company with a background in X already, or are there opportunities to learn it?

○ How do you overcome problem Y given your environment(scale, distributed systems, tools, deployment, etc.)?

● Do you want to work there?○ Can you imagine getting along with your interviewers?○ Questions to ask:

■ Is there opportunity for advancement and movement between projects?■ How much time do you spend in meetings per week, coding per day, etc.? ■ What is the ratio of developers to testers to product managers?

Other aspects: your turn to ask questions

Page 22: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● You got the job, yay!○ Negotiate, it’s expected.○ Make reasonable and justified demands.○ Remember: a lot of money to you is peanuts to them.

● Or you didn’t○ Don’t take it personally, the false-negative rate is really high.○ Reflect on the experience and prepare for the next interview.○ Companies encourage you to “try again and again”.

Did you get the job?

Page 23: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● Cracking the Coding Interview (Gayle Laakmann)● Programming Interviews Exposed (Mongan, Giguere, and Kindler)● Elements of Programming Interviews (Aziz, Prakash, and Lee)● Don’t Call Yourself a Programmer (Blog post, Patrick McKenzie).● How to Get a Job at Google (NYT, Thomas L. Friedman).● UW CSE Recruiting Policy for Employers (UW CSE).

Resources

Page 24: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● Technical questions do not test the most import software engineering skills, but they show up on interviews anyway. Why?

● What are advantages of coding interviews?

● What are disadvantages of coding interviews?

Discussion

Page 25: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

Wrapping up a challenging quarter

Page 26: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● Compare your skills today to a quarter ago…○ Bottom line: Your project would be (much) easier for you.○ This is a measure of how much you have learned.

● Your next project can be more ambitious○ Building interesting systems is never easy (like all worthwhile endeavors).○ Practice is a good teacher.○ Requires thoughtful introspection -- don’t learn only by trial and error!

What you have learned in CSE 403

Page 27: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

Please complete the course evaluation form online:https://uw.iasystem.org/survey/225417

● Useful to future students● Useful to course staff● Useful to the department

Course evaluation

Page 28: Spring 2020 Software Engineering Interviewing and Wrap up ...rjust/courses/2020Spring/CSE403… · 1. Recruiter/resume screen 2. Preliminary interview(s) Non-technical and/or technical

● System building is fun○ It’s even more fun when building them successfully.

● Be an engineer and solve problems○ Don’t call yourself a programmer.○ Don’t be defined by a technology stack.

● Continue to learn○ Use the techniques and tools of CSE 403 effectively.○ Build, reflect, refine, and repeat.

Go forth and conquer