Adobe | Computer Scientist 1[SDET] | Bangalore | November 2022 [Offer]
Summary
I successfully interviewed for a Computer Scientist 1 (SDET) role at Adobe in Bangalore, securing an offer after four technical rounds that covered automation frameworks, data structures, system design, and Python-specific challenges.
Full Experience
I hold a B. Tech. degree from a reputable state-level college. Currently, I'm working as an SDET-2 at a prominent enterprise security & CDN product firm, with approximately 5 years and 4 months of experience.
During my notice period with other offers in hand, a recruiter from Adobe reached out to me for a white box testing role. I dedicated a few days to refreshing my Python skills, and the entire process took about three weeks. I requested the recruiter to expedite the process to help me make a decision regarding my existing offers.
Round 1
A Senior Computer Scientist conducted this round. The focus was primarily on the implementation aspects of both frontend and backend automation frameworks within my current projects. I was asked how I would implement such a framework from scratch using Python. Despite being out of touch with Python for over a year, I explained the latter part reasonably well, and the interviewer delved into fine details. Towards the end, I was presented with the Decode String problem. Having not seen it before, I devised a stack-based solution and coded it up. While a few edge cases failed, the interviewer was satisfied, and we quickly moved on to discussing test cases.
Round 2
Another Computer Scientist 2 led my second round. We began with relational databases, covering topics like DB indices and B-Trees. I provided satisfactory answers, although I hadn't extensively prepared in that area. Following this, I was given a medium-difficulty SQL query question, which I managed to solve after some thought. The round then shifted to a backend framework design problem for a book subscription and online reading service.
I started by outlining the necessary APIs and their payload structures. I explained how to handle various scenarios such as subscription management, integrating payment gateways, and implementing reading limits for non-subscribers. I then detailed my approach using class diagrams to create a backend test framework for the service. The interviewer asked several design-related questions, which I addressed comprehensively. I chose a Java-based design as I felt more comfortable with it in an interview setting compared to Python.
Both the first and second rounds took place on the same day. The recruiter contacted me the next day to schedule another technical round, emphasizing that each round was an eliminator.
Round 3
I believe another Senior Computer Scientist conducted this round. It started with Python-specific questions, where my answers were not entirely spot-on. He then inquired about creating CI/CD pipelines, test reporting metrics, and Jenkins. After that, I was asked to solve a problem involving reading lines from a large file using Python. I provided an answer but struggled with the Python syntax – I later realized I should have leveraged generators for better efficiency. Finally, he asked an easy binary tree question, which I solved using Java.
My performance in the Python section of Round 3 might not have been up to par, so the team took a week to evaluate me alongside other candidates. I proactively asked the recruiter to schedule another technical round if needed. After a week, the recruiter called to schedule the managerial round.
Round 4
This round involved standard managerial questions about my past projects and experiences. I was again asked an API framework design question for a service, which I answered verbally. I also used this opportunity to inquire about the role and other specifics. The call concluded about 20 minutes earlier than scheduled.
The team deliberated for two days on a hire/no-hire decision, noting my strength in Java-based frameworks but relative weakness in Python, which was a requirement for the role. Ultimately, the recruiter informed me that they would like to offer me the position.
I received the offer in October 2022 for the Computer Scientist 1 level in Bangalore. The total compensation package included a base salary of ~30.5L (including Employer PF + Gratuity), signing bonuses of 3L + 3L (second part after 12 months), an Annual Incentive Pay (AIP) of 15% of base (~4.2L), and stock options worth 75k USD over 4 years (~14.8L annually). The total first-year compensation was approximately ~55L, along with standard Adobe benefits. I had previously received offers from Visa, Fi.Money, and PingIdentity, all in the 35-37L ballpark.
I successfully negotiated once, getting the joining bonus and stocks bumped up. The base salary seemed a bit low, but I couldn't negotiate further on it, likely due to not having a similar competing offer that matched Adobe's total compensation.
Interview Questions (4)
Given an encoded string, return its decoded string. The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated k times. k is a positive integer. You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc. Furthermore, you may assume that the original data does not contain any digits and that digits are only for repeat numbers, i.e. there are no '3a' or '2[4]' like encodings.
Design the backend framework for a book subscription and online reading service. This includes defining APIs, payload structures, and handling scenarios such as subscription management, payment gateway integration, and reading limits for non-subscribers. Develop a backend test framework for the service.
How would you read lines from a very large file efficiently using Python?
Design an API framework for a service.
Preparation Tips
I took a few days to brush up on Python, which was the main preparation I did for this opportunity.