CSE 373 Section 9
Interview Prep
Special thanks to Kimberly Nguyen and CSE 492J, whose slides we’ve copied and butchered completely.
Today's Agenda
Announcements
Anonymous Optional Survey
We would greatly appreciate if you could give us some feedback on how section went for you this quarter!
Short survey:
https://forms.gle/TatD7qriA5MhL9dX8
Introduction to Recruiting and When to Apply
The Recruiting Process (specifically SWE* Positions)
*SWE = software engineering
A month by month plan for recruitment season
A month by month plan for recruitment season
A big NOTE about this timeline!
DO NOT lose hope if you don’t get an offer in Fall.��Many companies will still be recruiting in Winter (and even Spring) quarter. Work those connections (including the TA talking to you right now), keep applying to job boards, and hang in there!
The requirements to getting the interview!
Crafting Your Resume- Key Points
The Realities of being a Non-CS/CSE Major applying for CS Roles
The recruitment process is challenging for everyone but will be challenging in a very different way for a non-CS/CSE major applying to these roles! Be prepared for rejection but also just be prepared, period.
The Realities of being a Non-CS/CSE Major applying for CS Roles
But how do I get “experience”?
Warnings for International Students
Resources
**The information provided in this MT is courtesy of Kimberly Nguyen
The Behavioral Interview
When will you be asked behavioral questions?
In first round screens with recruiters, questions are usually exclusively behavioral.
Technical interviews with engineers are usually kicked off by 1 – 2 behavioral questions.
Why it matters
Interviewers want to know how you behaved in a real-world situation.
Interviewers want to understand the measurable value you added to that situation.
Interviewers are trying to learn how you define something like, “pressure at work” and if that aligns with their team’s perspective.
Common themes for questions
Prepare
Articulate: The STAR Method
Pro Tips
Be as open and honest as possible with your answers. As you review possible stories, remove any where you can’t quite remember all the key details or those that make your uncomfortable to tell.
You need to practice your interview responses aloud. In the mirror to yourself or better yet, with a friend so you can get feedback.
Keep your initial answers to under two minutes. Don’t worry, if don’t cover everything your interviewer wanted to know, they will probably ask a follow up question about it.
2 most important questions
Who are you?
What are your interests? Goals?
Why are you interested in this position?
This should be 30 – 60 seconds
At any given time, you should have at least 1 (if not 2) well crafted pitches ready to go for your most significant coding projects. Pick your biggest or most technically interesting project(s). It’s okay to talk about school projects.
Project Discussion Example
"I spent this summer working at an advertising network, specifically trying to drive engagement on our video ads by A/B testing new ad content and formats. I worked primarily in the backend and used Python and R for data analysis. I produced an 8% improvement in click-through rates across the board over six weeks of testing."
Follow up questions:
How long did you work on this project?
How big was the team working on this, what was your role specifically?
Why did you choose that technology stack?
What was the biggest bug you encountered and how did you fix it?
If you redid the project what would you do differently?
End with your own questions for the interviewer
What is your favorite part about working for X?
What keeps you excited and motivated to show up to work every day?
Reflect on your values and come up with some non-aggressive questions you can ask.
Large tech companies can sometimes have a reputation for being ultra competitive. Do you have any perspective or advice for a young, hungry new grad that cares about work but also cares about life outside work?
Covid-19 has brought to light how important it is to work for an employer that takes are of its people. How did X make you feel safe and valued during the situation?
Growth has always been something that is very important to me. How has company X supported your growth both personally and technically?
Did I pass the interview?
How much do you make?
The Technical Interview
Why technical interviews suck
Why technical interviews suck
But every company does them….so you gotta play the game.
The Typical Interview Process
Application
Coding Challenge
Online/Phone Interview(s)
Onsite Interview(s)
Typical Technical Interview Structure
Be nice, be polite, be confident.
Firm handshakes never hurt!
(Or elbow bumps?)
2. Project Discussion
Have 1 or 2 project(s) that you feel confident talking about in front of people who know what’s up.
3. The Actual Coding Part
Be patient, we’ll get here ;)
4. Your Questions
Yeah I was also surprised that this part actually matters.
Prepare some questions before you go in, and make sure to ACTUALLY listen to their answers.��Tip: If you don’t ask any questions, you look really bad. Have at least some prepared before you go in.
CEAOW-IT!
CEAOW IT
Practice question!
Given a number n, print n-th Fibonacci Number.
2. Example
Once your interviewer has clarified this super vague question, you should be able to produce a few example inputs and outputs.��
Keep these examples handy! We’ll also use them when we get to T (Test)!
Edge Case 1:
n = 0; Fib = None
Output = 0
Edge Case 2:
n = 1; Fib = 1
Output = 1
Middle Case 1:
n = 2; Fib = 1, 1
Output = 1
Middle Case 2:
n = 9; Fib = 1, 1, 2, 3, 5, 8, 13, 21, 34
Output = 34
3. Approach: Brute Force
SLOW DOWN. Again, SLOW DOWN.
Before you start writing code, try to think of any solution to the problem, even one that’s super slow and terrible.
This is good because even if you can only come up with the crappy, slow solution to the problem, you at least have something written down.
If you’re running out of time, make sure you always code down something, even if it’s not optimal.
(Your TAs have passed interviews by remembering this).
Example:
We can loop through the array, and for each index, we sum up the integers before it and set its corresponding index in the output array.
3. Approach: Brute Force
Problem: Given a number n, print n-th Fibonacci Number.
Example Brute Force Solution:
3. Approach: Brute Force
Problem: Given a number n, print n-th Fibonacci Number.
public static int fib(int n) {
if (n <= 1) {
return n;
}
return fib(n-1) + fib(n-2);
}
4. Optimize
Turn your crappy brute-force solution into something better!
Make sure that you talk out loud as you think (this is a good rule in general). �
Interviewers do not like it when you sit silent for too long and just mull. Remember, they’re evaluating your thought process: so make it super clear.��As you do more Leetcode/practice problems, you will get better and better at this. Practice practice!
4. Optimize
Our Problem:
We’re recalculating values!
For example: to find fib(4), our recursive method calculates the values of fib(3) and fib(2). But to find fib(3), we need the value of fib(2)! Thus, our method ends up calculating fib(2) twice!
Solution:
What if we stored the value of every result we calculate, and then use that result when calculating the result for larger numbers…��
4. Optimize
Problem: Given a number n, print n-th Fibonacci Number.
public int fib(int n) {
int f[] = new int[n+1];
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= n; i++) {
f[i] = f[i-1] + f[i-2];
}
return f[n];
}
Storing results in an array allows us to access them in O(1) time!
This approach is known as
Dynamic Programming
5. Walk Through
At this point, you should have a clear idea of what you’re going to do.
Explain your planned algorithm to your interviewer at a high level. If you can, explain your approach as comments in English on the whiteboard/codepad
If you’ve been doing a good job of thinking out loud, then this should be really just a quick recap of what you’ve said so far.
47
6. Implement
Time to actually write code.�
Writing code on a whiteboard is hard. You won’t have an IDE reminding you of syntax, and you’ve probably never done it before.
So practice this often.�
Don’t fret tiny details of Java or other languages- but correct that if you have the time.
48
6. Implement
49
static int fib(int n) {
int a = 0, b = 1, c;
if (n == 0)
return a;
for (int i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return b;
}
Updated Optimization: Since the current fibonacci value is the sum of the last two values, we only need to store the last two calculated values instead of storing a whole array!
7. Test
Test with Middle Case 2:
n = 9
Fib = 1, 1, 2, 3, 5, 8, 13, 21, 34
Resulting variable values after for loop ends:
a = 21, b = 34, c = 34
Return b = 34
50
Want another CEAOW-IT Example?��Check out Problem 1 on the Handout.
Other Non-Major CSE courses to check out!
Optional: CEAOW-IT Yourself!
Pair Practice
Pair Practice