Design Web Browser Back Button

Image placeholder 9899

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

Airbnb: Design webbrowser back button
Your web browser supports will support three actions: back, forward and open. The init webpage is “about:blank”.
Given a sequence of commands. Return the result page.


public void backButton(String[] cmds) {
          Stack forwardStack=new Stack();
          Stack backwardStack=new Stack();
          String currentPage="about:blank";

          for(int i = 0; i < cmds.length; i++)
          {
               String cmd = cmds[i];
               if(cmd.equals("open"))
               {
                    backwardStack.push(currentPage);
                    currentPage=cmds[++i];
                    forwardStack = new Stack();
               }
               else if(cmd.equals("back"))
               {    
                        if(!backwardStack.isEmpty()){
                             forwardStack.push(currentPage);
                             currentPage=backwardStack.pop();
                        }
               }
               else if(cmd.equals("forward"))
               {
                        if(!forwardStack.isEmpty()){
                            backwardStack.push(currentPage);
                            currentPage=forwardStack.pop();
                        }
               }
          }
         return currentPage;
     }



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.