Walk me through
your project.

Paste a GitHub repo and get interviewed on the code you wrote.

Every question points at your code

RepoViva finds the lines behind each topic, asks about them, and grades what you say.

Owner.java Example
@Entity
@Table(name = "owners")
public class Owner extends Person {
 
    @Column(name = "address")
    private String address;
 
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "owner_id")
    @OrderBy("name")
    private List<Pet> pets = new ArrayList<>();
 
    public List<Pet> getPets() {
        return this.pets;
    }

Question 3 of 8Owner.java · lines 45, 48

Owner loads its pets eagerly, and Pet does the same with its visits. What queries run when you list a page of 20 owners — and how would you fix it?

Your answer

One query for the owners, then one per owner for their pets — 21 in total. I'd switch it to lazy loading.

64/100 Scaling & failure · 52

Good Spotted the N+1 and counted it right.

Missing Each pet's visits add more queries, and lazy loading alone just moves the N+1 — a fetch join fixes it.

How it works

From a GitHub link to a scored interview in four steps. Nothing to install, and nothing to set up.

  1. 01

    Paste a public repo

    RepoViva maps your stack and finds the files behind each part of it. Those files are what your questions are built from.

  2. 02

    Pick your interview

    Choose a length and, if you like, the topics to focus on. Each topic starts with your code, then follows up on why you built it that way.

  3. 03

    Answer in your own words

    Each question shows the files it's about. Answer the way you would in the room, and grading happens while you keep going.

  4. 04

    See your scores, then practice

    Seven skills, scored separately. Topics under 75 become weak areas, and one click starts practice on exactly those.

What you get

Generic interview prep asks about textbook topics. RepoViva asks about the decisions in your repo.

Your report

Every interview ends with what you explained well, what to strengthen, and what to practice next.

Interview report · spring-petclinic completedExample

Weak areas

Persistence58

gaps in tradeoff reasoning, scaling & failure

Testing66

gaps in depth

Skills

Technical accuracy82
Project understanding76
Project ownership78
Depth64
Tradeoff reasoning55
Scaling & failure48
Communication71

Common questions

Who is it for?

Students, new grads, and bootcamp grads preparing for internship and entry-level interviews, or anyone about to be asked "walk me through this project".

Which languages does it support?

Java and JavaScript/TypeScript, including React. Repos with other languages still work, but questions about those parts are more general.

Can I use a private repository?

Not yet — public GitHub repositories only.

What happens to my code?

RepoViva reads your repo from GitHub at a fixed commit and sends relevant excerpts to Google's Gemini to write and grade questions. It doesn't keep your source files — only the detected technologies, the names of the files used as evidence, and your questions, answers, and scores. Removing a project deletes all of it.

How long does it take?

Analyzing a repo and preparing an interview each usually take under a minute. The interview itself is as long as you choose: short, standard, or long.

Know your project
before they ask.

Get started