Ring Buffer

Image placeholder 9899

(This question has been seen in the interviews of the following companies: Facebook)

Implement a ring buffer

class RingBuffer:
    def __init__(self, capacity):
        self.size = capacity
        self.capacity = 0
        self.Buffer = [None] * capacity
        self.Head = 0
        self.Tail = 0

    def full(self):
        return self.size == self.capacity

    def empty(self):
        return self.capacity == 0

    def add(self, obj):
        self.Buffer[self.Tail] = obj
        self.Tail = (self.Tail   1) % self.size
        Self.capacity  = 1

    def pop(self):
        self.Head = (self.Head   1) % self.size
        Self.capacity -= 1
        return self.Buffer[self.Head - 1]

Get one-to-one training from Google Facebook engineers

Top-notch Professionals

Learn from Facebook and Google senior engineers interviewed 100+ candidates.
Most recent interview questions and system design topics gathered from aonecode alumnus.
One-to-one online classes. Get feedbacks from real interviewers.

Customized Private Class

Already a coding expert? - Advance straight to hard interview topics of your interest.
New to the ground? - Develop basic coding skills with your own designated mentor.
Days before interview? - Focus on most important problems in target company question bank.