The interview process consisted of 3 stages: a skills assessment, a phone interview, and a final "in person" interview.
The skills assessment took about 4 hours and consisted of four parts: a 2-minute math portion, a brain teaser section, a programming language learning section, and a coding section. The 2-minute math and brain teaser portions were fairly basic, but it definitely helped to review some different interview brain teasers beforehand to be familiar with the types of questions. The programming language learning section went through different phases where different rules for the language were set, and you had to learn these to answer questions, where all questions were cumulative. This would not have been very difficult for anyone that has some programming background. Finally, the coding portion consisted of 4 questions that increased in difficulty that you could code a solution in either Java, C++, Python, or some other languages that I can't remember exactly. These problems were about medium difficulty LeetCode questions, but preparation was very helpful.
Immediately after taking the skills assessment, I was contacted to schedule a phone interview. This was a thirty minute conversation about my background and then I was given some time to ask questions. This was a very simple phone interview and went by fast.
About a week after the phone interview, I was contacted to schedule an "in person" remote interview. This interview lasted a little over 4 hours and consisted of a product overview, a group interview with a developer, a technical portion, and a one-on-one interview with the recruiter. The product overview took a very long time and was almost unnecessarily long. The other portions of the interview were about the length expected, but the developer giving the technical portion of the interview did not do a great job of explaining the problem. After revealing the answer at the end, many minute details were left out in the explanation. Finally, the one-on-one with the recruiter was basically just asking basic recruiter questions (what team I wanted to work on, if I had any other offers, etc.). I received an offer a week after the final interview.
It took about a month from scheduling the skills assessment to receiving an offer. Overall, I felt like the interview was fine, but it felt like everything was fairly scripted and everyone was saying what they were told to say. From reading around online, I feel like Epic is immensely overworking their employees and does not fall in line with other tech companies and I felt as though the interview process did prove this information. For this reason, I decided to reject my offer.