# Amazon Support Engineer Interview Questions

Amazon is one of the leading online retail companies in the world. It’s not just the size of the company but also the latest technology it uses. It provides jobs to thousands of people every year. One of them is the support engineer, which plays an important role in helping the company use the latest technology without any technical difficulties. Every year Amazon tries to fill the vacant post of support engineer with the help of interview and written exam.

Written exam constitutes of basic of behavioral studies. For the face-to-face interview, you need to prepare thoroughly. The interview can be a bit difficult if you don’t have much basic and in-depth knowledge of engineering. You can pray to get hit by some of the easy questions but not always does the fortune favors the brave. So, you need to prepare for the interview with the toughest in mind. Here, we have comprised a list of questions to help you prepare for the interview for the post of Support engineer at Amazon.

## Best Amazon Support Engineer Interview Questions

Below are the list of Best Amazon Support Engineer Interview Questions and Answers

The STP also stands for Spanning Tree Protocol constructs a loop-free logical topography for Ethernet networks. It is a network protocol. Preventing bridge loops along with the broadcast radiation that results from them are the primary functions. If an active link fails, spanning tree consequently allows a network design to include backup links so that it could provide fault tolerance.

As denoted, STP creates a kind of spanning tree within a network of connected layer-2 bridges, along with disabling those links that which doesn’t form part of the spanning tree, leaving a single active path between any two network nodes. Radia Perlman invented the algorithm on which STP is based. At that time she was working for Digital Equipment Corporation.

A prime number is a whole number greater than 1, which is only divisible by 1 and itself.

```// function check whether a number
// is prime or not
bool isPrime(int n)
{
// Corner case
if (n <= 1)
return false;

// Check from 2 to n-1
for (int i = 2; i < n; i++)
if (n % i == 0)
return false;

return true;
}

```

A regular expression to validate phone number in XXX-XXX-XXXX format is follows:

/^(?:\(\d{3}\)|\d{3}-)\d{3}-\d{4}\$/

The du command shows the disk space used by the directory or file.

A tree is a no cycle, connected undirected graph. It would be a spanning tree of a graph G if it includes every vertex of G or spans G. It would be a subgraph of G if every edge present in the tree belongs to G. A spanning tree of a connected graph G can also be defined as a maximal set of edges of G which actually contains no cycle, or it could be the minimal set of edges that would connect all vertices. Technically, a graph, which is not connected, will never contain a spanning tree but possible to have several spanning trees.

The computer file hosts can be defined as an operating system file that directs hostnames to IP addresses. The host file is a plain text file. The host file has several system facilities, being one of them to assist in addressing network nodes in a computer network. An operating system’s Internet Protocol (IP) implementation has a host file as its common part. It also serves the function of converting human-friendly hostnames into some numeric protocol addresses, called IP addresses, which identifies and locates a host in an IP network.

DNS stands for Domain Name System, which is primarily used as the medium to convert domain names to their respective IP addresses whenever a client initiates a request query. DNS also stores the database of all the available domain names and their IP addresses, which happens to be registered on the network.

Likewise, in the working of DNS when we type out the website name in the browser, it would send a request to the DNS server. Moreover, if the website domain name has got registered in the database with the DNS, then it would respond with the IP address of the website which is being tried to get accessed and would be something like 53.294.214.67

A function that will find all permutations of a given string is as follows:

```public static Set permutationFinder(String str) {
Set perm = new HashSet();
if (str == null) {
return null;
} else if (str.length() == 0) {
return perm;
}
char initial = str.charAt(0); // first character
String rem = str.substring(1); // Full string without first character
Set words = permutationFinder(rem);
for (String strNew : words) {
for (int i = 0;i<=strNew.length();i++){
}
}
return perm;
}

public static String charInsert(String str, char c, int j) {
String begin = str.substring(0, j);
String end = str.substring(j);
return begin + c + end;
}

```

Big O notation is built to embody functions according to their respective growth rates. For example, different functions but with the same actual growth using the same O notation might represent rate.

The letter O is significantly used because the order of the function is also referred to as the growth rate of a function. An explanation of a function regarding big O notation would usually just provide an upper bound on the growth rate of that function.

Virtual hosting is one of the methods by which they host multiple domain names along with the separate handling of each name ultimately on a single server or pool of servers. The respective process would then allow one server to share its resources like memory, processor cycles, etc., without actually having to require all services which are provided so that to use that same hostname. The term virtual hosting is widely used to mainly refer to web servers. Moreover, shared web hosting would be an extensively used application.

It is a commonly followed practice for a single entity to desire to use multiple names on the very same machine. Doing so, the names would reflect services offered and ultimately not where those services are to be hosted.

 Stack Queue It follows the principle of LIFO (last in first out). It follows the principle of FIFO (first in first out). It performs the operation of push and pop. It performs the operation of Enqueue and dequeue. The implementation is simpler here. The implementation is comparatively complex. Stack does not consist of variants. Queue contains variants like priority queue etc.

The simple O(n) algorithm to find the Least Common Ancestor of n1 and n2 is as follows.

• Calculate the path from the root to n1 and store it in a vector or array.
• Calculate the path from the root to n2 and store it in another vector or array.
• Traverse both paths till the values in arrays are the same. Return the common element just before the mismatch which one is the least common ancestor of given two nodes in a tree.

The JAVA program to find all substrings of a string:

``` import java.util.Scanner;
class SubstringsOfAString
{
public static void main(String args[])
{
String string, sub;
int i, c, length;
Scanner in = new Scanner(System.in);
System.out.println("Enter a string to print it's all substrings");
string  = in.nextLine();
length = string.length();
System.out.println("Substrings of \""+string+"\" are :-");
for( c = 0 ; c < length ; c++ )
{
for( i = 1 ; i <= length - c ; i++ )
{
sub = string.substring(c, c+i);
System.out.println(sub);
}
}
}
}
```
 TCP UDP It connects the computers before even transmitting the data. It does the work of sending data directly to the destination computer without checking the status of the system. Its speed is comparatively slower. Its speed is comparatively faster. It is technically connection oriented. It does not need a connection, being connectionless.

Power on being the first step of the process is the power-on step. The user would typically initiate this step. The second step after execution of the ROM routines, the system executes a Power-On Self Test (POST) routine. This process ensures the operational status of all hardware.

In the next step the system checks for an active device in the boot device list, which would be starting at the top. In this step after ensuring the hardware is functional and loading the BIOS, the computer proceeds would then load the operating system into its memory.
Now, the boot process takes control over to it once the OS is loaded.

We would use the find command along with an argument for files, which is owned by a given username and certainly modified over a certain time.

A program to rename all .txt file in a directory is as follows:

```import java.io.File;
public class Demo {
public static void main(String[] args) {
try {
File file1 = new File("demo1.txt");
File file2 = new File("demo2.txt");
file1.createNewFile();
file2.createNewFile();
boolean flag = file1.renameTo(file2);
System.out.print("File renamed? " + flag);
} catch(Exception e) {
e.printStackTrace();
}
}
}

```

The DHCP stands for Dynamic Host Configuration Protocol (DHCP). It is primarily a network management protocol, which is used on UDP or IP networks. At this moment a DHCP server then assigns an IP address and other respective network configuration parameters to each of the available device on a network so that they can easily communicate with the other present IP networks.

The relative path is also referred to as a partial path or the non-absolute path. A relative path is a kind of URL, which mainly constitutes a part of the full path based on its respective relation to the directory in which it is linking. These provided shorter addresses are of greater convenience for the people who create web pages mainly to require less typing and to take up fewer characters.

Link List is a sequence of links that contain items in which each item contains a connection to another item.

A reverse link list is a linked list created to form a linked list by reversing the items of the list. The head node of the linked list will become the last node of the linked list and the last one will be the head node.

Program to Reverse the order of the given link list:

```
#include
struct Node {
int data;
struct Node* next;
};
Node* insertNode(int key) {
Node* temp = new Node;
temp->data = key;
temp->next = NULL;
return temp;
}
void tailRecRevese(Node* current, Node* previous, Node** head){
if (!current->next) {
current->next = previous;
return;
}
Node* next = current->next;
current->next = previous;
}
return;
}
}
printf("n");
}
int main(){