剑知北美生活快报   版面列表   admin登录
JiansNet Logo


Guide for Amazon Software Development Engineer Interview

by JC, published: 2012-03-10 09:58 viewed: 2054 times
想了解更多的美国生活窍门?请订阅: JC写的剑知北美生活快报。
The following is a guide put together by recruiter for how to prepare for Amazon interview. It indicates what types of computer science knowledge are expected to get a job at Amazon.

Preparing for Your Interview

At Amazon.com we're looking for talented engineers that can apply the knowledge that they've learned in school and in industry to solving some of the world's most complicated software problems. As such, our interviews are mainly focused on how well you can use your acquired knowledge to solve real world (or in some cases not so real world) problems. Below is a list of broad areas that we expect people to be familiar with. It's certainly not required that you memorize all of the information outlined below, but this should serve as a helpful reference guide for the types of things you might want to brush up on before interviewing with Amazon.com.

Programming Languages

We do not require that you know any specific language before interviewing for a technical position at Amazon.com, but familiarity with a prominent object oriented language is generally a prerequisite for success. Not only should you be familiar with the syntax of a language like C++, Java, or C#, you should also know some of the language nuances such as how memory management works, what some of the most commonly used collections or libraries are, etc. You should be able to compare languages and talk about the tradeoffs between using language X vs. language Y.

Additionally, it's considered a plus to be familiar with some scripting language such as perl, ruby, awk, etc. It's also nice to know the basics of regular expression as they are now a mainstay in both the object oriented and scripting worlds.

Data Structures

Most of the work we do involves storing and providing access to data in efficient ways. This necessitates a very strong background in standard data structures. You should know what each of these data structures is and how they're implemented; what their runtimes are for common operations; and under what circumstances it would be beneficial to use one. The below are in
no particular order.

Array
Linked List
Tree (Tree, Binary Tree, Binary Search Tree, Red-Black Tree, etc.)
Heap
Hash Table
Stack
Queue
Trie
Graph (both directed and undirected)
Algorithms

It's also important to know efficient ways manipulate data. One great way of doing this is brushing up on some common algorithms. We'll expect that you can apply and discuss the tradeoffs between some commonly used algorithms.

Sorting
Bubble Sort
Merge Sort
Quick Sort
Radix/Bucket Sort
Traversals (On multiple data structures)
Depth First Search
Breadth First Search

Coding

Expect to be asked to code syntactically correct code – no pseudo code. If you're a bit rusty coding without an IDE or coding in a specific language, it's probably a good idea to dust off the cobwebs and get comfortable coding with pen and paper. The most important thing a software engineer does at Amazon.com is write scalable, stable, robust, and well tested code. These are going to be the main criteria by which your code will be evaluated, so make sure that you check for edge cases and common error inputs as well as the "happy paths" through the code.

Object Oriented Design

Good design is paramount to extensible, bug free, and long living code. It's possible to solve a software problem in an almost limitless number of ways, but when software needs to be robust and extensible, it's important to know some common techniques that help with this. Using object oriented design best practices is one way to build lasting software. You should have a
working knowledge of a few common and useful design patterns (singleton, factory, adapter, bridge, visitor, command, proxy, observer, etc.) as well as know how to write software in an object oriented way with appropriate use of inheritance and aggregation.

Databases

Most of the software that we write is backed by a database somewhere. A lot of the challenges we face come in to play when interfacing with existing data models and when designing new data models. You should know the basics of how relational databases work, how to design relational database schemas, as well as how to write basic SQL queries against a database.

Distributed Computing

Our systems at Amazon.com usually have to work under very strict tolerances at high load. While we have some internal tools that help us with scaling it's important to have an understanding of a few basic distributed computing concepts. Having an understanding of topics such as map-reduce, service oriented architectures, distributed caching, load balancing, etc. will help you in formulating answers to some of the more complicated distributed architecture questions you might encounter.

Internet Topics

This is Amazon.com, we're an online company and we expect our engineers to be familiar with, at least, the basics of how the internet works. You might want to brush up on how internet browsers do what they do, DNS lookups, what TCP/IP and HTTP are, sockets, etc. We're not looking for network engineering types of qualifications, but a solid understanding of the fundamentals of how the web works is a requirement.

Operating Systems

You won't need to know how to build your own operating system, but you should be familiar with some OS topics that can affect code performance, such as memory management, processes, threads, synchronization, paging, multi-threading, deadlocks (causes, detection, avoidance).

Lastly, to prepare for job interviews at Amazon, you may check out these Best Computer Science Interview Books.
本文版权属于美国剑知信息网。如需转载,请先同我们联系。
订阅JC写的剑知北美生活快报,您会了解到更多的美国生活窍门。
Related Articles:
• Best Computer Science Interview Books
• Some Amazon Interview Questions
• Interesting Info on Job, Salary and Work at Amazon
美国职业发展 | 返回顶部 | 返回首页
About Us | Advertise with Us | Privacy Policy
Copyright © 2007-2016, All Rights Reserved.