The Ultimate Test

Ace Your Next Technical Job Interview

Angie Jones

http://angiejones.tech

@techgirl1908

Senior Automation Engineer

Twitter, San Francisco, CA, USA

T.J. Maher

Adventures in Automation

@techgirl1908

Testing Round

@techgirl1908

How would you test a chair?

@techgirl1908

Automation Round

@techgirl1908

Automation Pyramid

UI
SERVICES
UNIT

@techgirl1908

Unit Tests

public int add(int a, int b);

@techgirl1908

Service Tests

Given a user profile, how would you test

CRUD operations of a REST API?

@techgirl1908

CRUD REST Methods Tests
create post
read get
update put
delete delete

@techgirl1908

CRUD REST Methods Tests
create post post with all optional and required data
post with only required data
post with required data missing
post with invalid data for the parameters
read get
update put
delete delete

@techgirl1908

CRUD REST Methods Tests
create post post with all optional and required data
post with only required data
post with required data missing
post with invalid data for the parameters
read get get when profile doesn't exist
get when profile exists
create profile then get
update profile then get
delete profile then get
update put
delete delete

@techgirl1908

CRUD REST Methods Tests
create post post with all optional and required data
post with only required data
post with required data missing
post with invalid data for the parameters
read get get when profile doesn't exist
get when profile exists
create profile then get
update profile then get
delete profile then get
update put update existing profile
update non-existing profile
update deleted profile
update then update again
delete delete

@techgirl1908

CRUD REST Methods Tests
create post post with all optional and required data
post with only required data
post with required data missing
post with invalid data for the parameters
read get get when profile doesn't exist
get when profile exists
create profile then get
update profile then get
delete profile then get
update put update existing profile
update non-existing profile
update deleted profile
update then update again
delete delete delete profile
delete when there are dependencies
delete after delete
delete non-existing

@techgirl1908

UI Automation

@techgirl1908

@techgirl1908

@techgirl1908

@techgirl1908

@techgirl1908

@techgirl1908

/html/body/div/div/div/div/div/div[2]/label/span[2]

@techgirl1908

@techgirl1908

.//span[contains(@class, 'PollXChoice-choice--radio')]/span[text() = '%s']

Development Round

@techgirl1908

Brush up on...

@techgirl1908

  • Big O Notation
  • Data Structures
  • Algorithms

Big O Notation

@techgirl1908

Notation Description Example
​O(1) - Excellent performance of execution is the same regardless of the input set insert, delete, search Hash table
O(log N) - Good high performance at beginning but flattens as the size of the data set increases binary search
O(N) - Fair performance will deteriorate in direct proportion to the growth of the input set loop through List to find value
O (N log N) - Bad O(N) * O(log N) - task takes O(log N) and has to be repeated O(N) times sorting
​O(N^2)- Horrible
 
performance will deteriorate in direct proportion of 2 times the data set nested loops
N^2  is for 2 nested loops
N^3  is for 3 nested loops
​O(2^N) - Horrible number of calls inside function x number of times function will be called recursive function with multiple calls (i.e fibonacci recursion)

Data Structures

@techgirl1908

Structure Description
Hash Table maps keys to values
Stack line of data. last in, first out
Queue line of data. first in, first out
Linked List sequence of nodes where each node points to next node

@techgirl1908

Instructions: 2 arrays. Print any that appear in both

Example:

a1 = {'a', 'b', 'c'}

a2 = {'b', 'c', 'd'}

@techgirl1908

Instructions: 2 arrays. Print any that appear in both

Example:

a1 = {'c', 'a', 'b', 'c'}

a2 = {'b', 'c', 'd'}

@techgirl1908

Instructions: 2 arrays. Print any that appear in both

Example:

a1 = {'c', 'a', 'b', 'c'}

a2 = {'b', 'c', 'd'}

 

Expected Result: {'c', 'b'}

@techgirl1908

Instructions: 2 arrays. Print any that appear in both

Example:

a1 = {'c', 'a', 'b', 'c'}

a2 = {'b', 'c', 'd'}

 

Expected Result: {'c', 'b'}

@techgirl1908

Instructions:

Given a list of Strings and a specific String, find out many times the String appears in the list

Example:

l = {"abc", "def", "abc", "ghi"}

s = "abc"

output = 2

@techgirl1908

Instructions:

Given a list of Strings and a specific String, find out many times the String appears in the list

Example:

l = {"abc", "def", "abc", "ghi"}

s = "abc"

output = 2

Studying

@techgirl1908

Cracking the Code Interview

by Gayle McDowell

Resources

@techgirl1908

Good luck!

Angie Jones

http://angiejones.tech

@techgirl1908

Senior Automation Engineer

Twitter, San Francisco, CA, USA