Intro

Class Rules

  1. Please mute yourself in class
  2. During the class, I'll pause for Q&A. You can type in chat or unmute for your questions.
  3. Please change your name in go to meeting. 
  4. Please check your drive for slides

Who am I?

  • Work in FAANG
  • 10+ years of engineering experience 
  • Participated more than 100+ interviews (coding, design, behavior...)

Who are you?

  1. Undergraudate
  2. Graduate
  3. Junior engineers (<2yrs)
  4. Experienced engineers (> 2 yrs)
  5. 转专业

Hiring Process

  • JD Post
  • Resume screening
  • Recruiter reach-out and phone interview
  • Technical phone screening (1 ~ 2)
    • sometimes replaced by OA
  • On-site Interviews (4-6)
  • Offer
  • HM sell and offer signing

General Hiring vs Team Hiring

General hiring 

  • Interviewers can be from unrelated teams
  • Looking for candidates with excellent skills
  • Team match after offer
  • e.g. Google, Meta/FB

Team hiring

  • Interviewers are from the team you will be joining
  • Hiring manager interview
  • Looking for candidates that fit
  • e.g. Amazon, Apple

 

Job Application

  • Refine your resume
  • Write cover letter
  • Seek Internal Referral
    • referral needs to be submitted before you apply for the job
    • friends, colleagues, alumni...
    • tradeoff: referral vs apply earlier
  • Don't stick to a particular position

Resume Tips

  • Adjust your resume
    • specific to the company
    • specific to the position
  • Be concise and specific
  • Less is more
  • Be authentic

Q&A

OA

  • Do not copy paste!

Recruiter Phone Interview

  • Self introduction
    • Avoid to be too technical, assuming recruiter does not understand technical details
    • Give them opportunities to ask questions 
  • Past experience, projects etc.
  • Sometimes, recruiter can ask screening questions 
    • Fundamental Questions about Computer Science
      • "what's the runtime complexity for quick sort?..."
    • Behavior questions
      • "can you tell me a time... "

Basic CS Questions

Programing

  • Algorithm: Time/Space Complexity, Sorting, Searching, DP...
  • Data structure: HashMap, Stack, Queue...

Operating System

  • Processes/threads management, Scheduling and Concurrency

  • Virtual Memory, mutex, Semaphore

  • Networking, Distributed System

  • ...

Database

  • ACID
  • SQL vs NoSQL

Technical Phone Screen Interview

  • Self Introduction
  • Project experience, fundamental CS questions 
  • Online coding questions (2-3)
  • Opportunity to ask interviewer questions

Some Coding Tips

  • Clarify questions
  • Language Choice
    • Unless specified, use the language you are mostly familiar with
    • For BE positions, commonly used: Java, C++, Python
  • Practice typing / coding speed
  • Use simple variable / function names
  • Write test cases

Some Coding Tips

  • Be idiomatic
ls = list()
for element in range(10):
  if not(element % 2):
    ls.append(element)
# We may also employ a lambda function
ls = list(filter(lambda element: not(element % 2), range(10)))

What's a better way to write this in Python?

Some Coding Tips

  • Be idiomatic
ls = list()
for element in range(10):
  if not(element % 2):
    ls.append(element)
# We may also employ a lambda function
ls = list(filter(lambda element: not(element % 2), range(10)))
ls = [element for element in range(10) if not(element % 2)]

Some Coding Tips

  • Be concise and straightforward
    • we will be using Java in this class
List<Person> filtered = new ArrayList<>();
for (Person p : people) {
	if (p.age() < 19) {
    	filtered.add(p);
    }
}
return filtered

What's a better way to write this?

Some Coding Tips

  • Be concise and straightforward
    • we will be using Java in this class
List<Person> filtered = new ArrayList<>();
for (Person p : people) {
	if (p.age() < 19) {
    	filtered.add(p);
    }
}
return filtered
return people.filter(p -> p.age() < 19).collect(toList());

How to get familiar with languages?

  • Read
  • Write
  • Don't stop at a working solution

 

Coding Prep

Coding Prep

Q&A

On-Site Interview

  • Coding / algorithms (Whiteboard)
  • System design
  • Technical communication / behavior
  • Hiring manager interview

System Design

  • Cheatsheet: https://gist.github.com/vasanthk/485d1c25737e8e72759f

System design tips

  • Think interviewer as your colleague and you are working out a problem together
    • Clarify - understand the question
    • Callback
    • Start with high-level, then dive into details
  • Learn how to draw architecture diagrams
  • Key differentiator: communication

Interview Prep

  • Mock interview
    • Pair up
  • 以赛代练

Q&A

Behavior

  • Understand company culture
    • e.g. https://jobs.netflix.com/culture
  • https://www.amazon.jobs/content/en/our-workplace/leadership-principles
    • prepare 1-2 examples each 

Communication

  • Understand what interviewer is looking for
  • Be clear
  • Be concise
  • Don't be chatty
  • Think out loud
  • Use examples

面试心态

复盘 & 总结

复盘最好在面试结束后的当晚完成,整理每一轮的面试细节,找 出自己的不足,并且找到最优答案

  • 知识点查缺补漏
  • 心态调整

Interview Results

Do follow up with recruiters after the interview, but don't be too often. It usually takes 1-2 weeks to deliver results.

  • Offer
    • Review
    • Negotiate
    • May meet hiring manager
  • Reject
    • If you don't hear anything after 2+ weeks...
    • Ask for feedback (most companies do not share)
    • Follow up with recruiters to see if there are any other opportunities
    • Move on

Q&A

Syllabus

  • Introduction
  • Recursion
  • BFS & DFS
  • DP
  • Tree, Trie
  • Stack, Queue
  • Heap

 

  • Hashmap
  • Sorting
  • Graph
  • Union Find
  • Bit Manipulation
  • Design
  • Final

直通硅谷

  • Resume Suggestion
  • Mock Interview
  • Project Suggestion
  • Tech Company Interview Tips
  • Career Path Suggestion
  • Internal Referral

What students should do

  • Classes
  • Homework
  • Shouldn't memorize solutions, try to categorize

Class Schedule

  • Every Friday/Saturday 18:30 - 20:30 PST

How to contact us

 

  • Class Teacher:tom.liu@zhitongguigu.com
  • Teaching Assistant:mick.ouyang@zhitongguigu.com