Offer accepted. The process took 2+ months.

I originally had applied to Facebook through their online portal. After a few weeks of no response I reached out to a recruiter at a Facebook event and she saw my resume. After I convinced her I was ready for the interviews, she set up my first phone interview of three total.
After the interviewer gave a fairly long intro of his bg I was asked several behavioral questions. I was asked why I picked Facebook, what is my field of interest, and had to discuss a project of mine.
At this point we reached the technical portion. He asked me the following question.
Q: Given a number n, return a number formed from the same digits of n that is the number right before n. Example: Given 1342, you must return the number 1324.
After this we spent a fairly lengthy period of time talking about coding habits, facebook, push cycles, and other production related questions I asked.
At the end of this interview I felt terrible, I thought I'd completely failed it because I only answered one question. I couldn't sleep all night, but then the next day itself I received an e-mail saying I'd passed to the second round. They asked if I wanted some time to brush up before going in for my final interview. I asked for a week and prepared.
My second interviewer called from a conference room due to which the sound quality was a bit off. We talked and she asked me a few similar questions to the first interviewer delving into my background, projects, and my schoolwork. Eventually we began the coding questions.
The first question was the LCA problem with no parent pointers. I immediately started analyzing the problem's base cases for recursion, determined an optimum algorithm that covered all cases, and wrote the solution before coding. After explaining it and running through test examples I began coding the solution. After coding it, I spent a fair amount of time proving my code works with the interviewer before she accepted it worked. We had approximately 15 minutes left at this point so he said we can begin another problem before ending five minutes early, a statement I was confused by.
The second question was to design a method to store really large numbers that exceed 64 bits, and then to write a method that can add two of these numbers. I began coding and had just finished the code when he said we ran out of time. He asked me about any questions I had and seemed to be in a hurry so I asked a few questions then the interview ended.
At this point I waited for approximately 2 weeks after I sent two emails to my recruiter asking about the feedback from the interview. I was asked to do a third phone interview with a product team member as the engineers had noted I was interested in product development. I was a bit confused but happy overall to still be in the running. We scheduled it for a few days later and I went in relaxed.
In the interview, I was asked why Facebook, a project of mine, which field I'm interested in and why, followed by a technical question. I coded in Java although she mentioned she hadn't used Java in a while so she didn't care as much about the syntax.
The first question was the classic anagram question. I described two solutions, one using a HashTable and one relying on bucketsort. I coded both methods and did a complexity analysis before she expanded the problem. Now rather than checking if two strings were anagrams, I had to group a list of strings by anagram grouping. I described how we could use a Hashtable to store the sorted string as a key, and have the original string be contained in the value as a linked lists. After writing the algorithm out in pseudocode she said I didn't have to implement it in Java and that she believed it would work. After a complexity analysis she then asked me this mix of behavioral technical questions.
What would you do if Mark Zuckerberg came to your desk and told you Facebook was slow and he wanted you to fix it.
She then asked me to describe a product I'd design if I worked at Facebook. I mentioned several related to data analytical tools for Facebook users on their own data. I mentioned the benefit to users before naming another idea involving querying newsfeed for posts related to the topics described in the query.
After this she asked me if I had any questions for her before she told me that my recruiter would get back to me within a week. I waited three days before I received an e-mail from my recruiter that she wanted to talk for a few minutes if I had time. I immediately responded I was free and she called me shortly after.
She then gave me my offer for an internship in Menlo Park, described the components of the compensation, and explained briefly the process involved with the internship. Afterwards she asked me if I had any questions. I was too blown away so I just said I'd email her once I think of questions before we ended the call. I accepted that night.