This is my second attempt at interviewing at a Fang company. I love their cloud product and keep coming back to the well hoping to get another drink. I figured if I can just get in I can eventually get to the position I really want, full stack engineering. In hindsight just apply the the job you really want.
Anyway I used my network with the Fang company employees I knew to apply to a cloud support position. The recruiter did tell me that good understanding of networking was important for any cloud support position I would be applying for. So I studied networking for three weeks. I was pretty dry stuff.
The recruiter then set me up with an online assessment. I have taken online assessments before and was worried it would be like the really bad ones I have taken in the past. Instead it was really sophisticated. More on that later.
Networking studies
To get ready I took a online course on networking concepts. I have summarized the main things I learned as follows.
Osi Model
The course focused on the Osi model ( Open Systems Interconnection Model). This is the main model that most networks are built around.
At a high level it consists of the following stack. An interesting feature of the OSI stack is that all the layers of the stack function without knowledge of the others.
- Application Layer ( Ping, HTTP, Data, Web Apps, Moblie Apps)
- Transport Layer (Process to process, TCP, UDP, Segments)
- Network Layer (IP, IPv6, L3 routing, packets, source node to destination node)
- Data Link Layer (Ethernet, MAC, L2 routing, frames, node to adjacent node)
- Physical Layer (Over wires, bits)
Data flow
The following diagram shows typical flow of data from a source to a destination. As the data passes through each layer of OSI stack various headers get attached as it goes down the stack and removed when it goes back up the stack.
Intermediate machines
The flow diagram above does not show the intermediate machines that are connected between the source and destination. Typically data flow goes down and up a small portion of the stack between the network layer and the physical layer to get to the IP destination. The routing between machines using the network layer is L3 routing, the routing between physically connected devices using the data link layer is L2 routing.
Subnets
Every IP address lies in one subnet, many devices can be attached to a subnet. L2 routing occurs in the subnet. To reach another subnet L3 routing occurs through a router.
The diagram below shows a typical remote and local subnet. Different subnets are connect to each other using a router. Many devices can be connected to a local subnet and will hear all packets in the local subnet. The domain of subnet is called the broadcast domain.
The devices are not physically connected to each other like show above. Instead a switch is used to separate them. This is needed to avoid collisions. The follow diagram shows a switch in use.
Tables
To keep all the routing straight several tables are used: a Routing table, ARP table and MAC table.
A routing table is stored in the router or the network host and lists routes to particular network destination. It contains information about the topology of the network immediately around it. See https://en.wikipedia.org/wiki/Routing_table for more information.
The ARP table is used in the data link layer to link the IP address to the MAC address of the device. See https://en.wikipedia.org/wiki/Address_Resolution_Protocol for more information.
The MAC table maps MAC address to ports on an Ethernet switch. See https://en.wikipedia.org/wiki/Forwarding_information_base for more information.
CIDR
CIDR, which stands for Classless Inter-Domain Routing, is an IP addressing scheme that improves the allocation of IP addresses. It does this by using a mask that controls the total number hosts on a subnet. See https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing for more info.
A typical virtual private cloud would have CIDR blocks of /16 /24 or /28. Some VPCs reserve IP addresses for VPC management. For example an AWS VPC with CIDR block 10.0.0.0/24
reserves the following.
10.0.0.0
: Network address.10.0.0.1
: Reserved by AWS for the VPC router.10.0.0.2
: Reserved by AWS. The IP address of the DNS server is the base of the VPC network range plus two. For VPCs with multiple CIDR blocks, the IP address of the DNS server is located in the primary CIDR. We also reserve the base of each subnet range plus two for all CIDR blocks in the VPC. For more information, see Amazon DNS server.10.0.0.3
: Reserved by AWS for future use.10.0.0.255
: Network broadcast address. We do not support broadcast in a VPC, therefore we reserve this address.
Play around with the CIDR to IPv4 converter below and check out various ranges.
VLANs
Traditional LANs have all the devices on the same subnet. This is good choice for a server side back channel. Where you want security and speed but can have some disadvantages for other use cases.
VLANs give you the capability to virtually configure devices on the same network to be in separate subnets and conversely devices a different networks to be in the same subnet.
This is important for giving resources different level of access. You can restrict one group of resources in their own subnet separated from another group even if they are in the same physical network. Also you can connect groups physically separated from each other on the same subnet. Very powerful stuff.
DNS
The domain name service maps a URL name like anyplace.com to an IP address. It also can be used for a reverse DNS look up, to map a IP address to a URL name.
To do this there is a DNS architecture consisting of DNS servers all over the globe and managed by a central authority.
Online assessment
I like coding challenges but this one did not have a coding challenge. I assume because cloud support positions are more about helping the customer and less about code. So I should have known then this was the wrong fit. I can only talk in generalities though and won’t discuss the particular questions but can describe the overall experience.
The tool was really cool. It had videos introducing to each section explaining how they work. The assessment had three sections.
One was your typical multiple choice quiz type.
Another was behavioral related but had buckets, more on that later.
The third was really interesting. It simulated a real life job situation. It had email, text, and customer support level documents. You would get requests from managers, colleges, and customers and you would have to put into buckets. You would need to know the customer support level, the services the fang company offered and priority. After you put the things in the buckets more emails, texts etc would presented and you continued to solve the issue. Really cool stuff.
The buckets were ordered from not important to most important or worst solution to best solution. There were about 5. The key here was to understand the slight nuance between all the tasks and solutions and get things in the correct buckets. Oh boy very interesting but not my thing. I knew then this cloud support thing was not for me. I am a creative type and I like to create products. I work best concentrating on one thing. I serve customers by creating software to solve their problems.
The Result
I did not pass to the next level. I was not that bummed because I primary want to be a full stack engineer. My dream job would be to work on the same cloud services I use for my business. I think the lesson here is to shoot for what you want to do not just get in. This will delay my entry in the industry but I think this important. So in the future I will search for a position that fits.
I also have a post about a front end engineer position I interviewed for. Front end engineering was recommended to me after talking with a Fang employee. However I keep coming back to full stack as my passion. This is because I like making complete products which often require both front end and back end development. Therefore full stack will be my concentration going forward.