2 views

Uploaded by Aneesh

How to get a job at google

- 5.Sorting
- Solutions of RDBMS
- lec1
- 08 PF#8 GT Layout
- A Performance Study of Some Sophisticated Partitioning Algorithms
- Enhanced Widgets for EDA Applications
- Data Structures
- Lab 1
- Lesson2-5DistributedMemorySorting.pdf
- Data Structures and File Processing
- Algorithms
- Two Mark Question Bank
- Introduction to Programming and Problem-solving Using Scala, Second Edition
- Optimal Parallel Merging and Sorting Algorithms
- Codechef Syllabus
- key exachange
- A New Trace Backing Algorithm and Circular List Join for Maximizing Streaming Data Join
- Beginning Java - Unit 6 Arrays - Binary Search
- HMM
- C++ Programs for Computer Science Students

You are on page 1of 2

was hired without even knowing SQL. Here's an excerpt from an email I still have from

interviewing at Google where they describe their expectations for new hires. This is sort of

more interview-focused but I think it's a pretty great list.

---- [begin excerpt] ----

Algorithm Complexity: You need to know Big-O. If you struggle with basic big-O

complexity analysis, then you are almost guaranteed not to get hired.

Sorting: Know how to sort. Don't do bubble-sort. You should know the details of at least

one n*log(n) sorting algorithm, preferably two (say, quicksort and merge sort). Merge sort can

be highly useful in situations where quicksort is impractical, so take a look at it.

Hashtables: Arguably the single most important data structure known to mankind. You

absolutely should know how they work. Be able to implement one using only arrays in your

favorite language, in about the space of one interview.

Trees: Know about trees; basic tree construction, traversal and manipulation algorithms.

Familiarise yourself with binary trees, n-ary trees, and trie-trees. Be familiar with at least one

type of balanced binary tree, whether it's ared/black tree, a splay tree or an AVL tree, and know

how it's implemented. Understand tree traversal algorithms: BFS and DFS, and know the

difference between inorder, postorder and preorder.

Graphs: Graphs are really important at Google. There are 3 basic ways to represent a

graph in memory (objects and pointers, matrix, and adjacency list); familiarize yourself with

each representation and its pros & cons. You should know the basic graph traversal algorithms:

breadth-first search and depth-first search. Know their computational complexity, their

tradeoffs, and how to implement them in real code. If you get a chance, try to study up on

fancier algorithms, such as Dijkstra and A*.

Other data structures: You should study up on as many other data structures and

algorithms as possible. You should especially know about the most famous classes of NPcomplete problems, such as traveling salesman and the knapsack problem, and be able to

recognize them when an interviewer asks you them in disguise. Find out what NP-complete

means.

Mathematics: Some interviewers ask basic discrete math questions. This is more

prevalent at Google than at other companies because we are surrounded by counting

problems, probability problems, and other Discrete Math 101 situations. Spend some time

before the interview refreshing your memory on (or teaching yourself) the essentials of

combinatorics and probability. You should be familiar with n-choose-k problems and their ilk

the more the better.

Operating Systems: Know about processes, threads and concurrency issues. Know about

locks and mutexes and semaphores and monitors and how they work. Know about deadlock

and livelock and how to avoid them. Know what resources a processes needs, and a thread

needs, and how context switching works, and how it's initiated by the operating system and

underlying hardware. Know a little about scheduling. The world is rapidly moving towards

multi-core, so know the fundamentals of "modern" concurrency constructs.

Coding: You should know at least one programming language really well, and it should

preferably be C, C++ or Java. C# is OK too, since it's pretty similar to Java. You will be expected

to write some code in at least some of your interviews. You will be expected to know a fair

amount of detail about your favorite programming language.

There were some other things that I felt like I was sort of expected to know that aren't

mentioned above.

String algorithms, like Rabin-Karp substring search and the whole battery of algorithms

that comes along with suffix trees (e.g., what's the longest palindromic substring?).

You shouldn't even slightly flinch at the prospect of writing a recursive function. It may

or may not actually come up, but if you find yourself with a problem most naturally solved

recursively and you can't figure out the recursion, you're screwed, at least at Google/Facebook.

Mathematical tricks (e.g., choose uniformly random element from list without knowing

its length; compute nth Fibonacci number in logarithmic time using matrix exponentiation,

etc.).

The most annoying of all interview questions, IMHO: disguised binary search. This is

annoying because it can be infuriating even for someone really good at programming to hit all

the base cases correctly with no off-by-one errors. Example: you have an arithmetic sequence,

but a single number is missing (but it's neither the first nor last element of the sequence,

obviously). Find the missing number. This can be done with binary search, but it's a bitch.

Bloom filters.

Regular expressions (be able to actually implement a pattern matcher for very simple

regexes).

Object-oriented design.

Test-driven development.

Unix (e.g., are you proficient in a terminal, can you find the most common email in a log

file with a one-liner, etc. -- the standards seemed pretty low for this one and I got the feeling

most places just want to know you're not completely ignorant of things like grep).

Scaling the above algorithms to the point where their memory constraints are violated

(e.g., sorting a list too big to contain in memory; finding the most common character in a string

too big to contain in memory; etc.).

- 5.SortingUploaded bySanathVsjs
- Solutions of RDBMSUploaded byAkshay Mehta
- lec1Uploaded bynk2612
- 08 PF#8 GT LayoutUploaded byHendriik Viicarlo
- A Performance Study of Some Sophisticated Partitioning AlgorithmsUploaded byEditor IJACSA
- Enhanced Widgets for EDA ApplicationsUploaded byKhaled Yasser
- Data StructuresUploaded byAkshay Shinde
- Lab 1Uploaded byJorge Berumen
- Lesson2-5DistributedMemorySorting.pdfUploaded byProjectlouis
- Data Structures and File ProcessingUploaded byapi-3820001
- AlgorithmsUploaded byYogesh Giri
- Two Mark Question BankUploaded byNavis Nayagam
- Introduction to Programming and Problem-solving Using Scala, Second EditionUploaded byju_ma_su
- Optimal Parallel Merging and Sorting AlgorithmsUploaded byRaj Kumar Yadav
- Codechef SyllabusUploaded byArkadeepta Roy
- key exachangeUploaded byVishakha Kirnake
- A New Trace Backing Algorithm and Circular List Join for Maximizing Streaming Data JoinUploaded byLewis Torres
- Beginning Java - Unit 6 Arrays - Binary SearchUploaded byhancha
- HMMUploaded bypostscript
- C++ Programs for Computer Science StudentsUploaded byTanay Mondal
- th 2.docxUploaded bybhatiaharryjassi
- MSC-021 Block-1.pdfUploaded bySaanidh
- Ch-3Uploaded bymenber
- Thm14 - Parallel PrefixUploaded byKimin Kim
- A Taxonomy of Suffix Array Construction AlgorithmsUploaded byNilim Sarma
- Advanced data structures and data alghoritmsUploaded byProfil Prvi
- F3Uploaded byajay.a
- MIT15_097S12_lec08.pdfUploaded byMarian
- CS 255 Number Theory Fact SheetUploaded bytony1337
- IJCAI09-290Uploaded byManjari Maran

- Major Steps and Approvals to Be Taken Before Initiating Actual Tendering ProcessUploaded byRajat Srivastav
- China as a Leader of the World EconomyUploaded bym_hasam
- Contracts Legal Sheet Cheat Sheet 2Uploaded byTitus
- Acceptance Sampling PowerpointUploaded byshafie_buang
- Equity Valuation of RCLUploaded bykhushburaj07
- Friedman's Test with multiple comparisons tutorialUploaded byabarmas
- Bayer Investor Presentation Monsanto Acquisition Update June 2018 FinalUploaded byJosefina
- GREEN ProcurementUploaded bymutaikc
- IEER OutlineUploaded bygabinuang2
- Fixed Mobile Convergence 2.0 Design GuideUploaded bymehrdad.mortazavi2405
- Kidd v PearsonUploaded byGina Maria
- INFORMATION TECHNOLOGY AND MSMEs – DRIVING INDIA’S GROWTH AHEADUploaded byRM Sudhakar
- QWebUploaded byHarsh Jain
- UOP 99-07 Pentane-Insoluble Matter in Petroleum Oils Using a Membrane FilterUploaded byMorteza Sepehran
- Guidelines for Pile Foundation Report PreparationUploaded byMuhammad Azuan Tukiar
- Kale Eswar AnUploaded bySathiaram Ram
- 12th Computer Question Paper 2017.docxUploaded byvelmurugan_j
- 202 - nortelUploaded byAnonymous Cx5zpf8
- 10 Research ProposalUploaded bybhar4tp
- english_guide_book20101014Uploaded bygeomike
- Stoxx Strategy GuideUploaded byBrian Connolly
- AR800V v3.0 User ManualUploaded byNiraj Vyas
- NoneUploaded byVictor Timofte
- V Loc Wound Closure Devices Product CatalogUploaded bymihalcea alin
- FreePress: 6-28-2013Uploaded byChampion Newspaper
- LANTIME-SCADA-FREQMONUploaded byfengyundiyidao
- C++Lang chap8Uploaded bysamaan
- Emotions & AttitudeUploaded byShraddha Shrivastava
- 200399183-TD-57-v30-03.pdfUploaded byAndrei Korotki
- Fiocchetti Mnl013 (Ectf-control-dmlp Monitor) 2007-09Uploaded byGary Kenmore