Summary
I recently had my second-round interview with Sigma Computing in the USA. It was a challenging yet fair process, emphasizing communication and problem-solving over standard LeetCode patterns. Although I was rejected, I found the experience valuable and appreciated its practical, working-session style.
Full Experience
I had my second round for Sigma Computing, which was a tad bit harder than the first round, but thematically linked. The interview process was good, definitely not "LeetCode brained." It mimicked a real working session where I needed to modify and incorporate existing code to solve a problem. The interviewer really cared about communication, and the recruiter had emphasized this point. Even though I got rejected, I enjoyed the candidate experience and found it to be a very fair process, without the insanity of some companies that demand 10-hour take-homes only to ghost you.
Interview Questions (2)
You are given a pre-built spreadsheet class with functions like set_cell(row, col, value), get_cell_value(row, col) (stubbed out), print_sheet(), parse_formula(formula), and op(a, b) (currently addition, but can be anything). The spreadsheet is M rows, N columns, instantiated as sheet = Spreadsheet(5, 3). Cell values are either integers or formulas in the format =(row1, col1)@(row2, col2)@(row3, col3)..... The parse_formula utility provides operands as [(row1, col1), (row2, col2), ....]. Your task is to implement get_cell_value(row, col) to correctly retrieve the value of a cell, resolving formulas by summing values from referenced cells. Test cases were provided for a working run.
Building on the spreadsheet class, imagine that every call to the op(a, b) function increments a counter. Your challenge is to improve performance such that if print_sheet() is called multiple times in a row without any changes to the sheet, the number of calls to the op function is significantly reduced. You are allowed to modify anything within the Spreadsheet class. This part of the interview is open-ended and requires creative problem-solving to minimize the counter value.
Summary
I had my second-round interview for Sigma Computing in the USA. Although I was ultimately rejected, I found the process fair and the questions challenging and engaging, mimicking a real work scenario.
Full Experience
I had my second-round interview for Sigma Computing, which I found to be a bit harder than the first round but thematically linked. The interviewer cared a lot about communication, and the recruiter had emphasized this earlier. Despite receiving a rejection, I genuinely enjoyed the candidate experience and thought it was a very fair process. It wasn't like some companies that make you do a 10-hour take-home assignment only to be ghosted. The interview mimicked a real working session where I needed to modify and incorporate existing code to solve problems, rather than just being a 'LeetCode-brained' exercise.
Interview Questions (2)
You are given a pre-built spreadsheet class with these functions:
set_cell(row, col, value)get_cell_value(row, col)--> stubbed out functionprint_sheet()--> go through all rows and cols and print the valueparse_formula(formula)--> util function for your useop(a, b): perform addition between two intaandb. Assumeopis a magic function and it could be anything, but right now, just addition
In this case, the spreadsheet is M rows, N cols and you can instantiate like sheet = Spreadsheet(5, 3) meaning 5 rows, 3 columns. In the previous question, we assumed infinite rows for the spreadsheet but finite columns.
Part 1: Implement get_cell_value(row, col)
get_cell_value(row, col) has a not defined implementation. Cell values are either an integer or a formula in format of =(row1, col1)@(row2, col2)@(row3, col3)....
parse_formula in the above would give operands like [(row1, col1), (row2, col2), ....]
Test case was provided but I needed to implement get_cell_value(row, col) and see working run.
Part 2: Performance Improvement
In the spreadsheet class, every time you call op(a, b) function, you will increment a counter. Suppose you call print_sheet() two times in a row and nothing changes in the sheet, could we reduce the number of calls to op function? I could modify anything in the Spreadsheet class.
This part was the meat of the interview and required some open-ended thinking, so it's a creative problem. I needed to get the counter value as low as possible.
Summary
I completed my first-round interview at Sigma Computing, which focused on designing and implementing a spreadsheet tool with various functionalities including basic cell operations, formula support, and considerations for design extensibility.
Full Experience
I recently had my first-round interview with Sigma Computing, a B2B SaaS startup known for its analytics tooling, which competes with products like Tableau. For anyone looking to bypass the intense LeetCode grind, I genuinely recommend exploring opportunities at Sigma Computing, as they are actively hiring across various roles. My interview experience was very collaborative; the interviewer was relaxed and supportive. I felt the focus was more on fundamental understanding and problem-solving rather than rote memorization of algorithms. They were also flexible about the programming language, encouraging me to use whatever I was most comfortable with.
Interview Questions (1)
Your goal is to implement a spreadsheet tool just like you'd see in Sigma's product. The spreadsheet should look like Google Sheets (so you have row numbers, columns, etc). Spreadsheet is initialized by giving the list of columns, so there are "infinite rows" but "finite columns".
Part 1: Basic functionality
Implement the following functions:get_cell(row, col): Given (row, col), get the value of the cell. Remember that the spreadsheet has "infinitely many rows", but finitely many columns.set_cell(row, col, value): Set cell at(row, col)to a given value.print_firstn_rows(n): Print the first N rows of the spreadsheet.
Part 2: Formula Cells
Support ability to configure formula cells (eg: in google sheets, you can have something like=ADD(C7, D4)). You will only be supporting the ADD operation. Don't worry about subtraction, multiplication, division. Showcase good testing of edge cases that may come up (eg: formula cycles).
Part 3: Followups
- What if you wanted to support an
add_column()interface. How would you do that? - What about
delete_column()interface? - Code cleanups to remove unnecessary code.
Preparation Tips
My experience suggests that extensive LeetCode grinding isn't necessary for these types of interviews. Instead, focus on understanding fundamental computer science concepts well and be comfortable using your preferred programming language, as long as it's not outdated.