Applied for the role of Software Engineer Level 61 by referral . 3 yrs experienced.
Virtual Rounds
Round 1)
Brief introduction ( 5-10 mins )
Both the solutions had to run successfully against a set of custom inputs given by the interviewer on codility . I had a couple syntax errors so the interviewer was good enough to give me 10 extra minutes but it passed finally.
Round 2)
This round was taken by a manager (principal software engineer) .
Brief Introduction (10-12 mins about each other )
A worlwide sprint event has happened in the last hour and you are given a scoreboard with millions of records in the form of a list of tuple. For example :
[
(R1, R2),
(R2, R3)
]
The first element of each tuple beats the second element of each tuple.
Here, R1 is the winner and R3 is the loser
He gave more examples like this :
(R1, R2) ; (R2, R3); (R3, R1)
(R1, R2) (R2, R3) (R3, R4) (R4, R2)
(R1, R2) (R3, R4)
and the questions he asked was to find out if :
Q1) Data is valid or not?
Q2) Data is complete or not?
Q3) Who was 1st/last?
I like the question and I approached this question with creating a directed graph . I discussed with him that I will create a graph using adjacency list and then I will traverse DFS to detect if cycle is present or not? If cycle is present then data is inconsistent. For the the third part , I told that I will toplogically sort and the first node will be the winner and the last one will be the loser. So after discussions, I started coding.But due to extensive discussion and corner cases , I ran out of time. He wanted a synactically correct and running code with the above tets case examples. I could not complete coding for the third part as I had run out of the given 1 hour time slot.
Verdict : Rejected.
Virtual Interviews are a bit harder than pen and paper/whiteboard rounds. This is because they need more practice to write clean code in a stipulated amount of time and you cannot miss any corner cases.
Will work hard even more.