Viva prep · Real questions · Student experiences Enroll in Bootcamp

Study workspace

Viva Prep

Prepare in structure for the Project Mentorship.

18896 Questions
267 Proctors

Lazy IITians

Who are we?

A student-built prep community for IITM BS — real viva questions, shared experiences, and structured practice so you walk into mentorship confident.

Fill the form and join us

Enroll in Bootcamp

Find questions

Search by question text across the whole library, then narrow with subject, level, and proctor.

Share your experience Add your viva experience here

Question sets

  1. 1
    It starts with a demo then in admin i have shown booked, completed and cancelled appointment so he asks only show booked only then ask to make navbar to bottom and footer to navbar basically interchange.
    Times asked 2
    Official solution

    SimpleLive UI change: relevant CSS/HTML template kholo — color, margin, flex, bootstrap class. Save + hard refresh.

    Example

    /* button red */
    .btn-primary { background: red; }
    
    /* center navbar item */
    .navbar { justify-content: center; }

    Viva tipDevTools se pehle try, phir file mein permanent change.

  2. 2
    And then what is catching.
    Times asked 2
    Official solution

    SimpleCaching (catching typo): pehli baar DB, result Redis/memory mein; next request tez hit.

  3. 3
    Celery and redis working
    Times asked 4
    Official solution

    SimpleRedis box hai, Celery us box se kaam uthane wala worker hai — same cheez nahi.

    Redis: store (cache keys) + queue (broker lists).
    Celery: Python library jo tasks define karti hai, .delay() se queue mein daalti hai, worker execute karta hai.

    Dono localhost pe ho sakte hain. Alag Redis DB index use karo. Redis band = cache miss + Celery stuck.

    Example

    Celery: broker_url='redis://localhost:6379/0'
    Cache:  CACHE_REDIS_URL='redis://localhost:6379/1'

    Project example: export_csv.delay(user_id) Flask se. Worker Redis se task uthata hai, CSV+email. Cache alag keys venues.

    Viva tipAgar possible ho to cache db=1, broker db=0 — keys mix nahi hoti.

  4. 4
    V-directives
    Times asked 1
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

Advice: He is rude and he do not listen much,not even focusing much. in level 1 itself asks to do changes much
  1. 1
    I began by accessing GitHub and navigating through the relevant repositories to familiarize myself with the project structure and available resources.
    Times asked 2
    Official solution

    SimpleGitHub repo open karo: commits, collaborators, README. Examiner check karta hai tumne khud kaam kiya.

    Example

    Settings → Collaborators
    Commits: regular messages, last-day dump nahi.

    Viva tipPrivate repo access pehle de do. Main branch submitted ZIP se match honi chahiye.

  2. 2
    Following that, I downloaded the project files from the portal and set up the local environment to ensure the application could be run and tested properly.
    Times asked 2
    Official solution

    SimpleExaminer portal wala submitted ZIP chahta hai. Local extra changes mat dikhana.

    Suggested flow1) Portal ZIP download
    2) Extract
    3) venv + pip install -r requirements.txt
    4) flask run / python app.py

  3. 3
    I spent time exploring the project in detail, going through different modules, components, and files to build a general understanding of how the system is structured and how different parts interact with each other.
    Times asked 2
    Official solution

    SimplePehle 1-line definition, phir apne MAD1 project mein file dikhao, phir chhota example.

    Suggested flow1) Concept kya hai?
    2) Mere code mein kahan?
    3) Example / demo
    4) Edge case

    Example

    # related file: models.py / routes / template
    # formula: request → check/auth → DB → render/redirect

    Viva tipExact line yaad nahi to honestly related part dikhao. Bluff mat karo.

  4. 4
    During the session, important theoretical concepts were discussed, including the distinction between authentication (verifying a user’s identity) and authorisation (determining what actions the user is permitted to perform).
    Times asked 2
    Official solution

    SimpleMAD1 mein usually session-based auth: login pe session['user_id'], har request pe verify.

    Example

    session['user_id'] = user.id
    uid = session.get('user_id')
    user = User.query.get(uid)

    Viva tipSECRET_KEY set karo warna session insecure. logout pe session.clear().

  5. 5
    Additionally, frontend concepts such as props and emit were explained, focusing on how data is passed between components and how child components communicate with parent components in a structured way.
    Times asked 2
    Official solution

    SimpleProps parent→child values. Emit child→parent signal. Basic communication.

    Difference props and emit.

    Component = reusable UI block (Navbar, Card). Props parent→child data, emit child→parent event. Slots parent HTML inner content.

    computed cache + reactive derive (filtered list). watch side-effect (query change pe API). methods events. ref() primitive, reactive() object. Vuex/Pinia global store; localStorage persist, store nahi.

    SFC: template + script + style ek .vue file. Parent-child exam favourite: list parent, row child :item + @delete.

    Project example: Card props venue emit select.

  6. 6
    After gaining this foundational understanding, I was assigned a practical task involving code modification within the existing project.
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

  7. 7
    The task required adding a new button to the patient dashboard interface. This button was intended to utilize the weight data already present in the edit profile functionality.
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

  8. 8
    The expected functionality was that, upon clicking this button, it should connect to the history model and display the patient’s historical data accordingly.
    Times asked 2
    Official solution

    Simplemodels.py = har table ki class: columns, PK/FK, relationships. Yeh Model layer hai.

    Suggested flow1) Classes list karo
    2) Har table ka kaam 1 line
    3) Relationships (1-M / M-M)
    4) Constraints (unique, nullable)

    Example

    class Lot(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(80), nullable=False)
        spots = db.relationship('Spot', backref='lot', lazy=True)
  9. 9
    I successfully implemented the UI part of the requirement by creating and placing the button within the patient dashboard.
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

  10. 10
    However, I faced challenges in implementing the backend linkage and data flow, specifically in connecting the button action to the history model and retrieving/displaying the relevant patient history.
    Times asked 2
    Official solution

    Simplemodels.py = har table ki class: columns, PK/FK, relationships. Yeh Model layer hai.

    Suggested flow1) Classes list karo
    2) Har table ka kaam 1 line
    3) Relationships (1-M / M-M)
    4) Constraints (unique, nullable)

    Example

    class Lot(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(80), nullable=False)
        spots = db.relationship('Spot', backref='lot', lazy=True)
Advice: Transitioning to the proctor interaction, the overall experience was very positive and encouraging. The proctor created a comfortable environment right from the beginning of the session. As soon as he joined the meeting, he greeted me warmly and asked how I was doing, which helped ease some of my initial nervousness. He was attentive enough to notice that I seemed slightly anxious and made a conscious effort to motivate and reassure me, which significantly improved my confidence during the interaction. Throughout the viva, his tone remained polite, patient, and supportive, making it easier to communicate openly without feeling intimidated. After the viva concluded, I took the opportunity to ask for feedback on my performance. He responded thoughtfully and constructively, pointing out that I should focus more on improving both my understanding of theoretical concepts and my ability to implement code changes effectively. His feedback was clear, helpful, and delivered in a kind manner, making it easier to understand where I need to improve without feeling discouraged.
  1. 1
    Level 2 viva first told me dont be panic then asked to show the id and told me this is your proj show tell me all about it i demo the app and then asked about the backend explain all the code then asked if the data is distributed in db how to take it thats all
    Times asked 1
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

Advice: He is straight to point ,nice proctor ,just do what he asked,be confident thats all
  1. 1
    Authorization and authentication where token is stored asked me to find the token
    Times asked 2
    Official solution

    SimpleAuthentication: tu kaun hai? (login). Authorization: tujhe permission hai? (role check).

    Example

    # auth
    if check_password_hash(user.password, pwd):
        session['user_id'] = user.id
    
    # authz
    if user.role != 'admin':
        abort(403)
Advice: He is cool good proctor
  1. 1
    Show app demonstration
    Times asked 2
    Official solution

    SimpleDemo script pehle se practice: 5–7 min, Admin + User roles, saare mandatory features.

    Suggested flow1) Register/login user
    2) Admin login — CRUD
    3) Approval/blacklist
    4) Booking/apply + edge case
    5) Search
    6) Logout

    Viva tipBolte-bolte dikhao. Code tab kholna jab poochhein.

  2. 2
    Then add one button on student dashboard that fetch student roll number and show roll number as button name and after clicking it should redirect and show student profile section
    Times asked 2
    Official solution

    Simpleredirect dusre URL pe bhejta hai. flash one-time message session mein rakh ke next page pe dikhata hai.

    Example

    flash('Login successful', 'success')
    return redirect(url_for('user.dashboard'))
  3. 3
    Then he asked me what authentication method i used and where is token get stored
    Times asked 2
    Official solution

    SimpleAuthentication: tu kaun hai? (login). Authorization: tujhe permission hai? (role check).

    Example

    # auth
    if check_password_hash(user.password, pwd):
        session['user_id'] = user.id
    
    # authz
    if user.role != 'admin':
        abort(403)
  4. 4
    Thats all he asked and lasted 25 min only
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

Advice: He is very nice and helpful proctor. Take most of time in demonstration and show each functionality and take more time in demonstration Good luck
  1. 1
    What is caching 3.Show me where caching is in your code 4.What is ORMS
    Times asked 2
    Official solution

    SimpleORM = Object Relational Mapping. Tables → Python classes. Raw SQL kam likhte ho.

    Example

    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        email = db.Column(db.String(120), unique=True)
    
    User.query.get(5)  # SELECT ... WHERE id=5
  2. 2
    Explain your project as if you are explaining to a 5 year old
    Times asked 2
    Official solution

    SimpleCode explain formula: input kya aaya → auth/validation → DB change → response/UI.

    Viva tipFunction signature + 3-4 important lines + edge case.

  3. 3
    Write code for v-for in notepad I also showed the demonstration for the project
    Times asked 2
    Official solution

    SimpleDemo script pehle se practice: 5–7 min, Admin + User roles, saare mandatory features.

    Suggested flow1) Register/login user
    2) Admin login — CRUD
    3) Approval/blacklist
    4) Booking/apply + edge case
    5) Search
    6) Logout

    Viva tipBolte-bolte dikhao. Code tab kholna jab poochhein.

Advice: Prepare for theory part well. Try giving elaborate answers for the theory questions. You can learn the rest from the viva sheet. Asked mostly from that only.
  1. 1
    level 1 viva (3pm to 3:30pm)(HMS)
    Times asked 2
    Official solution

    SimpleLevel = viva difficulty band. Level 1 usually demo + basics; higher pe live coding + deeper theory.

    Viva tipJo level assign hai uske hisaab se demo + theory ready rakho.

  2. 2
    *Asked me to download project from submition portal then ruun
    Times asked 2
    Official solution

    SimpleExaminer portal wala submitted ZIP chahta hai. Local extra changes mat dikhana.

    Suggested flow1) Portal ZIP download
    2) Extract
    3) venv + pip install -r requirements.txt
    4) flask run / python app.py

  3. 3
    *I runned the project,it took 10 minutes
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

  4. 4
    *Then he asked me show all backend jobs.
    Times asked 2
    Official solution

    SimpleLive jobs: Redis, worker, beat, crontab abhi, logs + email/CSV.

    Scheduled vs user-triggered dono dikhao. Missing feature honestly.

    Examiner 2 cheezein: simple desi line + tumhare project ki exact file.

    Pehle ID, GitHub, portal ZIP. Phir run: Redis + Flask + worker + beat + Vue. Feature demo: login, RBAC, cache hit/miss, Celery mail, search.

    Line pe ungli: input kahan, kaunsa check, query/cache/task, JSON/UI. Copilot band. Jo nahi kiya honestly bolo + kaise add karte.

    Suggested flow1) redis
    2) worker
    3) beat
    4) crontab now
    5) logs + MailHog

    Example

    CELERY_BEAT_SCHEDULE = {
      'daily-reminder': {
        'task': 'jobs.daily_reminder',
        'schedule': crontab(hour=18, minute=0),
      },
    }

    Project example: Change schedule current time. MailHog. Export button 202.

  5. 5
    *Then asked me to write vue.js for loop in notepad.
    Times asked 1
    Official solution

    SimpleVue = UI ka smart assistant. Data badlo, screen khud update. MAD1 Jinja har click pe naya HTML.

    Progressive frontend framework. Components, reactivity, directives.

    MAD2 SPA: ek index.html, Vue Router pages, Flask sirf JSON.

    Fayde: easy, SFC, docs. Vs React: templates HTML-like, course sikhata hai. Vs plain JS: baar-baar DOM mat chhedo.

    Example

    <!-- HelloWorld.vue -->
    <template>
      <h1>{{ msg }}</h1>
    </template>
    <script>
    export default { data() { return { msg: 'Hello' } } }
    </script>

    Project example: Navbar.vue + views (Login, Dashboard). data() / setup() reactive. fetch APIs.

    Viva tipFayde: easy, SFC, reactivity. Vs React: chhota learning curve. Vs plain JS: UI state auto-update.

  6. 6
    *He asked how much of ai you used i said 25%...then he said you can leave the meeting.
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

Advice: Gyzz..he is too rude😭😭...he didn't even talking to me when i was explaining my project
  1. 1
    Very sweet proctor
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

  2. 2
    - Show github collaborators
    Times asked 2
    Official solution

    SimpleGitHub repo open karo: commits, collaborators, README. Examiner check karta hai tumne khud kaam kiya.

    Example

    Settings → Collaborators
    Commits: regular messages, last-day dump nahi.

    Viva tipPrivate repo access pehle de do. Main branch submitted ZIP se match honi chahiye.

  3. 3
    - Demo of project (i gave quick demo in 5-7 mins)
    Times asked 2
    Official solution

    SimpleDemo script pehle se practice: 5–7 min, Admin + User roles, saare mandatory features.

    Suggested flow1) Register/login user
    2) Admin login — CRUD
    3) Approval/blacklist
    4) Booking/apply + edge case
    5) Search
    6) Logout

    Viva tipBolte-bolte dikhao. Code tab kholna jab poochhein.

  4. 4
    - He gave me a task: Create a button in student dashboard page which shows current student id logged in and clicking it redirects to student history page.
    Times asked 2
    Official solution

    SimpleCamera pe clearly college/IITM ID dikhao — naam aur photo match hone chahiye.

    Viva tipPehle se ID haath mein rakho, glare mat aane do. Iske baad GitHub + project run.

  5. 5
    - I took 10 mins for this task, was navigating everywhere console, thunder client to find the error, later found out that i had not used .first() while querying student object, after adding that task was completed.
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

  6. 6
    - He was impressed by my determination to complete that task and praised me.
    Times asked 2
    Official solution

    SimpleServer-Sent Events: server → browser one-way stream (text/event-stream). WebSocket full duplex hai; SSE simpler notifications ke liye.

    Example

    # client
    const es = new EventSource('/stream');
    es.onmessage = (e) => console.log(e.data);
  7. 7
    - Viva over after this one task.
    Times asked 2
    Official solution

    SimpleViva wrap-up hai. Short thanks + confirm submission ZIP latest hai.

Advice: I dont have much tips, maybe it was just my lucky day. I gave demo very quickly and just straight away became ready for his questions. He gave me task, i explained each and every line as i typed and my overall approach For error debugging too, i tried everywhere console.log(data), sending request through thunder client, so maybe he was impressed by all these.
Maintaine By Lazy IITians Team + IITM BS students Regualr for More data you have