SIG (Susquehanna)·Software Engineer·Technical Phone Screen
Jun 2026
Sig SWE interview centered on implementing a custom vector from scratch, which sounds manageable until you realize they care deeply about every layer of memory management. Three distinct parts, each peeling back another level of C++ internals.
- Implement the core memory model for a custom vector: define the data members, write raw allocation using operator new, implement reserve, and add push_back with geometric capacity growth. Allocation and construction must be kept separate.
- Implement the Rule of Five for your custom vector: destructor, copy constructor, copy assignment, move constructor, and move assignment, ensuring deep copy semantics and O(1) moves.
- How do you make the destructor and reallocation logic correct when T's constructors or move constructors can throw? Specifically, how do you avoid leaking or corrupting the container mid-reallocation?
- Why might a 1.5x growth factor be preferable to 2x for a general-purpose allocator?
- How would you add emplace_back with perfect forwarding, and what does it gain over push_back?
- What are the iterator and reference invalidation rules on reallocation, and how would that affect the API contract for your vector?
- How would adding an Allocator template parameter change where construction and destruction happen in your vector implementation?
“The separation of allocation from construction is where I expected to trip up and I kind of did.” The rest of the author's notes on Software Engineer interview at SIG (Susquehanna), Technical Phone Screen round, covers how they worked through the question, what the panel pushed back on, and what they would do differently.
View Post