{"id":109314,"date":"2025-07-01T21:40:18","date_gmt":"2025-07-01T16:10:18","guid":{"rendered":"https:\/\/www.mygreatlearning.com\/blog\/?page_id=109314"},"modified":"2025-07-01T21:31:02","modified_gmt":"2025-07-01T16:01:02","slug":"java-quiz","status":"publish","type":"page","link":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/","title":{"rendered":"Java Quiz"},"content":{"rendered":"\n<div id=\"java-quiz-app-wrapper\">\n    <style>\n        \/* --- General Reset & Variables --- *\/\n        html { scroll-behavior: smooth; }\n        #java-quiz-app-wrapper {\n            --primary-blue: #1A73E8; --hover-blue: #1865c9; --background-grey: #F8F9FA; --border-grey: #DADCE0; --text-primary: #202124; --text-secondary: #5F6368; --option-bg: #FFFFFF; --option-hover-bg: #F1F3F4; --color-success: #1E8E3E; --correct-bg: #E6F4EA; --correct-text: #117233; --color-danger: #D93025; --incorrect-bg: #FCE8E6; --incorrect-text: #A50E0E; --color-warning: #f59e0b; --whatsapp-green: #25D366; --twitter-blue: #1DA1F2; --linkedin-blue: #0A66C2; --telegram-blue: #24A1DE; --shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.3), 0 2px 6px 2px rgba(60, 64, 67, 0.15); --shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.1); font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif; color: var(--text-primary); box-sizing: border-box;\n        }\n        #java-quiz-app-wrapper *, #java-quiz-app-wrapper *::before, #java-quiz-app-wrapper *::after { box-sizing: inherit; }\n        #quiz-app-container { width: 1200px; max-width: 100%; border-radius: 8px; overflow: hidden; margin: 50px auto auto auto; }\n        #java-quiz-app-wrapper .quiz-screen { display: none; }\n        #java-quiz-app-wrapper .quiz-screen.active { display: block; animation: fadeIn 0.5s ease-out; }\n        @keyframes fadeIn { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } }\n        \n        \/* --- Screen Padding & Header --- *\/\n        #main-menu-view, #user-details-view, #analysis-view { padding: 2rem 3rem; }\n        #java-quiz-app-wrapper .quiz-header { text-align: center; margin-bottom: 2.5rem; }\n        #java-quiz-app-wrapper .quiz-header h1 { font-size: 2.5rem; margin: 0 0 0.5rem 0; }\n        #java-quiz-app-wrapper .quiz-header p { font-size: 1.1rem; color: var(--text-secondary); max-width: 600px; margin: 0 auto; }\n        \n        \/* --- Main Menu --- *\/\n        #java-quiz-app-wrapper .difficulty-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-bottom: 3rem; }\n        #java-quiz-app-wrapper .difficulty-card { border: 1px solid var(--border-grey); background-color: #fff; border-radius: 8px; text-align: center; padding: 1.5rem; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; display: flex; flex-direction: column; }\n        #java-quiz-app-wrapper .difficulty-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }\n        #java-quiz-app-wrapper .difficulty-card .icon { font-size: 2.5rem; margin-bottom: 1rem; }\n        #java-quiz-app-wrapper .difficulty-card h2 { font-size: 1.5rem; margin: 0 0 0.5rem 0; }\n        #java-quiz-app-wrapper .difficulty-card p { font-size: 0.9rem; color: var(--text-secondary); margin: 0 0 1.5rem 0; }\n        #java-quiz-app-wrapper .difficulty-card .features { font-size: 0.875rem; color: var(--text-secondary); text-align: left; margin-bottom: 1.5rem; flex-grow: 1; }\n        #java-quiz-app-wrapper .difficulty-card .features p { margin: 0.5rem 0; }\n        #java-quiz-app-wrapper .start-btn { width: 100%; }\n        #java-quiz-app-wrapper .difficulty-card.beginner h2 { color: var(--color-success); }\n        #java-quiz-app-wrapper .difficulty-card.intermediate h2 { color: var(--color-warning); }\n        #java-quiz-app-wrapper .difficulty-card.advanced h2 { color: var(--color-danger); }\n        #java-quiz-app-wrapper .quiz-features-section { text-align: center; background-color: #fff; padding: 2rem; border-radius: 8px; border: 1px solid var(--border-grey); }\n        #java-quiz-app-wrapper .quiz-features-section h2 { font-size: 1.5rem; margin: 0 0 1.5rem 0; }\n        #java-quiz-app-wrapper .features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; }\n        #java-quiz-app-wrapper .feature-item { display: flex; flex-direction: column; align-items: center; }\n        #java-quiz-app-wrapper .feature-item .icon { font-size: 2rem; margin-bottom: 0.5rem; }\n        \n        \/* --- Buttons --- *\/\n        #java-quiz-app-wrapper .quiz-btn { font-size: 0.875rem; font-weight: 500; padding: 0.6rem 1.5rem; border-radius: 4px; border: 1px solid var(--border-grey); cursor: pointer; transition: background-color 0.2s ease; margin-top: 20px;}\n        #java-quiz-app-wrapper .quiz-btn.primary { background-color: var(--primary-blue); color: white; border-color: var(--primary-blue); }\n        #java-quiz-app-wrapper .quiz-btn.primary:hover { background-color: var(--hover-blue); }\n        #java-quiz-app-wrapper .quiz-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n        \n        \/* --- Quiz Header & Progress --- *\/\n        #quiz-view { background-color: #fff; }\n        #quiz-header, #results-header, #analysis-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--border-grey); }\n        #quiz-header h1, #results-header h1, #analysis-header h1 { font-size: 1.25rem; margin: 0; }\n        #java-quiz-app-wrapper .header-actions { display: flex; align-items: center; gap: 1rem; }\n        #progress-stepper { display: flex; gap: 0.5rem; flex-grow: 1; margin: 0 2rem; }\n        #java-quiz-app-wrapper .step { height: 4px; flex-grow: 1; background-color: #E0E0E0; border-radius: 2px; transition: background-color 0.3s ease; }\n        #java-quiz-app-wrapper .step.active { background-color: var(--primary-blue); }\n        #java-quiz-app-wrapper .step.correct { background-color: var(--color-success); }\n        #java-quiz-app-wrapper .step.incorrect { background-color: var(--color-danger); }\n        #question-count, #timer { font-size: 0.875rem; color: var(--text-secondary); font-weight: 500; }\n        #timer { min-width: 50px; text-align: right; }\n        \n        \/* --- Quiz Body & Options --- *\/\n        #quiz-body, #analysis-body { padding: 2rem 3rem; }\n        .java-quiz-question-text { font-size: 1.25rem; margin: 0 0 2rem 0; line-height: 1.5; }\n        #options-container { display: flex; flex-direction: column; gap: 1rem; }\n        #java-quiz-app-wrapper .option { border: 1px solid var(--border-grey); border-radius: 8px; cursor: pointer; transition: all 0.2s ease-in-out; }\n        #java-quiz-app-wrapper .option:not(.disabled):hover { border-color: var(--primary-blue); box-shadow: 0 0 0 1px var(--primary-blue); }\n        #java-quiz-app-wrapper .option-label { display: block; padding: 1rem; cursor: pointer; }\n        #java-quiz-app-wrapper .option-letter { font-weight: 500; margin-right: 1rem; color: var(--primary-blue); }\n        #java-quiz-app-wrapper .option.disabled { cursor: not-allowed; }\n        #java-quiz-app-wrapper .option.correct { border-color: var(--color-success); background-color: var(--correct-bg); }\n        #java-quiz-app-wrapper .option.incorrect { border-color: var(--color-danger); background-color: var(--incorrect-bg); }\n        \n        \/* --- Feedback & Hint --- *\/\n        #java-quiz-app-wrapper .feedback { padding: 0 1rem 1rem 1rem; font-size: 0.9rem; line-height: 1.5; }\n        #java-quiz-app-wrapper .feedback-title { font-weight: bold; }\n        #java-quiz-app-wrapper .feedback-title.correct { color: var(--correct-text); }\n        #java-quiz-app-wrapper .feedback-title.incorrect { color: var(--incorrect-text); }\n        #java-quiz-app-wrapper .feedback-text { color: var(--text-secondary); margin-top: 0.25rem; }\n        #hint-container { margin-top: 2rem; }\n        #hint-toggle { color: var(--primary-blue); background: none; border: none; padding: 0; font-weight: 500; cursor: pointer; display: flex; align-items: center; gap: 0.25rem; }\n        #hint-toggle svg { width: 20px; height: 20px; transition: transform 0.2s; }\n        #hint-toggle.open svg { transform: rotate(180deg); }\n        #hint-text { margin-top: 0.5rem; color: var(--text-secondary); padding: 1rem; background-color: var(--option-hover-bg); border-radius: 8px; font-size: 0.9rem; }\n        \n        \/* --- Quiz Footer --- *\/\n        #quiz-footer, #analysis-footer { display: flex; justify-content: space-between; padding: 1.5rem 3rem; gap: 1rem; border-top: 1px solid var(--border-grey); }\n        #analysis-footer { justify-content: flex-end; }\n        \n        \/* --- User Details & Analysis --- *\/\n        #user-details-form-container { max-width: 500px; margin: 2rem auto; }\n        #user-details-form .form-group { margin-bottom: 1rem; }\n        #user-details-form label { display: block; font-weight: 500; margin-bottom: 0.5rem; text-align: left;}\n        #user-details-form input { width: 100%; padding: 0.75rem; border: 1px solid var(--border-grey); border-radius: 4px; font-size: 1rem; }\n        #user-details-form input:focus { outline: none; border-color: var(--primary-blue); box-shadow: 0 0 0 2px rgba(26, 115, 232, 0.2); }\n        #user-details-form small { display: block; margin-top: 0.5rem; color: var(--text-secondary); font-size: 0.8rem; text-align: left;}\n        #java-quiz-app-wrapper .form-actions { display: flex; gap: 1rem; margin-top: 1.5rem; }\n        #java-quiz-app-wrapper .form-actions .quiz-btn { flex: 1; }\n        #java-quiz-app-wrapper .category-analysis { margin-bottom: 2rem; }\n        #java-quiz-app-wrapper .category-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; }\n        #java-quiz-app-wrapper .category-header h3 { margin: 0; font-size: 1rem; }\n        #java-quiz-app-wrapper .category-score { font-weight: 500; }\n        #java-quiz-app-wrapper .progress-bar-bg { width: 100%; height: 8px; background: #eee; border-radius: 4px; overflow: hidden; }\n        #java-quiz-app-wrapper .progress-bar-fg { height: 100%; background: var(--primary-blue); border-radius: 4px; transition: width 0.5s ease-out; }\n        #java-quiz-app-wrapper .question-breakdown { font-size: 0.875rem; margin-top: 1rem; text-align: left; }\n        #java-quiz-app-wrapper .question-breakdown strong { color: var(--correct-text); }\n        #java-quiz-app-wrapper .question-breakdown span { color: var(--incorrect-text); }\n        #java-quiz-app-wrapper .hidden { display: none; }\n\n        \/* --- START: New Results View Styles --- *\/\n        #results-view .container { max-width: 1100px; margin: 0 auto; padding: 2rem 1rem; color: #1A202C;}\n        #results-view .page-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 2rem; flex-wrap: wrap; }\n        #results-view .header-title h1 { font-size: 2rem; font-weight: 700; margin: 0; }\n        #results-view .header-title p { color: #4A5568; margin-top: 0.25rem; }\n        #results-view .restart-quiz-btn { display: flex; align-items: center; gap: 0.5rem; padding: 0.6rem 1.2rem; background-color: #4353FF; border: 1px solid #E2E8F0; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; color: white; cursor: pointer; transition: background-color 0.2s; margin-top: 1rem; }\n        #results-view .restart-quiz-btn:hover { background-color: #4353FF; }\n        #results-view .main-content { display: grid; grid-template-columns: 1fr; gap: 2rem; }\n        #results-view .card { background-color: #ffffff; padding: 1.5rem; }\n        #results-view .score-card { text-align: center; color:gray;}\n        #results-view .score-card h2 { font-size: 1.125rem; font-weight: 600; margin-top: 0; margin-bottom: 1rem; }\n        #results-view .score-visual { position: relative; width: 10rem; height: 10rem; margin: 0 auto; }\n        #results-view .score-visual svg { width: 100%; height: 100%; }\n        #results-view .progress-ring-circle { transition: stroke-dashoffset 0.8s ease-out; transform: rotate(-90deg); transform-origin: 50% 50%; }\n        #results-view .score-text { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; }\n        #results-view .score-text .score-value { font-size: 2.25rem; font-weight: 700; }\n        #results-view .score-text .score-value span { font-size: 1.5rem; color: #4A5568; }\n        #results-view .score-text .score-label { font-size: 0.875rem; color: #4A5568; margin-top: 0.25rem; }\n        #results-view .score-breakdown { margin-top: 1.5rem; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }\n        #results-view .score-breakdown div span { font-weight: 700; font-size: 1.125rem; }\n        #results-view .score-breakdown div p { font-size: 0.75rem; color: #4A5568; margin: 0; }\n        #results-view .text-correct { color: #22c55e; }\n        #results-view .text-incorrect { color: #ef4444; }\n        #results-view .text-skipped { color: #6b7280; }\n        #results-view .analysis-card { display: flex; align-items: flex-start; gap: 1rem; justify-content: center; color:gray; }\n        #results-view .analysis-icon { flex-shrink: 0; width: 2.5rem; height: 2.5rem; background-color: #F0F1FF; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; }\n        #results-view .analysis-content h3 { font-weight: 600; margin: 0; font-size: 1.2rem; }\n        #results-view .analysis-content p { font-size: 0.875rem; color: #4A5568; margin: 0.25rem 0 1rem 0; }\n        #results-view .primary-button { width: 100%; padding: 0.6rem 1.2rem; background-color: #4353FF; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; color: #ffffff; border: none; cursor: pointer; transition: background-color 0.2s; }\n        #results-view .primary-button:hover { background-color: #2539cc; }\n        #results-view .learning-journey-card h2 { font-size: 1.5rem; font-weight: 700; margin-top: 0; }\n        #results-view .learning-journey-card > p { color: #4A5568; margin: 0.25rem 0 2rem 0; }\n        #results-view .course-list { display: flex; flex-direction: column; gap: 1rem; }\n        #results-view .course-card { padding: 1.25rem; border: 1px solid #E2E8F0; border-radius: 0.75rem; transition: box-shadow 0.2s, border-color 0.2s; }\n        #results-view .course-card:hover { border-color: #4353FF; box-shadow: 0 4px 6px -1px rgb(0 0 0 \/ 0.1), 0 2px 4px -2px rgb(0 0 0 \/ 0.1); }\n        #results-view .course-card-content { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 3px; }\n        #results-view .course-details h3 { font-weight: 700; margin: 0; font-size: 1rem; }\n        #results-view .course-details p { font-size: 0.875rem; color: #4A5568; margin-top: 0.25rem; max-width: 36rem; }\n        #results-view .course-button { margin-top: 1rem; flex-shrink: 0; padding: 0.3rem 1rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; cursor: pointer; border: 1px solid #4353FF; transition: background-color 0.2s; text-decoration: none; display: inline-block; }\n        #results-view .btn-primary { background-color: #4353FF; color: #ffffff; }\n        #results-view .btn-primary:hover { background-color: #2539cc; }\n        #results-view .page-footer { margin-top: 2rem; padding: 2rem; }\n        #results-view .footer-content { display: grid; grid-template-columns: 1fr; gap: 2rem; }\n        #results-view .footer-column h3 { font-size: 1.125rem; font-weight: 700; margin: 0; }\n        #results-view .footer-column p { font-size: 0.875rem; color: #4A5568; margin-top: 0.25rem; margin-bottom: 1rem; }\n        #results-view .resource-links { display: flex; flex-wrap: wrap; gap: 0.5rem; }\n        #results-view .resource-link { padding: 0.5rem 1rem; background-color: #f3f4f6; color: #4A5568; font-size: 0.875rem; font-weight: 500; border-radius: 9999px; text-decoration: none; transition: background-color 0.2s, color 0.2s; }\n        #results-view .resource-link:hover { background-color: #F0F1FF; color: #4353FF; }\n        #results-view .share-icons { display: flex; align-items: center; gap: 0.75rem; }\n        #results-view .share-icon { width: 2.5rem; height: 2.5rem; display: flex; align-items: center; justify-content: center; background-color: #f3f4f6; border-radius: 9999px; color: #4A5568; transition: background-color 0.2s; }\n        #results-view .share-icon:hover { background-color: #e5e7eb; }\n        #results-view .share-icon svg { width: 1.25rem; height: 1.25rem; }\n        \/* --- END: New Results View Styles --- *\/\n\n        \/* --- Media Queries (Responsiveness) --- *\/\n        @media (max-width: 768px) {\n            #main-menu-view, #quiz-body, #results-body, #user-details-view, #analysis-view, #results-view .container { padding: 1.5rem; }\n            #java-quiz-app-wrapper .quiz-header h1 { font-size: 2rem; }\n            #java-quiz-app-wrapper .difficulty-grid { grid-template-columns: 1fr; }\n            #progress-stepper { display: none; }\n            #quiz-header h1 { font-size: 1rem; }\n            #quiz-footer { flex-direction: column-reverse; gap: 5rem; margin-bottom: -20px; }\n            #quiz-footer>div { display: flex; justify-content: flex-end; width: 100%; gap: 0.5rem; }\n        }\n        @media (min-width: 640px) {\n            #results-view .page-header { flex-wrap: nowrap; }\n            #results-view .restart-quiz-btn { margin-top: 0; }\n            #results-view .course-button { margin-top: 0; width: auto; }\n            #results-view .course-card-content { flex-wrap: nowrap; }\n        }\n        @media (min-width: 768px) {\n            #results-view .footer-content { grid-template-columns: 2fr 1fr; }\n        }\n        @media (min-width: 1024px) {\n            #results-view .main-content { grid-template-columns: 1fr 2fr; }\n        }\n    <\/style>\n    <div id=\"quiz-app-container\">\n        <div id=\"main-menu-view\" class=\"quiz-screen active\">\n            <div class=\"quiz-header\"><h1 id=\"java-quiz-challenge\">Java Quiz Challenge<\/h1><p>Test your Java knowledge with our comprehensive MCQs. Choose your difficulty and share your score with friends!<\/p><\/div>\n            <div class=\"difficulty-grid\">\n                <div class=\"difficulty-card beginner\" onclick=\"showUserDetailsView('beginner')\">\n                    <div class=\"icon\">\u2b50<\/div><h2 id=\"beginner\">Beginner<\/h2><p>Perfect for Java newcomers<\/p>\n                    <div class=\"features\"><p>\u2022 Core Concepts & Syntax<\/p><p>\u2022 Keywords & Data Types<\/p><p>\u2022 Basic OOP<\/p><p>\u2022 10 Questions<\/p><\/div>\n                    <button class=\"quiz-btn primary start-btn\">Start Beginner Quiz<\/button>\n                <\/div>\n                <div class=\"difficulty-card intermediate\" onclick=\"showUserDetailsView('intermediate')\">\n                    <div class=\"icon\">\ud83c\udfc6<\/div><h2 id=\"intermediate\">Intermediate<\/h2><p>For those with some experience<\/p>\n                    <div class=\"features\"><p>\u2022 Advanced OOP Concepts<\/p><p>\u2022 Collections Framework<\/p><p>\u2022 Exception Handling<\/p><p>\u2022 15 Questions<\/p><\/div>\n                    <button class=\"quiz-btn primary start-btn\">Start Intermediate Quiz<\/button>\n                <\/div>\n                <div class=\"difficulty-card advanced\" onclick=\"showUserDetailsView('advanced')\">\n                    <div class=\"icon\">\ud83e\udd47<\/div><h2 id=\"advanced\">Advanced<\/h2><p>A challenge for Java experts<\/p>\n                    <div class=\"features\"><p>\u2022 Concurrency & Threads<\/p><p>\u2022 Java 8+ Features<\/p><p>\u2022 JVM Internals<\/p><p>\u2022 15 Questions<\/p><\/div>\n                    <button class=\"quiz-btn primary start-btn\">Start Advanced Quiz<\/button>\n                <\/div>\n            <\/div>\n            <div class=\"quiz-features-section\">\n                <h2 id=\"quiz-features\">Quiz Features<\/h2>\n                <div class=\"features-grid\">\n                    <div class=\"feature-item\"><div class=\"icon\">\ud83e\udde0<\/div><p>Detailed Feedback<\/p><\/div>\n                    <div class=\"feature-item\"><div class=\"icon\">\ud83d\udcca<\/div><p>Performance Analysis<\/p><\/div>\n                    <div class=\"feature-item\"><div class=\"icon\">\ud83d\udca1<\/div><p>Helpful Hints<\/p><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div id=\"user-details-view\" class=\"quiz-screen\">\n            <div class=\"quiz-header\">\n                <h1 id=\"almost-there\">Almost There!<\/h1>\n                <p>Just a few details before you start the quiz.<\/p>\n            <\/div>\n            <div id=\"user-details-form-container\">\n               <form id=\"user-details-form\">\n                    <div class=\"form-group\"><label for=\"user-name\">Your Name<\/label><input type=\"text\" id=\"user-name\" name=\"user-name\" required><\/div>\n                    <div class=\"form-group\"><label for=\"user-email\">Your Email<\/label><input type=\"email\" id=\"user-email\" name=\"user-email\" required><\/div>\n                    <small>You will also get free access to exclusive content through email.<\/small>\n                    <div class=\"form-actions\">\n                        <button type=\"button\" id=\"back-to-menu-btn\" class=\"quiz-btn\">Back to Menu<\/button>\n                        <button type=\"submit\" class=\"quiz-btn primary\">Let's Go!<\/button>\n                    <\/div>\n                <\/form>\n            <\/div>\n        <\/div>\n        <div id=\"quiz-view\" class=\"quiz-screen\">\n            <header id=\"quiz-header\">\n                <h1 id=\"java-quiz\">Java Quiz<\/h1>\n                <div id=\"progress-stepper\"><\/div>\n                <div class=\"header-actions\"><div id=\"timer\">00:00<\/div><div id=\"question-count\">1\/10<\/div><\/div>\n            <\/header>\n            <main id=\"quiz-body\">\n                <h2 class=\"java-quiz-question-text\" style=\"font-size: 22px;\" class=\"java-quiz-question-text\" style=\"font-size: 22px;\" id=\"question-will-appear-here\">Question will appear here.<\/h2>\n                <div id=\"options-container\"><\/div>\n                <div id=\"hint-container\">\n                    <button id=\"hint-toggle\">Show hint <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\"><\/path><\/svg><\/button>\n                    <div id=\"hint-text\" class=\"hidden\">Hint text goes here.<\/div>\n                <\/div>\n            <\/main>\n            <footer id=\"quiz-footer\">\n                <button class=\"quiz-btn\" onclick=\"showMainMenu(true)\">Back to Menu<\/button>\n                <div><button id=\"back-btn\" class=\"quiz-btn\">Back<\/button><button id=\"next-btn\" class=\"quiz-btn primary\">Next<\/button><\/div>\n            <\/footer>\n        <\/div>\n        \n        <div id=\"results-view\" class=\"quiz-screen\">\n            <div class=\"container\">\n                <header class=\"page-header\">\n                    <div class=\"header-title\">\n                        <h1 id=\"quiz-completed\">Quiz Completed!<\/h1>\n                        <p>Great effort! Here's a summary of your performance.<\/p>\n                    <\/div>\n                    <button class=\"restart-quiz-btn\" onclick=\"showMainMenu(false)\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"\/><path d=\"M3 3v5h5\"\/><\/svg>\n                        <span>Restart Quiz \/ Main Menu<\/span>\n                    <\/button>\n                <\/header>\n        \n                <main class=\"main-content\">\n                    <aside class=\"left-column\">\n                        <div class=\"card score-card\">\n                            <h2 id=\"your-score\">Your Score<\/h2>\n                            <div class=\"score-visual\">\n                                 <svg viewBox=\"0 0 100 100\">\n                                    <circle stroke=\"#e5e7eb\" stroke-width=\"10\" fill=\"transparent\" r=\"45\" cx=\"50\" cy=\"50\" \/>\n                                    <circle class=\"progress-ring-circle\" stroke=\"#4353FF\" stroke-width=\"10\" stroke-dasharray=\"282.6\" stroke-dashoffset=\"282.6\" stroke-linecap=\"round\" fill=\"transparent\" r=\"45\" cx=\"50\" cy=\"50\" id=\"score-circle\" \/>\n                                <\/svg>\n                                <div class=\"score-text\">\n                                    <span class=\"score-value\" id=\"new-score-value\">0<span>\/10<\/span><\/span>\n                                    <span class=\"score-label\" id=\"new-accuracy-label\">0% Accuracy<\/span>\n                                <\/div>\n                            <\/div>\n                            <div class=\"score-breakdown\">\n                                <div><span class=\"text-correct\" id=\"new-right-value\">0<\/span><p>Correct<\/p><\/div>\n                                <div><span class=\"text-incorrect\" id=\"new-wrong-value\">0<\/span><p>Incorrect<\/p><\/div>\n                                <div><span class=\"text-skipped\" id=\"new-skipped-value\">10<\/span><p>Skipped<\/p><\/div>\n                            <\/div>\n                        <\/div>\n        \n                        <div class=\"card analysis-card\" style=\"margin-top: 2rem;\">\n                            <div class=\"analysis-icon\">\n                               <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#4353FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"><\/path><\/svg>\n                            <\/div>\n                            <div class=\"analysis-content\">\n                                <h3 id=\"strengths-and-growth-areas\">Strengths and growth areas<\/h3>\n                                <p>Get a summary of your key strengths and discover areas where you can focus your studies.<\/p>\n                                <button class=\"primary-button\" id=\"analyse-btn\">Analyze my performance<\/button>\n                            <\/div>\n                        <\/div>\n                    <\/aside>\n        \n                    <section class=\"right-column\">\n                        <div class=\"card learning-journey-card\">\n                            <h2 id=\"continue-your-learning-journey\">Continue Your Learning Journey<\/h2>\n                            <p>Here are some courses that can help you level up your Java skills.<\/p>\n                            <div class=\"course-list\">\n                                <div class=\"course-card\">\n                                    <div class=\"course-card-content\">\n                                        <div class=\"course-details\">\n                                            <h3 id=\"free-java-programming-course\">Free Java Programming Course<\/h3>\n                                            <p>Learn Java basics including variables, data types, arrays, operators, and functions. Gain hands-on experience and build a strong foundation.<\/p>\n                                        <\/div>\n                                        <a href=\"https:\/\/www.mygreatlearning.com\/academy\/learn-for-free\/courses\/java-programming?utm_source=blog\" target=\"_blank\" rel=\"noopener\" class=\"course-button btn-primary\">Enroll for Free<\/a>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"course-card\">\n                                    <div class=\"course-card-content\">\n                                        <div class=\"course-details\">\n                                            <h3 id=\"data-structures-and-algorithms-in-java\">Data Structures and Algorithms in Java<\/h3>\n                                            <p>Understand data structures, algorithms, recursion, and sorting techniques. Complete practical exercises to strengthen your coding skills.<\/p>\n                                        <\/div>\n                                        <a href=\"https:\/\/www.mygreatlearning.com\/academy\/learn-for-free\/courses\/data-structures-and-algorithms-in-java?utm_source=blog\" target=\"_blank\" rel=\"noopener\" class=\"course-button btn-primary\">Enroll for Free<\/a>\n                                    <\/div>\n                                <\/div>\n                                 <div class=\"course-card\">\n                                    <div class=\"course-card-content\">\n                                        <div class=\"course-details\">\n                                            <h3 id=\"advanced-java-programming-course\">Advanced Java Programming Course<\/h3>\n                                            <p>Learn multithreading, JDBC, Servlets, JSP, Spring, and Hibernate. Work on real projects to apply advanced Java concepts and become job-ready.<\/p>\n                                        <\/div>\n                                        <a href=\"https:\/\/www.mygreatlearning.com\/academy\/premium\/advanced-java-programming-essentials?utm_source=blog\" target=\"_blank\" rel=\"noopener\" class=\"course-button btn-primary\">Enroll Now<\/a>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/section>\n                <\/main>\n                \n                <footer class=\"card page-footer\">\n                    <div class=\"footer-content\">\n                        <div class=\"footer-column\">\n                            <h3 id=\"explore-more-resources\">Explore More Resources<\/h3>\n                            <p class=\"text-sm text-brand-text-secondary mt-1 mb-4\">Dive deeper into topics that interest you.<\/p>\n                            <div class=\"resource-links\">\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/quizzes\/\" class=\"resource-link\">Quizzes and MCQs<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/tools-and-compilers\/\" class=\"resource-link\">Online Compilers<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/exercises\/\" class=\"resource-link\">Coding Practice<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/interview-questions\/\" class=\"resource-link\">Interview Questions<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/careers-and-roadmap\/\" class=\"resource-link\">Careers and Roadmaps<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/project-ideas\/\" class=\"resource-link\">Project Ideas<\/a>\n                            <\/div>\n                        <\/div>\n        \n                        <div class=\"footer-column\">\n                             <h3 id=\"share-your-achievement\">Share Your Achievement<\/h3>\n                             <p>Let your network know about your progress.<\/p>\n                             <div class=\"share-icons\">\n                                 <a href=\"#\" id=\"new-share-whatsapp\" class=\"share-icon\" aria-label=\"WhatsApp\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"128\" height=\"128\" aria-labelledby=\"whTitle\" role=\"img\">\n                                    <title id=\"whTitle\">WhatsApp-style icon (custom color #4a5568)<\/title>\n                                    <defs>\n                                        <filter id=\"shadow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\"><feDropShadow dx=\"0\" dy=\"1.5\" stdDeviation=\"1.2\" flood-color=\"#000\" flood-opacity=\"0.18\"\/><\/filter>\n                                        <linearGradient id=\"baseGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0%\" stop-color=\"#6b7280\"\/><stop offset=\"100%\" stop-color=\"#4a5568\"\/><\/linearGradient>\n                                    <\/defs>\n                                    <path d=\"M12 2C6.486 2 2 6.486 2 12c0 1.653.403 3.213 1.107 4.595L2 22l5.467-1.446A9.963 9.963 0 0 0 12 22c5.514 0 10-4.486 10-10S17.514 2 12 2z\" fill=\"#000\" opacity=\"0\" filter=\"url(#shadow)\"\/>\n                                    <path d=\"M12 2C6.486 2 2 6.486 2 12c0 1.653.403 3.213 1.107 4.595L2 22l5.467-1.446A9.963 9.963 0 0 0 12 22c5.514 0 10-4.486 10-10S17.514 2 12 2z\" fill=\"url(#baseGrad)\" stroke=\"#ffffff\" stroke-width=\"0.9\" stroke-linejoin=\"round\"\/>\n                                    <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.472-.149-.672.15-.199.297-.768.967-.941 1.165-.173.199-.347.223-.644.074-.297-.149-1.255-.462-2.39-1.475-.884-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.151-.173.201-.298.301-.497.1-.199.05-.373-.025-.522-.075-.148-.672-1.612-.922-2.206-.242-.579-.487-.5-.672-.51l-.576-.01c-.199 0-.523.074-.798.373-.273.297-1.04 1.017-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.095 3.2 5.076 4.487 2.981 1.289 2.981.86 3.517.807.536-.05 1.758-.718 2.006-1.41.248-.692.248-1.285.173-1.41-.074-.124-.273-.198-.57-.347z\" fill=\"#ffffff\"\/>\n                                <\/svg><\/a>\n                                <a href=\"#\" id=\"new-share-linkedin\" class=\"share-icon\" aria-label=\"LinkedIn\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M18.5,18.5V13.2A3.26,3.26 0 0,0 15.24,9.94C14.39,9.94 13.4,10.43 12.92,11.24V10.13H10.13V18.5H12.92V13.57C12.92,12.8 13.54,12.17 14.31,12.17A1.4,1.4 0 0,1 15.71,13.57V18.5H18.5M6.88,8.56A1.68,1.68 0 0,0 8.56,6.88C8.56,6 7.81,5.25 6.88,5.25A1.69,1.69 0 0,0 5.2,6.88C5.2,7.81 5.95,8.56 6.88,8.56M8.27,18.5V10.13H5.5V18.5H8.27Z\" \/><\/svg><\/a>\n                                <a href=\"#\" id=\"new-share-telegram\" class=\"share-icon\" aria-label=\"Telegram\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M2.01 21L23 12L2.01 3L2 10L17 12L2 14L2.01 21Z\" \/><\/svg><\/a>\n                                <a href=\"#\" id=\"new-share-twitter\" class=\"share-icon\" aria-label=\"Twitter\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 2.9,4.79C2.53,5.42 2.33,6.15 2.33,6.94C2.33,8.43 3.11,9.75 4.19,10.55C3.47,10.53 2.8,10.33 2.2,10.03C2.2,10.05 2.2,10.07 2.2,10.08C2.2,12.24 3.73,14.04 5.7,14.44C5.31,14.55 4.91,14.61 4.5,14.61C4.22,14.61 3.95,14.58 3.69,14.53C4.24,16.33 5.95,17.55 7.95,17.59C6.46,18.8 4.57,19.56 2.5,19.56C2.17,19.56 1.85,19.54 1.53,19.5C3.55,20.84 5.9,21.6 8.41,21.6C16,21.6 20.34,15.22 20.34,9.73C20.34,9.56 20.33,9.4 20.32,9.23C21.16,8.63 21.88,7.87 22.46,7.01C21.74,7.33 20.97,7.55 20.18,7.65C20.99,7.16 21.64,6.38 21.96,5.43L22.46,6Z\" \/><\/svg><\/a>\n                             <\/div>\n                        <\/div>\n                    <\/div>\n                <\/footer>\n            <\/div>\n        <\/div>\n\n        <div id=\"analysis-view\" class=\"quiz-screen\">\n            <header id=\"analysis-header\"><h1 id=\"performance-analysis\">Performance Analysis<\/h1><\/header>\n            <main id=\"analysis-body\"><\/main>\n            <footer id=\"analysis-footer\">\n                <button id=\"back-to-results-btn\" class=\"quiz-btn primary\">Back to Results<\/button>\n            <\/footer>\n        <\/div>\n    <\/div>\n    <script>\n    document.addEventListener('DOMContentLoaded', function() {\n        \/\/ --- DATA ---\n        const quizData = {\n            'beginner': [\n                {\n                    'category': \"Core Concepts\",\n                    'question': \"What is the entry point of a Java program?\",\n                    'options': {\n                        'A': \"main()\",\n                        'B': \"run()\",\n                        'C': \"public static void main(String[] args)\",\n                        'D': \"start()\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"This specific method signature is what the Java Virtual Machine (JVM) looks for to start execution.\",\n                    'feedback': {\n                        'C': \"Correct! The JVM starts execution by invoking the `main` method, which must have this exact signature.\",\n                        'A': \"While the method is named `main`, it requires the full signature including `public`, `static`, `void`, and the `String[]` argument to be the entry point.\"\n                    }\n                },\n                {\n                    'category': \"Keywords\",\n                    'question': \"Which keyword is used to declare a constant in Java?\",\n                    'options': {\n                        'A': \"const\",\n                        'B': \"final\",\n                        'C': \"static\",\n                        'D': \"let\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"This keyword indicates that the value of the variable cannot be changed after it is assigned.\",\n                    'feedback': {\n                        'B': \"Correct! The `final` keyword is used to create constants whose values cannot be modified.\",\n                        'A': \"`const` is a reserved keyword in Java but is not used. It is used in other languages like C++ and JavaScript.\",\n                        'C': \"`static` means the variable belongs to the class, not an instance, but it doesn't make it a constant.\"\n                    }\n                },\n                {\n                    'category': \"Data Types\",\n                    'question': \"What is the default value of a boolean variable in Java?\",\n                    'options': {\n                        'A': \"false\",\n                        'B': \"true\",\n                        'C': \"0\",\n                        'D': \"null\"\n                    },\n                    'answer': \"A\",\n                    'hint': \"For primitive types, Java assigns a default value if one isn't explicitly provided. For boolean, it's one of its two possible values.\",\n                    'feedback': {\n                        'A': \"Correct! If a boolean instance variable is not initialized, it defaults to `false`.\",\n                        'D': \"`null` is the default value for object references, not primitive types.\"\n                    }\n                },\n                {\n                    'category': \"Syntax\",\n                    'question': \"How do you create a single-line comment in Java?\",\n                    'options': {\n                        'A': \"\/* comment *\/\",\n                        'B': \"# comment\",\n                        'C': \"\/\/ comment\",\n                        'D': \"-- comment\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"This syntax is common in many C-style languages.\",\n                    'feedback': {\n                        'C': \"Correct! Two forward slashes `\/\/` create a comment that lasts until the end of the line.\",\n                        'A': \"This syntax is used for multi-line comments in Java.\",\n                        'B': \"The hash symbol is used for comments in languages like Python.\"\n                    }\n                },\n                {\n                    'category': \"Core Concepts\",\n                    'question': \"What does JVM stand for?\",\n                    'options': {\n                        'A': \"Java Virtual Machine\",\n                        'B': \"Java Very Modern\",\n                        'C': \"Java Visual Machine\",\n                        'D': \"Just Virtual Machine\"\n                    },\n                    'answer': \"A\",\n                    'hint': \"It's the runtime engine that allows Java code to be 'write once, run anywhere'.\",\n                    'feedback': {\n                        'A': \"Correct! The Java Virtual Machine is an abstract machine that enables a computer to run a Java program.\"\n                    }\n                },\n                {\n                    'category': \"Operators\",\n                    'question': \"What is the output of `System.out.println(5 \/ 2);`?\",\n                    'options': {\n                        'A': \"2.5\",\n                        'B': \"3\",\n                        'C': \"2\",\n                        'D': \"Compilation Error\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"When dividing two integers in Java, the result is also an integer, and any fractional part is discarded.\",\n                    'feedback': {\n                        'C': \"Correct! This is integer division. The fractional part (.5) is truncated, resulting in 2.\",\n                        'A': \"To get 2.5, at least one of the numbers would need to be a floating-point type, like `5.0 \/ 2`.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"Which class is the superclass of all classes in Java?\",\n                    'options': {\n                        'A': \"Main\",\n                        'B': \"Object\",\n                        'C': \"System\",\n                        'D': \"Class\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"This class is at the top of the class hierarchy in the `java.lang` package.\",\n                    'feedback': {\n                        'B': \"Correct! Every class in Java is a direct or indirect subclass of the `Object` class.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"How do you create an instance of a class named `MyClass`?\",\n                    'options': {\n                        'A': \"MyClass.new()\",\n                        'B': \"create MyClass()\",\n                        'C': \"MyClass()\",\n                        'D': \"new MyClass()\"\n                    },\n                    'answer': \"D\",\n                    'hint': \"Java uses a specific keyword to allocate memory for a new object.\",\n                    'feedback': {\n                        'D': \"Correct! The `new` keyword is used to create a new object instance, followed by a call to the class's constructor.\"\n                    }\n                },\n                {\n                    'category': \"Standard Library\",\n                    'question': \"Which method is used to get the length of a string in Java?\",\n                    'options': {\n                        'A': \"length()\",\n                        'B': \"size()\",\n                        'C': \"len()\",\n                        'D': \"getLength()\"\n                    },\n                    'answer': \"A\",\n                    'hint': \"For arrays, you use a `length` property, but for String objects, it's a method call.\",\n                    'feedback': {\n                        'A': \"Correct! The `String` class provides the `length()` method to find the number of characters.\",\n                        'B': \"The `size()` method is typically used for Collection classes like `ArrayList`.\"\n                    }\n                },\n                {\n                    'category': \"Core Concepts\",\n                    'question': \"Which package is imported by default in every Java program?\",\n                    'options': {\n                        'A': \"java.util\",\n                        'B': \"java.io\",\n                        'C': \"java.lang\",\n                        'D': \"java.net\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"This package contains fundamental classes like `Object`, `String`, `System`, and `Math`.\",\n                    'feedback': {\n                        'C': \"Correct! The `java.lang` package is automatically imported by the compiler, so you don't need an explicit `import` statement for its classes.\"\n                    }\n                }\n            ],\n            'intermediate': [\n                {\n                    'category': \"OOP\",\n                    'question': \"What is the difference between `==` and `.equals()` for Objects?\",\n                    'options': {\n                        'A': \"No difference\",\n                        'B': \"== checks reference, .equals() checks value\",\n                        'C': \".equals() checks reference, == checks value\",\n                        'D': \"Both check for value equality\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"One checks if two variables point to the exact same object in memory, while the other is meant to check if two objects are meaningfully equivalent.\",\n                    'feedback': {\n                        'B': \"Correct! The `==` operator compares object references (memory addresses), while the `.equals()` method is intended to compare the actual contents or state of the objects.\"\n                    }\n                },\n                {\n                    'category': \"Exception Handling\",\n                    'question': \"Which of these is a checked exception?\",\n                    'options': {\n                        'A': \"RuntimeException\",\n                        'B': \"NullPointerException\",\n                        'C': \"IOException\",\n                        'D': \"ArrayIndexOutOfBoundsException\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"Checked exceptions must be handled (with try-catch) or declared (with throws) by the compiler.\",\n                    'feedback': {\n                        'C': \"Correct! `IOException` is a checked exception because operations like file I\/O can predictably fail, and the compiler forces you to handle that possibility.\",\n                        'A': \"`RuntimeException` and its subclasses (like B and D) are unchecked exceptions.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"What is method overloading?\",\n                    'options': {\n                        'A': \"Methods with the same name but different parameters\",\n                        'B': \"Methods with different names but the same parameters\",\n                        'C': \"A method in a subclass with the same name as in the superclass\",\n                        'D': \"Creating multiple instances of a method\"\n                    },\n                    'answer': \"A\",\n                    'hint': \"This allows you to define multiple methods that perform similar actions but with different types or numbers of inputs.\",\n                    'feedback': {\n                        'A': \"Correct! Method overloading increases the readability of the program by allowing you to use the same name for methods that have different parameter lists.\",\n                        'C': \"This describes method overriding, not overloading.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"What is method overriding?\",\n                    'options': {\n                        'A': \"Defining multiple methods with the same name in the same class\",\n                        'B': \"Providing a specific implementation for a method already defined in a superclass\",\n                        'C': \"Hiding a method from a subclass\",\n                        'D': \"Calling a method from a superclass\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"This is a key feature of polymorphism, where a subclass can provide its own version of a method from its parent class.\",\n                    'feedback': {\n                        'B': \"Correct! Method overriding allows a subclass to provide a specialized implementation of a method that is already provided by one of its superclasses.\",\n                        'A': \"This describes method overloading.\"\n                    }\n                },\n                {\n                    'category': \"Collections\",\n                    'question': \"Which collection class stores elements in a key-value pair?\",\n                    'options': {\n                        'A': \"ArrayList\",\n                        'B': \"HashSet\",\n                        'C': \"HashMap\",\n                        'D': \"LinkedList\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"Think of a dictionary, where each 'word' (key) has a 'definition' (value).\",\n                    'feedback': {\n                        'C': \"Correct! `HashMap` is the primary implementation of the `Map` interface and stores data as key-value pairs.\"\n                    }\n                },\n                {\n                    'category': \"Collections\",\n                    'question': \"Which collection guarantees the uniqueness of its elements?\",\n                    'options': {\n                        'A': \"List\",\n                        'B': \"Map\",\n                        'C': \"Queue\",\n                        'D': \"Set\"\n                    },\n                    'answer': \"D\",\n                    'hint': \"This type of collection behaves like a mathematical set, which cannot contain duplicate elements.\",\n                    'feedback': {\n                        'D': \"Correct! A `Set` is a collection that contains no duplicate elements. `HashSet` and `TreeSet` are common implementations.\",\n                        'A': \"A `List` can contain duplicate elements.\"\n                    }\n                },\n                {\n                    'category': \"Keywords\",\n                    'question': \"What does the `static` keyword mean when applied to a method?\",\n                    'options': {\n                        'A': \"The method can only be called once\",\n                        'B': \"The method belongs to the class, not an instance of the class\",\n                        'C': \"The method cannot be changed\",\n                        'D': \"The method is automatically thread-safe\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"You can call this type of method directly on the class name without creating an object first.\",\n                    'feedback': {\n                        'B': \"Correct! A static method is associated with the class itself rather than with any object. Therefore, you don't need to create an instance of the class to call it.\"\n                    }\n                },\n                {\n                    'category': \"Exception Handling\",\n                    'question': \"What is the purpose of the `finally` block?\",\n                    'options': {\n                        'A': \"It executes only if an exception occurs\",\n                        'B': \"It is the last block of code in a method\",\n                        'C': \"It always executes, whether an exception is thrown or not\",\n                        'D': \"It executes only if no exception occurs\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"This block is essential for cleanup code, like closing a file or a network connection, that must run regardless of what happens in the `try` block.\",\n                    'feedback': {\n                        'C': \"Correct! The `finally` block is guaranteed to execute after the `try` and any `catch` blocks, making it ideal for resource deallocation.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"What is an abstract class?\",\n                    'options': {\n                        'A': \"A class with no methods\",\n                        'B': \"A class that cannot be instantiated and may contain abstract methods\",\n                        'C': \"A class that only has static methods\",\n                        'D': \"A final class\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"It serves as a blueprint for other classes, but you cannot create an object directly from it.\",\n                    'feedback': {\n                        'B': \"Correct! An abstract class is a restricted class that cannot be used to create objects and often serves as a base for subclasses to extend.\"\n                    }\n                },\n                {\n                    'category': \"Collections\",\n                    'question': \"What is the main difference between `ArrayList` and `LinkedList`?\",\n                    'options': {\n                        'A': \"ArrayList is synchronized, LinkedList is not\",\n                        'B': \"LinkedList is faster for random access (get by index)\",\n                        'C': \"ArrayList cannot store null values\",\n                        'D': \"ArrayList uses a dynamic array, LinkedList uses a doubly-linked list\"\n                    },\n                    'answer': \"D\",\n                    'hint': \"Their underlying data structures give them different performance characteristics for adding, removing, and accessing elements.\",\n                    'feedback': {\n                        'D': \"Correct! This fundamental difference means `ArrayList` is faster for random access, while `LinkedList` is generally faster for insertions and deletions in the middle of the list.\",\n                        'A': \"Neither is synchronized by default; `Vector` is a synchronized alternative to `ArrayList`.\"\n                    }\n                },\n                {\n                    'category': \"Keywords\",\n                    'question': \"Which keyword is used to prevent a method from being overridden?\",\n                    'options': {\n                        'A': \"static\",\n                        'B': \"private\",\n                        'C': \"final\",\n                        'D': \"abstract\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"The same keyword used to create constants can also be applied to methods and classes to prevent modification or extension.\",\n                    'feedback': {\n                        'C': \"Correct! A `final` method cannot be overridden by any subclass.\",\n                        'B': \"`private` methods are not inherited and thus cannot be overridden, but `final` is the explicit keyword for this purpose on non-private methods.\"\n                    }\n                },\n                {\n                    'category': \"Core Concepts\",\n                    'question': \"What is the difference between `StringBuilder` and `String`?\",\n                    'options': {\n                        'A': \"No difference, StringBuilder is just an older name\",\n                        'B': \"StringBuilder is mutable, String is immutable\",\n                        'C': \"String is mutable, StringBuilder is immutable\",\n                        'D': \"StringBuilder is for numbers, String is for text\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"One creates a new object every time it's modified, while the other can be modified in place, which is more efficient for frequent changes.\",\n                    'feedback': {\n                        'B': \"Correct! `String` objects are immutable, meaning any modification creates a new `String` object. `StringBuilder` is mutable, allowing for efficient string manipulation without creating new objects.\"\n                    }\n                },\n                {\n                    'category': \"Core Concepts\",\n                    'question': \"What is garbage collection in Java?\",\n                    'options': {\n                        'A': \"A process to clean up temporary files\",\n                        'B': \"Manual memory deallocation by the programmer\",\n                        'C': \"Automatic memory management to reclaim unused objects\",\n                        'D': \"A tool for finding bugs in code\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"This process frees the developer from having to manually manage memory allocation and deallocation.\",\n                    'feedback': {\n                        'C': \"Correct! Garbage collection is the process of finding and deleting objects that are no longer referenced by the program, thus freeing up memory.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"Can you instantiate an interface in Java?\",\n                    'options': {\n                        'A': \"Yes, directly using the 'new' keyword\",\n                        'B': \"Only if it has default methods\",\n                        'C': \"Yes, by using an anonymous inner class\",\n                        'D': \"No, an interface cannot be instantiated\"\n                    },\n                    'answer': \"D\",\n                    'hint': \"Interfaces are contracts for classes to implement; they are not concrete classes themselves.\",\n                    'feedback': {\n                        'D': \"Correct! You cannot create an instance of an interface. You must create an instance of a class that *implements* the interface.\",\n                        'C': \"While you can use an anonymous inner class to create an object that implements an interface on the fly (`new MyInterface() { ... }`), you are instantiating the anonymous class, not the interface itself.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"What is the access level of a `protected` member?\",\n                    'options': {\n                        'A': \"Accessible only within the same class\",\n                        'B': \"Accessible within the package and by subclasses outside the package\",\n                        'C': \"Accessible only within the same package\",\n                        'D': \"Accessible from anywhere\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"It's more permissive than package-private but less permissive than `public`.\",\n                    'feedback': {\n                        'B': \"Correct! `protected` members are accessible to classes in the same package and to subclasses, even if they are in different packages.\",\n                        'C': \"This describes default (package-private) access.\"\n                    }\n                }\n            ],\n            'advanced': [\n                {\n                    'category': \"Java 8+\",\n                    'question': \"What is a lambda expression?\",\n                    'options': {\n                        'A': \"A named method with a complex signature\",\n                        'B': \"A class that can only be instantiated once\",\n                        'C': \"An anonymous function that can be treated as a value\",\n                        'D': \"A type of loop for collections\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"They provide a clear and concise way to represent one method interface using an expression, often used with the Stream API.\",\n                    'feedback': {\n                        'C': \"Correct! A lambda expression is a short block of code which takes in parameters and returns a value. They are similar to methods but do not need a name.\"\n                    }\n                },\n                {\n                    'category': \"Concurrency\",\n                    'question': \"What is a major difference between `ConcurrentHashMap` and `Collections.synchronizedMap`?\",\n                    'options': {\n                        'A': \"ConcurrentHashMap is faster because it locks the entire map for all operations.\",\n                        'B': \"synchronizedMap is faster because it uses fine-grained locking on segments of the map.\",\n                        'C': \"ConcurrentHashMap uses fine-grained locking, allowing multiple threads to access it concurrently.\",\n                        'D': \"synchronizedMap allows null keys and values, while ConcurrentHashMap does not.\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"One locks the entire collection for any modification, while the other uses a more sophisticated technique to allow for higher concurrency.\",\n                    'feedback': {\n                        'C': \"Correct! `ConcurrentHashMap` uses lock-striping (or similar techniques in modern Java) to allow for a higher degree of concurrency. `synchronizedMap` locks the entire map for every read or write operation, creating a bottleneck.\"\n                    }\n                },\n                {\n                    'category': \"Concurrency\",\n                    'question': \"What does the Java Memory Model (JMM) define?\",\n                    'options': {\n                        'A': \"The physical layout of memory chips\",\n                        'B': \"The rules for how threads interact through memory\",\n                        'C': \"The size of the heap\",\n                        'D': \"The structure of the java.lang package\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"It specifies the 'happens-before' relationship and guarantees for visibility of shared variables between threads.\",\n                    'feedback': {\n                        'B': \"Correct! The JMM defines the conditions under which one thread's actions are visible to another, ensuring predictable behavior in concurrent programs across different hardware architectures.\"\n                    }\n                },\n                {\n                    'category': \"Keywords\",\n                    'question': \"What is a `volatile` variable?\",\n                    'options': {\n                        'A': \"A variable that cannot be changed\",\n                        'B': \"A temporary variable that is destroyed after method execution\",\n                        'C': \"A variable that is shared across all threads by default\",\n                        'D': \"A variable whose value is always read from\/written to main memory\"\n                    },\n                    'answer': \"D\",\n                    'hint': \"This keyword ensures that changes to a variable by one thread are immediately visible to other threads.\",\n                    'feedback': {\n                        'D': \"Correct! `volatile` guarantees that any write to the variable will be written to main memory, and any read will come from main memory, preventing issues with CPU caches in multithreaded applications.\"\n                    }\n                },\n                {\n                    'category': \"Java 8+\",\n                    'question': \"What is a functional interface?\",\n                    'options': {\n                        'A': \"An interface with exactly one abstract method\",\n                        'B': \"An interface with at least one method\",\n                        'C': \"An interface with only default methods\",\n                        'D': \"An interface with no methods\"\n                    },\n                    'answer': \"A\",\n                    'hint': \"This type of interface is a target for lambda expressions and method references.\",\n                    'feedback': {\n                        'A': \"Correct! A functional interface, often marked with `@FunctionalInterface`, has a single abstract method (SAM). `Runnable` and `Callable` are classic examples.\"\n                    }\n                },\n                {\n                    'category': \"Java 8+\",\n                    'question': \"What is the purpose of the `Optional` class?\",\n                    'options': {\n                        'A': \"To make method parameters optional\",\n                        'B': \"To represent a value that may or may not be present, helping to avoid NullPointerExceptions\",\n                        'C': \"To provide optional functionality to a class\",\n                        'D': \"To make method return types optional\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"It is a container object which may or may not contain a non-null value.\",\n                    'feedback': {\n                        'B': \"Correct! `Optional` provides a type-level solution for representing optional values instead of using `null` references, forcing the developer to actively consider the 'value absent' case.\"\n                    }\n                },\n                {\n                    'category': \"Concurrency\",\n                    'question': \"What is a daemon thread?\",\n                    'options': {\n                        'A': \"A malicious thread that harms the system\",\n                        'B': \"A high-priority thread that must finish before the program exits\",\n                        'C': \"A low-priority thread that doesn't prevent the JVM from exiting\",\n                        'D': \"A thread that manages memory\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"The JVM will shut down even if these background threads are still running. Garbage collection is a classic example.\",\n                    'feedback': {\n                        'C': \"Correct! Daemon threads are for background tasks. The JVM exits when all non-daemon (user) threads have finished their execution.\"\n                    }\n                },\n                {\n                    'category': \"Generics\",\n                    'question': \"What is type erasure in generics?\",\n                    'options': {\n                        'A': \"The process of adding type information at runtime\",\n                        'B': \"An error where the type of a generic is erased\",\n                        'C': \"A feature to manually erase types\",\n                        'D': \"The process of removing generic type information at compile time\"\n                    },\n                    'answer': \"D\",\n                    'hint': \"This is why you can't do things like `new T()` or `list instanceof ArrayList<String>` at runtime.\",\n                    'feedback': {\n                        'D': \"Correct! To ensure backward compatibility, the Java compiler 'erases' generic type information, replacing it with `Object` or a bounded type, and adds necessary casts. The type safety is enforced only at compile time.\"\n                    }\n                },\n                {\n                    'category': \"Concurrency\",\n                    'question': \"What is a key difference between `wait()` and `sleep()`?\",\n                    'options': {\n                        'A': \"`wait()` is a method of Thread, `sleep()` is a method of Object\",\n                        'B': \"`sleep()` releases the object's monitor lock, `wait()` does not\",\n                        'C': \"`wait()` releases the object's monitor lock, `sleep()` does not\",\n                        'D': \"They are functionally identical\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"One of them is crucial for inter-thread communication (`notify`, `notifyAll`), and it must release the lock to allow other threads to acquire it.\",\n                    'feedback': {\n                        'C': \"Correct! `Thread.sleep()` pauses the thread but keeps any locks it holds. `Object.wait()` pauses the thread AND releases the lock on the object it was called on, allowing another thread to enter a synchronized block on the same object.\"\n                    }\n                },\n                {\n                    'category': \"JVM\",\n                    'question': \"What is a ClassLoader in Java?\",\n                    'options': {\n                        'A': \"A tool for organizing .class files\",\n                        'B': \"A part of the JRE that dynamically loads Java classes into the JVM\",\n                        'C': \"A security feature that locks classes\",\n                        'D': \"A utility for compiling Java code\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"It is responsible for finding and loading class files at runtime.\",\n                    'feedback': {\n                        'B': \"Correct! The ClassLoader is a fundamental part of the JVM responsible for loading classes on demand. It follows a delegation hierarchy (Bootstrap, Extension, System).\"\n                    }\n                },\n                {\n                    'category': \"Java 8+\",\n                    'question': \"Which of the following is a terminal operation in the Stream API?\",\n                    'options': {\n                        'A': \"map()\",\n                        'B': \"filter()\",\n                        'C': \"forEach()\",\n                        'D': \"sorted()\"\n                    },\n                    'answer': \"C\",\n                    'hint': \"Terminal operations trigger the processing of the stream and produce a result or side-effect. Intermediate operations are lazy.\",\n                    'feedback': {\n                        'C': \"Correct! `forEach()` is a terminal operation that consumes the stream and performs an action for each element. `map`, `filter`, and `sorted` are intermediate operations that return a new stream.\"\n                    }\n                },\n                {\n                    'category': \"Concurrency\",\n                    'question': \"What is the difference between a `Callable` and a `Runnable`?\",\n                    'options': {\n                        'A': \"There is no difference\",\n                        'B': \"`Callable` can return a value and throw a checked exception, `Runnable` cannot\",\n                        'C': \"`Runnable` can return a value and throw a checked exception, `Callable` cannot\",\n                        'D': \"`Callable` is used for GUI events, `Runnable` is for background tasks\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"One is designed for tasks that compute a result, often used with `ExecutorService` to get a `Future` object back.\",\n                    'feedback': {\n                        'B': \"Correct! `Runnable`'s `run()` method is `void` and cannot throw checked exceptions, while `Callable`'s `call()` method returns a generic value and can throw exceptions.\"\n                    }\n                },\n                {\n                    'category': \"Core Concepts\",\n                    'question': \"What is Reflection in Java?\",\n                    'options': {\n                        'A': \"A technique for mirroring display output\",\n                        'B': \"The ability to inspect and modify the structure and behavior of a program at runtime\",\n                        'C': \"A design pattern for creating objects\",\n                        'D': \"A way to improve graphical rendering\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"This powerful (and potentially dangerous) API allows you to examine classes, interfaces, fields, and methods at runtime, without knowing their names at compile time.\",\n                    'feedback': {\n                        'B': \"Correct! The Reflection API is a feature that allows a running Java program to examine or 'introspect' upon itself, and manipulate internal properties of the program.\"\n                    }\n                },\n                {\n                    'category': \"JVM\",\n                    'question': \"What replaced PermGen (Permanent Generation) space in Java 8?\",\n                    'options': {\n                        'A': \"Metaspace\",\n                        'B': \"Young Generation\",\n                        'C': \"Eden Space\",\n                        'D': \"Old Generation\"\n                    },\n                    'answer': \"A\",\n                    'hint': \"This change moved metadata about classes out of the Java heap and into native memory.\",\n                    'feedback': {\n                        'A': \"Correct! Metaspace is allocated from native memory, not the Java heap, and is no longer a contiguous space, which helps avoid `java.lang.OutOfMemoryError: PermGen space` errors.\"\n                    }\n                },\n                {\n                    'category': \"OOP\",\n                    'question': \"What is the Diamond Problem and how does Java 8 address it with interfaces?\",\n                    'options': {\n                        'A': \"A memory allocation issue, solved by the Garbage Collector\",\n                        'B': \"Multiple inheritance ambiguity, addressed using default methods and specific resolution rules\",\n                        'C': \"A syntax error, fixed by the compiler\",\n                        'D': \"A performance bottleneck in collections\"\n                    },\n                    'answer': \"B\",\n                    'hint': \"This problem occurs when a class inherits from two classes that both have a method with the same signature. Java's solution for interfaces has clear rules for which method gets chosen.\",\n                    'feedback': {\n                        'B': \"Correct! Java avoids the diamond problem with classes by not allowing multiple inheritance. For interfaces, Java 8 introduced default methods and rules to resolve conflicts: 1) Class implementation wins over interface default. 2) A subclass's default method wins over a super-interface's default method.\"\n                    }\n                }\n            ]\n        };\n\n        \/\/ --- STATE ---\n        let quizState = {\n            difficulty: null,\n            questions: [],\n            currentIndex: 0,\n            userAnswers: [],\n            timerInterval: null,\n            totalSeconds: 0,\n        };\n        let selectedDifficulty = null;\n        \/\/ --- CORE FUNCTIONS ---\n        function showScreen(screenId) {\n            document.querySelectorAll('#java-quiz-app-wrapper .quiz-screen').forEach(screen => {\n                screen.classList.remove('active');\n            });\n            const targetScreen = document.getElementById(screenId);\n            if (targetScreen) {\n                targetScreen.classList.add('active');\n            }\n        }\n        function startTimer() {\n            if (quizState.timerInterval) clearInterval(quizState.timerInterval);\n            quizState.timerInterval = setInterval(() => {\n                quizState.totalSeconds++;\n                const mins = Math.floor(quizState.totalSeconds \/ 60).toString().padStart(2, '0');\n                const secs = (quizState.totalSeconds % 60).toString().padStart(2, '0');\n                const timerEl = document.querySelector('#quiz-view #timer');\n                if(timerEl) timerEl.textContent = `${mins}:${secs}`;\n            }, 1000);\n        }\n        function stopTimer() {\n            clearInterval(quizState.timerInterval);\n        }\n        function resetQuizState() {\n            stopTimer();\n            quizState = {\n                difficulty: null, questions: [], currentIndex: 0, userAnswers: [], timerInterval: null, totalSeconds: 0,\n            };\n        }\n        window.showMainMenu = function(confirmFirst = false) {\n            if (confirmFirst) {\n                if (confirm('Are you sure you want to exit? Your progress will be lost.')) {\n                    resetQuizState();\n                    sessionStorage.removeItem('javaQuizResultState'); \/\/ Clear saved state\n                    showScreen('main-menu-view');\n                }\n            } else {\n                resetQuizState();\n                sessionStorage.removeItem('javaQuizResultState'); \/\/ Clear saved state\n                showScreen('main-menu-view');\n            }\n        }\n        window.showUserDetailsView = function(difficulty) {\n            const userInfoJSON = localStorage.getItem('quizUserInfo');\n            if (userInfoJSON) {\n                try {\n                    const userInfo = JSON.parse(userInfoJSON);\n                    if (new Date().getTime() < userInfo.expires) {\n                        startQuiz(difficulty);\n                        return;\n                    }\n                } catch(e) { \/* Invalid JSON *\/ }\n            }\n            selectedDifficulty = difficulty;\n            showScreen('user-details-view');\n            document.getElementById('user-name').focus();\n        }\n        function startQuiz(difficulty) {\n            quizState = {\n                difficulty,\n                questions: quizData[difficulty] || [],\n                currentIndex: 0,\n                userAnswers: new Array((quizData[difficulty] || []).length).fill(null),\n                timerInterval: null,\n                totalSeconds: 0,\n            };\n            showScreen('quiz-view');\n            setupQuizUI();\n            loadQuestion();\n            startTimer();\n        }\n        function setupQuizUI() {\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            const quizTitle = quizScreenEl.querySelector('#quiz-title');\n            const questionCount = quizScreenEl.querySelector('#question-count');\n            const stepper = quizScreenEl.querySelector('#progress-stepper');\n            const timer = quizScreenEl.querySelector('#timer');\n            if (quizTitle) quizTitle.textContent = `${quizState.difficulty.charAt(0).toUpperCase() + quizState.difficulty.slice(1)} Java Quiz`;\n            if (questionCount) questionCount.textContent = `${quizState.currentIndex + 1}\/${quizState.questions.length}`;\n            if (timer) timer.textContent = '00:00';\n            if (stepper) stepper.innerHTML = quizState.questions.map(() => `<div class=\"step\"><\/div>`).join('');\n        }\n        function loadQuestion() {\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            const question = quizState.questions[quizState.currentIndex];\n            if (!question) return;\n            const questionText = quizScreenEl.querySelector('.java-quiz-question-text');\n            const optionsContainer = quizScreenEl.querySelector('#options-container');\n            const hintText = quizScreenEl.querySelector('#hint-text');\n            const hintToggle = quizScreenEl.querySelector('#hint-toggle');\n            const questionCountEl = quizScreenEl.querySelector('#question-count');\n            if (questionCountEl) questionCountEl.textContent = `${quizState.currentIndex + 1}\/${quizState.questions.length}`;\n            if (questionText) questionText.innerHTML = `${quizState.currentIndex + 1}. ${question.question}`;\n            if (optionsContainer) {\n                optionsContainer.innerHTML = '';\n                Object.entries(question.options).forEach(([key, value]) => {\n                    const optionDiv = document.createElement('div');\n                    optionDiv.className = 'option';\n                    optionDiv.dataset.key = key;\n                    optionDiv.innerHTML = `<label class=\"option-label\"><span class=\"option-letter\">${key}.<\/span> ${value}<\/label>`;\n                    optionDiv.addEventListener('click', () => handleOptionClick(key));\n                    optionsContainer.appendChild(optionDiv);\n                });\n            }\n            if (hintText) {\n                hintText.textContent = question.hint;\n                hintText.classList.add('hidden');\n            }\n            if (hintToggle) {\n                hintToggle.classList.remove('open');\n                hintToggle.disabled = false;\n            }\n            updateProgress();\n            restoreAnswerState();\n        }\n        function handleOptionClick(selectedKey) {\n            if (quizState.userAnswers[quizState.currentIndex] !== null) return;\n            const question = quizState.questions[quizState.currentIndex];\n            const isCorrect = selectedKey === question.answer;\n            quizState.userAnswers[quizState.currentIndex] = { selected: selectedKey, isCorrect };\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            quizScreenEl.querySelectorAll('.option').forEach(opt => {\n                opt.classList.add('disabled');\n                if (opt.dataset.key === question.answer) {\n                    opt.classList.add('correct');\n                    addFeedback(opt, true);\n                } else if (opt.dataset.key === selectedKey) {\n                    opt.classList.add('incorrect');\n                    addFeedback(opt, false);\n                }\n            });\n            const hintToggle = quizScreenEl.querySelector('#hint-toggle');\n            if (hintToggle) hintToggle.disabled = true;\n            updateProgress();\n        }\n        function addFeedback(optionDiv, isCorrect) {\n            const question = quizState.questions[quizState.currentIndex];\n            const selectedKey = optionDiv.dataset.key;\n            const feedbackText = question.feedback[selectedKey] || (isCorrect ? question.feedback[question.answer] : \"That's not the correct choice.\");\n            if (!optionDiv.querySelector('.feedback')) {\n                optionDiv.querySelector('.option-label').insertAdjacentHTML('afterend', `\n                <div class=\"feedback\">\n                    <div class=\"feedback-title ${isCorrect ? 'correct' : 'incorrect'}\">${isCorrect ? '\u2713 Correct' : '\u2717 Incorrect'}<\/div>\n                    <div class=\"feedback-text\">${feedbackText}<\/div>\n                <\/div>`);\n            }\n        }\n        function restoreAnswerState() {\n            const answer = quizState.userAnswers[quizState.currentIndex];\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            if (answer) {\n                quizScreenEl.querySelectorAll('.option').forEach(opt => {\n                    opt.classList.add('disabled');\n                    if (opt.dataset.key === quizState.questions[quizState.currentIndex].answer) {\n                        opt.classList.add('correct');\n                        if (opt.dataset.key === answer.selected) addFeedback(opt, true);\n                    } else if (opt.dataset.key === answer.selected) {\n                        opt.classList.add('incorrect');\n                        addFeedback(opt, false);\n                    }\n                });\n            }\n        }\n        function updateProgress() {\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            const backBtn = quizScreenEl.querySelector('#back-btn');\n            const nextBtn = quizScreenEl.querySelector('#next-btn');\n            const stepper = quizScreenEl.querySelector('#progress-stepper');\n            if (backBtn) backBtn.disabled = quizState.currentIndex === 0;\n            if (nextBtn) nextBtn.textContent = (quizState.currentIndex === quizState.questions.length - 1) ? 'Finish' : 'Next';\n            if(stepper) {\n                [...stepper.children].forEach((step, i) => {\n                    step.className = 'step';\n                    if (i === quizState.currentIndex) step.classList.add('active');\n                    const answer = quizState.userAnswers[i];\n                    if (answer) step.classList.add(answer.isCorrect ? 'correct' : 'incorrect');\n                });\n            }\n        }\n        function showResults() {\n            stopTimer();\n            const correctCount = quizState.userAnswers.filter(a => a?.isCorrect).length;\n            const totalQuestions = quizState.questions.length;\n            const answeredCount = quizState.userAnswers.filter(a => a !== null).length;\n            const wrongCount = answeredCount - correctCount;\n            const skippedCount = totalQuestions - answeredCount;\n            const accuracy = answeredCount > 0 ? Math.round((correctCount \/ answeredCount) * 100) : 0;\n            const scorePercentage = totalQuestions > 0 ? Math.round((correctCount \/ totalQuestions) * 100) : 0;\n            \n            \/\/ Save quiz state to sessionStorage to persist results\n            sessionStorage.setItem('javaQuizResultState', JSON.stringify(quizState));\n\n            \/\/ Populate new results view elements\n            document.querySelector('#new-score-value').innerHTML = `${correctCount}<span>\/${totalQuestions}<\/span>`;\n            document.querySelector('#new-accuracy-label').textContent = `${accuracy}% Accuracy`;\n            document.querySelector('#new-right-value').textContent = correctCount;\n            document.querySelector('#new-wrong-value').textContent = wrongCount;\n            document.querySelector('#new-skipped-value').textContent = skippedCount;\n            \n            \/\/ Animate progress circle\n            const circle = document.getElementById('score-circle');\n            const radius = circle.r.baseVal.value;\n            const circumference = radius * 2 * Math.PI;\n            circle.style.strokeDasharray = `${circumference} ${circumference}`;\n            setTimeout(() => {\n                const offset = circumference - scorePercentage \/ 100 * circumference;\n                circle.style.strokeDashoffset = offset;\n            }, 100);\n            \n            setupShareLinks(correctCount, accuracy);\n            showScreen('results-view');\n        }\n        function setupShareLinks(score, accuracy) {\n            const url = window.location.href;\n            const text = `I scored ${score}\/${quizState.questions.length} on the ${quizState.difficulty} Java Quiz! Can you beat my score?`;\n            const title = 'Java Quiz Challenge';\n            \n            \/\/ Update to new share link IDs\n            document.getElementById('new-share-whatsapp').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/api.whatsapp.com\/send?text=${encodeURIComponent(text + '\\n\\n' + url)}`, '_blank'); };\n            document.getElementById('new-share-twitter').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/twitter.com\/intent\/tweet?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`, '_blank'); };\n            document.getElementById('new-share-linkedin').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/www.linkedin.com\/shareArticle?mini=true&url=${encodeURIComponent(url)}&title=${encodeURIComponent(title)}&summary=${encodeURIComponent(text)}`, '_blank'); };\n            document.getElementById('new-share-telegram').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/t.me\/share\/url?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`, '_blank'); };\n        }\n        function handleUserDetailsSubmit(event) {\n            event.preventDefault();\n            const form = document.getElementById('user-details-form');\n            const name = form.querySelector('#user-name').value.trim();\n            const email = form.querySelector('#user-email').value.trim();\n            if (!name || !email) { alert('Please fill in both your name and email.'); return; }\n            const expirationTime = new Date().getTime() + (60 * 24 * 60 * 60 * 1000); \/\/ 60 days\n            localStorage.setItem('quizUserInfo', JSON.stringify({ expires: expirationTime }));\n            \n            \/\/ Submit to Google Form\n            const formURL = \"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLScAVF17oENbZXTwsTuQ7VzwLPeT6IG5iilch2LoEoYsbzik5A\/formResponse\";\n            const formData = new FormData();\n            formData.append(\"entry.1956958717\", name); \/\/ Name field\n            formData.append(\"entry.1149718564\", email); \/\/ Email field\n            formData.append(\"entry.1658362758\", window.location.href);\n            fetch(formURL, { method: \"POST\", body: formData, mode: \"no-cors\" }).catch(console.error);\n            form.reset();\n            startQuiz(selectedDifficulty);\n        }\n        \/\/ --- EVENT LISTENERS ---\n        document.getElementById('user-details-form').addEventListener('submit', handleUserDetailsSubmit);\n        document.getElementById('back-to-menu-btn').addEventListener('click', () => showMainMenu(false));\n        document.getElementById('back-to-results-btn').addEventListener('click', () => showScreen('results-view'));\n        document.getElementById('next-btn').addEventListener('click', () => {\n             if (quizState.currentIndex < quizState.questions.length - 1) {\n                 quizState.currentIndex++;\n                 loadQuestion();\n             } else {\n                 showResults();\n             }\n         });\n        document.getElementById('back-btn').addEventListener('click', () => {\n             if (quizState.currentIndex > 0) {\n                 quizState.currentIndex--;\n                 loadQuestion();\n             }\n         });\n        document.getElementById('hint-toggle').addEventListener('click', () => {\n             document.getElementById('hint-text').classList.toggle('hidden');\n             document.getElementById('hint-toggle').classList.toggle('open');\n         });\n        document.getElementById('analyse-btn').addEventListener('click', () => {\n            const analysisByCat = quizState.questions.reduce((acc, { category }, i) => {\n                if (!acc[category]) acc[category] = { total: 0, correct: 0, correctQs: [], incorrectQs: [] };\n                acc[category].total++;\n                const answer = quizState.userAnswers[i];\n                if (answer?.isCorrect) {\n                    acc[category].correct++;\n                    acc[category].correctQs.push(i + 1);\n                } else if (answer) {\n                    acc[category].incorrectQs.push(i + 1);\n                }\n                return acc;\n            }, {});\n            const analysisModalBody = document.getElementById('analysis-body');\n            analysisModalBody.innerHTML = Object.entries(analysisByCat).map(([category, data]) => {\n                const percentage = data.total > 0 ? Math.round((data.correct \/ data.total) * 100) : 0;\n                return `<div class=\"category-analysis\"><div class=\"category-header\"><h3 id=\"category\">${category}<\/h3><div class=\"category-score\">${percentage}% Correct<\/div><\/div><div class=\"progress-bar-bg\"><div class=\"progress-bar-fg\" style=\"width: ${percentage}%;\"><\/div><\/div><div class=\"question-breakdown\">${data.correctQs.length > 0 ? `<p><strong>Correct:<\/strong> Q${data.correctQs.join(', Q')}<\/p>` : ''}${data.incorrectQs.length > 0 ? `<span>Incorrect:<\/span> Q${data.incorrectQs.join(', Q')}` : ''}<\/div><\/div>`;\n            }).join('');\n            showScreen('analysis-view');\n        });\n\n        \/\/ --- INITIALIZATION ---\n        \/\/ Check for saved results on page load\n        const savedStateJSON = sessionStorage.getItem('javaQuizResultState');\n        if (savedStateJSON) {\n            try {\n                quizState = JSON.parse(savedStateJSON);\n                \/\/ Stop any lingering timers if the user refreshed mid-quiz\n                if (quizState.timerInterval) clearInterval(quizState.timerInterval);\n                showResults();\n            } catch (e) {\n                console.error(\"Failed to parse saved quiz state.\", e);\n                sessionStorage.removeItem('javaQuizResultState');\n                showScreen('main-menu-view');\n            }\n        } else {\n            showScreen('main-menu-view');\n        }\n    });\n    <\/script>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><strong>Also Check:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/java-compiler-tool\/\">Online Java Compiler<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/java-developer-guide\/\">How to Become a Java Developer<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/java-project-ideas\/\">Java Projects<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/java-interview-questions\/\">Java Interview Questions<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/java-exercise\/\">Java Coding Practice<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.<\/p>\n","protected":false},"author":41,"featured_media":109317,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[25860],"tags":[36826,36874],"class_list":["post-109314","page","type-page","status-publish","has-post-thumbnail","hentry","category-software","tag-java","tag-quiz"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Java Quiz and MCQs \u2013 Challenge Your Java Skills Across All Difficulty Levels<\/title>\n<meta name=\"description\" content=\"Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Quiz\" \/>\n<meta property=\"og:description\" content=\"Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Great Learning Blog: Free Resources what Matters to shape your Career!\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GreatLearningOfficial\/\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1192\" \/>\n\t<meta property=\"og:image:height\" content=\"621\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@Great_Learning\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/\"},\"author\":{\"name\":\"Great Learning Editorial Team\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/person\\\/6f993d1be4c584a335951e836f2656ad\"},\"headline\":\"Java Quiz\",\"datePublished\":\"2025-07-01T16:10:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/\"},\"wordCount\":330,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/java-quiz.png\",\"keywords\":[\"java\",\"quiz\"],\"articleSection\":[\"IT\\\/Software Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/\",\"name\":\"Java Quiz and MCQs \u2013 Challenge Your Java Skills Across All Difficulty Levels\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/java-quiz.png\",\"datePublished\":\"2025-07-01T16:10:18+00:00\",\"description\":\"Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/java-quiz.png\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/java-quiz.png\",\"width\":1192,\"height\":621,\"caption\":\"Java Quiz\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/java-quiz\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Quiz\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\",\"name\":\"Great Learning Blog\",\"description\":\"Learn, Upskill &amp; Career Development Guide and Resources\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\"},\"alternateName\":\"Great Learning\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\",\"name\":\"Great Learning\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/GL-Logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/GL-Logo.jpg\",\"width\":900,\"height\":900,\"caption\":\"Great Learning\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/GreatLearningOfficial\\\/\",\"https:\\\/\\\/x.com\\\/Great_Learning\",\"https:\\\/\\\/www.instagram.com\\\/greatlearningofficial\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/school\\\/great-learning\\\/\",\"https:\\\/\\\/in.pinterest.com\\\/greatlearning12\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/beaconelearning\\\/\"],\"description\":\"Great Learning is a leading global ed-tech company for professional training and higher education. It offers comprehensive, industry-relevant, hands-on learning programs across various business, technology, and interdisciplinary domains driving the digital economy. These programs are developed and offered in collaboration with the world's foremost academic institutions.\",\"email\":\"info@mygreatlearning.com\",\"legalName\":\"Great Learning Education Services Pvt. Ltd\",\"foundingDate\":\"2013-11-29\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/person\\\/6f993d1be4c584a335951e836f2656ad\",\"name\":\"Great Learning Editorial Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"caption\":\"Great Learning Editorial Team\"},\"description\":\"The Great Learning Editorial Staff includes a dynamic team of subject matter experts, instructors, and education professionals who combine their deep industry knowledge with innovative teaching methods. Their mission is to provide learners with the skills and insights needed to excel in their careers, whether through upskilling, reskilling, or transitioning into new fields.\",\"sameAs\":[\"https:\\\/\\\/www.mygreatlearning.com\\\/\",\"https:\\\/\\\/in.linkedin.com\\\/school\\\/great-learning\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/Great_Learning\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCObs0kLIrDjX2LLSybqNaEA\"],\"award\":[\"Best EdTech Company of the Year 2024\",\"Education Economictimes Outstanding Education\\\/Edtech Solution Provider of the Year 2024\",\"Leading E-learning Platform 2024\"],\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/author\\\/greatlearning\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java Quiz and MCQs \u2013 Challenge Your Java Skills Across All Difficulty Levels","description":"Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/","og_locale":"en_US","og_type":"article","og_title":"Java Quiz","og_description":"Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.","og_url":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/","og_site_name":"Great Learning Blog: Free Resources what Matters to shape your Career!","article_publisher":"https:\/\/www.facebook.com\/GreatLearningOfficial\/","og_image":[{"width":1192,"height":621,"url":"http:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@Great_Learning","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/#article","isPartOf":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/"},"author":{"name":"Great Learning Editorial Team","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/person\/6f993d1be4c584a335951e836f2656ad"},"headline":"Java Quiz","datePublished":"2025-07-01T16:10:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/"},"wordCount":330,"publisher":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png","keywords":["java","quiz"],"articleSection":["IT\/Software Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/","url":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/","name":"Java Quiz and MCQs \u2013 Challenge Your Java Skills Across All Difficulty Levels","isPartOf":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/#primaryimage"},"image":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png","datePublished":"2025-07-01T16:10:18+00:00","description":"Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.","breadcrumb":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/#primaryimage","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png","width":1192,"height":621,"caption":"Java Quiz"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mygreatlearning.com\/blog\/java-quiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mygreatlearning.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java Quiz"}]},{"@type":"WebSite","@id":"https:\/\/www.mygreatlearning.com\/blog\/#website","url":"https:\/\/www.mygreatlearning.com\/blog\/","name":"Great Learning Blog","description":"Learn, Upskill &amp; Career Development Guide and Resources","publisher":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization"},"alternateName":"Great Learning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mygreatlearning.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization","name":"Great Learning","url":"https:\/\/www.mygreatlearning.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/06\/GL-Logo.jpg","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/06\/GL-Logo.jpg","width":900,"height":900,"caption":"Great Learning"},"image":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/GreatLearningOfficial\/","https:\/\/x.com\/Great_Learning","https:\/\/www.instagram.com\/greatlearningofficial\/","https:\/\/www.linkedin.com\/school\/great-learning\/","https:\/\/in.pinterest.com\/greatlearning12\/","https:\/\/www.youtube.com\/user\/beaconelearning\/"],"description":"Great Learning is a leading global ed-tech company for professional training and higher education. It offers comprehensive, industry-relevant, hands-on learning programs across various business, technology, and interdisciplinary domains driving the digital economy. These programs are developed and offered in collaboration with the world's foremost academic institutions.","email":"info@mygreatlearning.com","legalName":"Great Learning Education Services Pvt. Ltd","foundingDate":"2013-11-29","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/person\/6f993d1be4c584a335951e836f2656ad","name":"Great Learning Editorial Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","caption":"Great Learning Editorial Team"},"description":"The Great Learning Editorial Staff includes a dynamic team of subject matter experts, instructors, and education professionals who combine their deep industry knowledge with innovative teaching methods. Their mission is to provide learners with the skills and insights needed to excel in their careers, whether through upskilling, reskilling, or transitioning into new fields.","sameAs":["https:\/\/www.mygreatlearning.com\/","https:\/\/in.linkedin.com\/school\/great-learning\/","https:\/\/x.com\/https:\/\/twitter.com\/Great_Learning","https:\/\/www.youtube.com\/channel\/UCObs0kLIrDjX2LLSybqNaEA"],"award":["Best EdTech Company of the Year 2024","Education Economictimes Outstanding Education\/Edtech Solution Provider of the Year 2024","Leading E-learning Platform 2024"],"url":"https:\/\/www.mygreatlearning.com\/blog\/author\/greatlearning\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png",1192,621,false],"thumbnail":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz-150x150.png",150,150,true],"medium":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz-300x156.png",300,156,true],"medium_large":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz-768x400.png",768,400,true],"large":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz-1024x533.png",1024,533,true],"1536x1536":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png",1192,621,false],"2048x2048":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz.png",1192,621,false],"web-stories-poster-portrait":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz-640x621.png",640,621,true],"web-stories-publisher-logo":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz-96x96.png",96,96,true],"web-stories-thumbnail":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/java-quiz-150x78.png",150,78,true]},"uagb_author_info":{"display_name":"Great Learning Editorial Team","author_link":"https:\/\/www.mygreatlearning.com\/blog\/author\/greatlearning\/"},"uagb_comment_info":0,"uagb_excerpt":"Challenge yourself with our Java quiz! Test your skills across beginner, intermediate, and advanced levels with 30+ questions on key Java concepts.","_links":{"self":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/109314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/comments?post=109314"}],"version-history":[{"count":11,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/109314\/revisions"}],"predecessor-version":[{"id":109318,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/109314\/revisions\/109318"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/media\/109317"}],"wp:attachment":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/media?parent=109314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/categories?post=109314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/tags?post=109314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}