The technology giant Google uses a wide variety of programming languages to create its various software stacks. However, some of the most common ones include Python, C++, and Java.
The company uses these languages for both its back-end and front-end operations. If you’re preparing for an interview at Google, knowing at least one of these languages will help you succeed.
In 1996, Larry Page and Sergey Brin created a search engine called Backrub that ranked websites based on their backlinks. This was the precursor to Google.
In 1998, they renamed it to Google (the name is a misspelling of the mathematical term googol, a one followed by 100 zeros). It reflects their goal of organizing a seemingly infinite amount of information on the Internet.
Page and Brin started working on the search engine from their dormitory room at Stanford University in California. It began indexing 75 million pages within a few months and soon became too heavy on Stanford’s servers to run.
The Hummingbird algorithm update was released on Google’s 15th anniversary in 2013 and is the largest change to Google’s search engine since the Caffeine Algorithm in 2010. According to Google, this algorithm aims to interpret complex queries more accurately, offering suitable documents that better match the actual intention behind a specific search query.
This is done by mastering semantic search, which allows Google to parse intent and understand the relationship between real-world entities. Think of a user searching for the best place for Chinese food.
Google is also implementing a natural language query system, which means that they remember the context of conversational queries in order to provide relevant results. This is an important step towards a more conversational approach to search.
Bigtable is Google’s distributed database system for managing structured data. It was developed to meet the scalability needs of many projects, including Google Web indexing and Google Earth.
Unlike relational databases, Bigtable stores data in a sparse multi-dimensional map indexed by row and column key. This allows for rapid lookups by combining the latest version of data in each cell with timestamps to control access.
A Bigtable instance contains one or more clusters, which are organized into nodes that process client requests. All requests go through a front-end server before they reach a specific node.
Each cluster is composed of a master server and tablet servers that process read/write requirments. The master keeps track of tablets and splits or merges them according to their sizes. The master also uses a Chubby lock service to avoid concurrent conflict operations.
Protocol Buffers is Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. Once you define how you want your data to be structured, you can use special generated source code to write and read it to and from a variety of data streams and languages.
Protocol Buffers is a very efficient way to encode data before it’s forwarded, because it shrinks data blocks before sending them over the wire, saving time and bandwidth. It also works well with request/response protocols because it spares the overhead of marshaling messages, which can be a hassle in older formats.
SSTable, also known as a Sorted String Table, is a file format used by Cassandra and other NoSQL databases to take the in-memory data stored in memtables and order it for fast access. SSTable files are immutable, meaning they’re never changed after they’ve been written.
The SSTable implementation partitions the data into blocks, keeping an index of which keys reside in which data blocks. This allows reads to use the index block and only make directed disk reads for the data that they need.
The SSTable file format is based on a Log-Structured Merge (LSM) tree data structure, which is more efficient for write-heavy, fast growing large data sets than a traditional B-tree format. It also supports a number of compaction strategies, including TimeWindowCompactionStrategy and Incremental Compaction Strategy (ICS).