{
  "assessmentTests": {
    "java_test": {
      "name": "د جاوا ازموینه",
      "desc": "د اصلي نحو، د OOP میکانیکونو، ټولګو، جینریکونو، استثناوو او هممهالۍ په اړه 30 سناریو پوښتنې — ومومئ چې ایا ستاسو جاوا د هغه څه سره سمون لري چې د دندې په اعلان کې د جاوا مهارت څخه مطلب وي.",
      "recommendation": "ستاسو د جاوا مهارتونو پروفایل",
      "results": {
        "beginner": {
          "name": "پیل کونکی",
          "desc": "تاسو کولی شئ کاري کلاسونه او میتودونه ولیکئ، مګر هغه پوښتنې چې تاسو ځواب نه کړې د نحو پر ځای د هویت او ډیفالټونو په اړه دي — String == د .equals په مقابل کې، ولې new String(\"x\") هیڅکله د سټرینګ پول بیا نه کاروي، یو عددي فیلډ د ډیفالټ په توګه څه ارزښت لري د ریپر فیلډ په پرتله. دا هیڅ یو په جاوا کې د کمزورۍ په اړه نه دي؛ دا هغه ځانګړي قواعد دي چې هغه خلک ګمراه کوي چې ژبه یې د ازموینې او تېروتنې له لارې زده کړې ده نه د دې له مخې چې ریفرنسونه او پریمیټیوونه په حقیقت کې څنګه کار کوي. دا په کار کې مهم دي ځکه چې هر یو هغه ځای دی چې کوډ کمپایل کیږي، چلیږي، او په خاموشۍ سره غلط کار کوي.",
          "recommendation": "په دې ترتیب سره له دریو شیانو پیل وکړئ: ولې په دوو String آبجیکټونو باندې == د حروفو پر ځای ریفرنسونه پرتله کوي (او .equals هغه څه دي چې تاسو یې تقریبا تل غواړئ)، څنګه int اوورفلو په خاموشۍ سره تاویږي د دې پر ځای چې استثنا وغورځوي، او ولې یو غیر پیل شوی Integer فیلډ ډیفالټ null ته ځي پداسې حال کې چې یو int فیلډ ډیفالټ 0 ته ځي. د اوریکل رسمي جاوا ټیوټوریلونه او Baeldung دواړه دا درې واړه د چلېدونکو مثالونو سره پوښي."
        },
        "intermediate": {
          "name": "منځنۍ کچه",
          "desc": "تاسو د اپلیکیشن ورځنی کوډ په اسانۍ سره سمبالولی شئ — کلاسونه، کلیکشنونه، د کنټرول مستقیم جریان — او د عادي فیچر کار به مو ورو نه کړي. د دې او پرمختللې کچې ترمنځ واټن تر ډېره په دې کې دی چې د جاوا قواعد د هممهالۍ او جینریکس سره څنګه تعامل کوي: یو سټاټیک میتود چې د اعلان شوي ډول له مخې حل کیږي د هغه څیز پرځای چې تاسو یې تمه درلوده، د HashMap تکرار ترتیب چې تاسو په پټه پرې تکیه کړې وه، د لوپ په مینځ کې د یو توکي لرې کولو له امله د ConcurrentModificationException رامنځته کېدل. دا هغه ډول بګونه دي چې له یوې چټکې کتنې څخه تېرېږي او یوازې د ځانګړي رنټایم حالت لاندې څرګندیږي.",
          "recommendation": "په دې تمرکز وکړئ چې ستاسو د کوډ په اړه د کمپایلر سټاټیک لید له هغه څه سره څنګه توپیر لري چې چلیږي: د اوورلوډ ریزولوشن او د سټاټیک میتود پټول د اعلان شوي ډول له مخې د رنټایم ډول پرځای، ولې HashMap د تکرار ترتیب تضمین نه ورکوي، او ولې د تکرار پرمهال د لیست مستقیم ترمیمول ConcurrentModificationException غورځوي. بیا د جینریکس پاکول، ځکه چې دا هغه خلک هم ګمراه کوي چې دمخه په انفرادي ډول کلیکشنونه پیژني."
        },
        "advanced": {
          "name": "پرمختللې کچه",
          "desc": "دا هغه کچه ده چې د کار ډیری اعلانونه یې د «قوي جاوا» په توګه یادوي. تاسو یو کلاس د سټاټیک بلاکونو، انسټانس بلاکونو او څو کنټرکټرونو سره لولئ او کولی شئ د دوی د چلولو دقیق ترتیب وړاندوینه وکړئ، تاسو پوهیږئ چې ولې یو فاینلي بلاک کولی شي په پټه د ټرای بلاک د بیرته راستنیدو ارزښت له پامه وغورځوي، او تاسو د لاسي فاینلي-کلوز پرځای د ټرای-ویټ-ریسورسز څخه کار اخلئ ځکه چې تاسو د هغه ترتیب تضمین پیژنئ چې دا یې تاسو ته درکوي. هغه څه چې دا کچه له لوړې کچې څخه جلا کوي د کار هممهاله او انټرفیس-کچې اړخ دی: چې سنکرونایزډ په حقیقت کې څه قلفوي، وولاټایل څه تضمینوي او څه نه تضمینوي، او د ډیفالټ-میتود شخړې څنګه حل کیږي.",
          "recommendation": "هغو برخو ته ځان ورسوئ چې د کوډ ساتنه کوي چې نور تریډونه او نور انټرفیسونه هم ورسره تعامل کوي: د سنکرونایزډ انسټانس میتود او سنکرونایزډ سټاټیک میتود د قلفولو ترمنځ توپیر، ولې وولاټایل د کاونټر++ لپاره لید وړاندې کوي خو اټومیسټي نه، او څنګه جاوا تاسو مجبوروي چې د ډیفالټ-میتود ډایمنډ په لاسي ډول حل کړئ. د جاوا میموري ماډل په اړه د Baeldung او Java Concurrency in Practice مواد د دواړو لپاره طبیعي بل ګام دی."
        },
        "expert": {
          "name": "متخصص",
          "desc": "تاسو په هره برخه کې ترټولو لوړې نمرې ترلاسه کړې — اصلي سینټکس او ډولونه، د OOP میکانیکونه او سکوپ، کلیکشنونه او جینریکس، او استثناوې، هممهالي او اصطلاحات. په عملي توګه، دا پدې مانا ده چې تاسو ته د یو پردي کس کلاس درکول کیدی شي او تاسو تشریح کولی شئ چې ولې د کمپایل تېروتنه، د رنټایم استثنا، یا په پټه غلط ارزښت رامنځته کیږي، نه یوازې دا چې سینټکس څه وايي چې باید ترسره شي، کوم چې یوه سخته او ډېره ارزښتناکه وړتیا ده. په دې کچه، ژبه پخپله په ندرت سره محدودوونکی فکتور وي؛ محدودیت معمولا د هممهالۍ ډیزاین یا د هغې لاندې د ډیټا بڼه وي.",
          "recommendation": "اوس ګټه په ډیزاین او تشخیص کې ده: د دې انګیرنې دمخه چې ځنډ یو ډیډلاک دی، د تریډ ډمپ لوستل، د سنکرونایزډ، java.util.concurrent لاکونو او اټومیکونو ترمنځ د ډیفالټ پرځای د یوې معاملې په توګه انتخاب کول، او د سټریم-پایپ لاین ډیزاین چې په قصدي توګه سست پاتې کیږي نه په تصادفي توګه. که تاسو د یوې دندې لپاره ارزول کیږئ، د جاوا فیچرونو نومولو پرځای د هممهالۍ بګ تشریح کړئ لکه د happens-before یوه ورکه څنډه یا یو ConcurrentModificationException چې تاسو په پروډکشن کې موندلی وي — دا یوازې د لغتونو پرځای استدلال ښیي."
        }
      },
      "questions": [
        {
          "question": "تاسو دوه String څیزونه جوړوئ: String a = new String(\"cat\"); String b = new String(\"cat\"); د a == b ارزونه څه ده؟",
          "options": [
            {
              "icon": "",
              "label": "ریښتیا"
            },
            {
              "icon": "",
              "label": "دا د JVM د سټرینګ-پول تنظیماتو پورې اړه لري"
            },
            {
              "icon": "",
              "label": "د کمپایل تېروتنه"
            },
            {
              "icon": "",
              "label": "ناسم"
            }
          ]
        },
        {
          "question": "Integer x = 100; Integer y = 100; System.out.println(x == y); بیا Integer x2 = 200; Integer y2 = 200; System.out.println(x2 == y2); دا دوه کرښې څه چاپوي؟",
          "options": [
            {
              "icon": "",
              "label": "true بیا true"
            },
            {
              "icon": "",
              "label": "ناسم بیا ناسم"
            },
            {
              "icon": "",
              "label": "دا کمپایل نه کیږي"
            },
            {
              "icon": "",
              "label": "true بیا false"
            }
          ]
        },
        {
          "question": "int max = Integer.MAX_VALUE; System.out.println(max + 1); څه پیښیږي؟",
          "options": [
            {
              "icon": "",
              "label": "دا یو ArithmeticException غورځوي"
            },
            {
              "icon": "",
              "label": "دا بیا Integer.MAX_VALUE چاپوي"
            },
            {
              "icon": "",
              "label": "دا Integer.MIN_VALUE چاپوي"
            },
            {
              "icon": "",
              "label": "د کمپایل تېروتنه"
            }
          ]
        },
        {
          "question": "System.out.println(0.1 + 0.2 == 0.3); دا څه چاپوي، او ولې؟",
          "options": [
            {
              "icon": "",
              "label": "false، ځکه چې 0.1 او 0.2 په باینري فلوټینګ پواینټ کې دقیق ندي"
            },
            {
              "icon": "",
              "label": "true، ځکه چې جاوا د ډبل مجموعه نږدې لسیزې ته ګردوي"
            },
            {
              "icon": "",
              "label": "true، ځکه چې دوه لسیز ارزښتونه په ډبل کې په دقیقه توګه جمع کیږي"
            },
            {
              "icon": "",
              "label": "دا د ناسمې پرتله کولو لپاره یو ArithmeticException غورځوي"
            }
          ]
        },
        {
          "question": "یو کلاس دوه انسټانس فیلډونه پرته له کوم پیلونکي اعلانوي: int count; او Integer total; مخکې له دې چې کنټرکټر چلیږي، د دوی ډیفالټ ارزښتونه څه دي؟",
          "options": [
            {
              "icon": "",
              "label": "دواړه 0 دي"
            },
            {
              "icon": "",
              "label": "هیڅ یو یې تر ټاکلو پورې ارزښت نلري"
            },
            {
              "icon": "",
              "label": "count 0 دی او total null دی"
            },
            {
              "icon": "",
              "label": "دواړه null دي"
            }
          ]
        },
        {
          "question": "یو لوپ 1000 ځله چلیږي، هر ځل په یو String result باندې result += \"x\"; ترسره کوي. په حقیقت کې د هر تکرار لاندې څه پیښیږي؟",
          "options": [
            {
              "icon": "",
              "label": "د موجوده String د کرکټر اری په خپل ځای کې غځول کیږي"
            },
            {
              "icon": "",
              "label": "جاوا ټولې نښلونې په یوه وروستي String کې راټولوي"
            },
            {
              "icon": "",
              "label": "یو StringBuilder په ټولو 1000 تکرارونو کې شریک دی"
            },
            {
              "icon": "",
              "label": "یو نوی String جوړیږي او result ته ټاکل کیږي"
            }
          ]
        },
        {
          "question": "final List<String> names = new ArrayList<>(); له دې څخه کوم یو ریښتیا دی؟",
          "options": [
            {
              "icon": "",
              "label": "names.add(\"Ana\") کمپایل کیږي او کار کوي"
            },
            {
              "icon": "",
              "label": "names.add(\"Ana\") کمپایل نه کیږي"
            },
            {
              "icon": "",
              "label": "لیست د هممهاله لیکنو لپاره خوندي دی"
            },
            {
              "icon": "",
              "label": "final په محلي متغیر باندې هیڅ اغیزه نلري"
            }
          ]
        },
        {
          "question": "int[] a = {1, 2, 3}; int[] b = {1, 2, 3}; System.out.println(a == b); System.out.println(Arrays.equals(a, b)); دا دوه کرښې څه چاپوي؟",
          "options": [
            {
              "icon": "",
              "label": "false بیا true"
            },
            {
              "icon": "",
              "label": "true وروسته true"
            },
            {
              "icon": "",
              "label": "ناسم بیا ناسم"
            },
            {
              "icon": "",
              "label": "دا کمپایل نه کیږي"
            }
          ]
        },
        {
          "question": "void show(Object o) { print(\"Object\"); } void show(String s) { print(\"String\"); } Object ref = \"hello\"; show(ref); کوم اوورلوډ چلیږي، او ولې؟",
          "options": [
            {
              "icon": "",
              "label": "show(String)، ځکه چې د څیز رنټایم کلاس String دی"
            },
            {
              "icon": "",
              "label": "show(Object)، ځکه چې اوورلوډونه له اعلان شوي ډول څخه غوره کیږي"
            },
            {
              "icon": "",
              "label": "هیڅ یو؛ غوښتنه مبهمه ده او کمپایل نه کیږي"
            },
            {
              "icon": "",
              "label": "دواړه چلیږي، هر یو یو ځل، ځکه چې هر اوورلوډ سمون لري"
            }
          ]
        },
        {
          "question": "کلاس Base د static void greet() { print(\"Base\"); } لري. کلاس Derived د Base څخه پراخیږي او هم static void greet() { print(\"Derived\"); } اعلانوي. تاسو لیکئ: Base ref = new Derived(); ref.greet(); څه چاپ کیږي؟",
          "options": [
            {
              "icon": "",
              "label": "Derived"
            },
            {
              "icon": "",
              "label": "دا کمپایل نه کیږي"
            },
            {
              "icon": "",
              "label": "اساسي"
            },
            {
              "icon": "",
              "label": "Base، بیا Derived"
            }
          ]
        },
        {
          "question": "د یو میتود دننه، تاسو int count = 0; لیکئ او بیا هڅه کوئ چې د یوې لامبډا له دننه څخه چې بل میتود ته لیږل شوې، count ته مراجعه وکړئ. د دې لپاره چې دا کمپایل شي، د count په اړه باید څه ریښتیا وي؟",
          "options": [
            {
              "icon": "",
              "label": "دا باید final یا په مؤثره توګه final وي"
            },
            {
              "icon": "",
              "label": "هیڅ نه؛ هر محلي کار کوي"
            },
            {
              "icon": "",
              "label": "دا باید volatile اعلان شي"
            },
            {
              "icon": "",
              "label": "دا باید یو فیلډ وي، نه محلي"
            }
          ]
        },
        {
          "question": "void rename(StringBuilder sb) { sb = new StringBuilder(\"new\"); } د StringBuilder original = new StringBuilder(\"old\"); rename(original); په توګه غوښتل کیږي. د غوښتنې وروسته original څه دی؟",
          "options": [
            {
              "icon": "",
              "label": "دا «new» دی"
            },
            {
              "icon": "",
              "label": "دا null دی"
            },
            {
              "icon": "",
              "label": "دا لا هم «زاړه» دی"
            },
            {
              "icon": "",
              "label": "یو رنټایم استثنا غورځول کیږي"
            }
          ]
        },
        {
          "question": "یو کلاس یو سټاټیک انیشلایزر بلاک، یو انسټانس انیشلایزر بلاک، او یو کنټرکټر لري، په دې سرچینې ترتیب کې. تاسو د دې کلاس دوه آبجیکټونه یو له بل وروسته جوړوئ. دا په کوم ترتیب چلیږي؟",
          "options": [
            {
              "icon": "",
              "label": "سټاټیک بلاک یو ځل؛ بیا، د هر آبجیکټ لپاره، د انسټانس بلاک بیا کنټرکټر"
            },
            {
              "icon": "",
              "label": "ټول درې د هر آبجیکټ لپاره، د سرچینې په ترتیب کې چلیږي"
            },
            {
              "icon": "",
              "label": "د هر آبجیکټ لپاره، کنټرکټر بیا د انسټانس بلاک؛ سټاټیک بلاک یو ځل په پای کې"
            },
            {
              "icon": "",
              "label": "سټاټیک بلاک د هر آبجیکټ لپاره یو ځل، بیا د انسټانس بلاک، بیا کنټرکټر"
            }
          ]
        },
        {
          "question": "یو کلاس void log(String s) او void log(String... args) لري. تاسو log(\"hi\") ته زنګ ووهئ. کوم یو چلیږي؟",
          "options": [
            {
              "icon": "",
              "label": "log(String... args)"
            },
            {
              "icon": "",
              "label": "د کمپایل تېروتنه: زنګ مبهم دی"
            },
            {
              "icon": "",
              "label": "log(String s)"
            },
            {
              "icon": "",
              "label": "هر کوم اوورلوډ چې لومړی اعلان شوی وي"
            }
          ]
        },
        {
          "question": "د یو کنټرکټر لومړۍ کرښه this(0); ته زنګ وهي ترڅو په ورته کلاس کې بل کنټرکټر ته استازیتوب وکړي. دا چیرته ښکاره کیدو ته اجازه لري؟",
          "options": [
            {
              "icon": "",
              "label": "د باډي په هر ځای کې، مخکې له دې چې کنټرکټر بیرته راشي"
            },
            {
              "icon": "",
              "label": "یوازې د کنټرکټر د لومړي بیان په توګه"
            },
            {
              "icon": "",
              "label": "یوازې د کنټرکټر د وروستي بیان په توګه"
            },
            {
              "icon": "",
              "label": "یوازې په یو کنټرکټر کې چې د delegate کلیدي کلمې سره نښه شوی وي"
            }
          ]
        },
        {
          "question": "تاسو یو لیست ته اړتیا لرئ چې عناصر به یې په مخ کې خورا ډیر ځله داخل شي، او د تصادفي لاسرسي لوستل نادر دي. کوم یو غوره ساختماني فټ دی، او ولې؟",
          "options": [
            {
              "icon": "",
              "label": "ArrayList، ځکه چې د هغې ملاتړي اری د مخکینۍ داخلول ترټولو ګړندي کوي"
            },
            {
              "icon": "",
              "label": "هر یو، ځکه چې دواړه د ورته تضمینونو سره لیست پلي کوي"
            },
            {
              "icon": "",
              "label": "LinkedList، ځکه چې مخکینۍ داخلول O(1) دی د O(n) پرځای"
            },
            {
              "icon": "",
              "label": "LinkedList، ځکه چې دا O(1) تصادفي لاسرسی ورکوي"
            }
          ]
        },
        {
          "question": "تاسو په یو ساده HashMap کې پنځه داخلونې په یو ځانګړي ترتیب کې داخل کړئ، بیا د for-each لوپ سره پرې تکرار کړئ. داخلونې په کوم ترتیب کې راوځي؟",
          "options": [
            {
              "icon": "",
              "label": "د داخلولو ترتیب"
            },
            {
              "icon": "",
              "label": "هیڅ تضمین شوی ترتیب نشته"
            },
            {
              "icon": "",
              "label": "د کلید په واسطه ترتیب شوی"
            },
            {
              "icon": "",
              "label": "د داخلولو برعکس ترتیب"
            }
          ]
        },
        {
          "question": "یو ساده java.util.HashMap په یو وخت کې څومره null کلیدونه ساتلی شي، او څومره null ارزښتونه؟",
          "options": [
            {
              "icon": "",
              "label": "نه null کلیدونه او نه null ارزښتونه"
            },
            {
              "icon": "",
              "label": "یو null کلید، هر شمیر null ارزښتونه"
            },
            {
              "icon": "",
              "label": "هر شمیر null کلیدونه یا ارزښتونه"
            },
            {
              "icon": "",
              "label": "یو null کلید او یو null ارزښت"
            }
          ]
        },
        {
          "question": "تاسو د for-each لوپ سره یو لیست تکرار کړئ او list.remove(item) ته مستقیم په لیست کې د لوپ باډي له دننه څخه زنګ ووهئ، په ځینو خو نه په ټولو عناصرو. څه پیښیږي؟",
          "options": [
            {
              "icon": "",
              "label": "دا په سمه توګه مطلوب عناصر لرې کوي"
            },
            {
              "icon": "",
              "label": "دا یې لرې کوي، مګر یوازې وروسته له دې چې لوپ پای ته ورسیږي"
            },
            {
              "icon": "",
              "label": "دا IndexOutOfBoundsException استثنا غورځوي"
            },
            {
              "icon": "",
              "label": "دا ConcurrentModificationException غورځوي"
            }
          ]
        },
        {
          "question": "په رنټایم کې، د List<String> list په پام کې نیولو سره، تاسو واقعیا د انعکاس یا instanceof له لارې د هغې د جینریک ډول پیرامیټر په اړه څه ټاکلی شئ؟",
          "options": [
            {
              "icon": "",
              "label": "list.getElementType() String.class بیرته راګرځوي"
            },
            {
              "icon": "",
              "label": "instanceof List<String> د عنصر ډول ګوري"
            },
            {
              "icon": "",
              "label": "JVM دا د میټاډاټا په توګه ساتي چې د getGenericType() له لارې لوستل کیدی شي"
            },
            {
              "icon": "",
              "label": "د عنصر ډول په اړه هیڅ نه"
            }
          ]
        },
        {
          "question": "switch (day) { case 1: case 2: print(\"Weekday\"); break; case 6: print(\"Saturday\"); case 7: print(\"Sunday\"); break; default: print(\"?\"); } که day 6 وي، څه چاپ کیږي؟",
          "options": [
            {
              "icon": "",
              "label": "یوازې Saturday"
            },
            {
              "icon": "",
              "label": "یوازې Sunday"
            },
            {
              "icon": "",
              "label": "Saturday، Sunday، بیا ؟"
            },
            {
              "icon": "",
              "label": "Saturday، بیا Sunday"
            }
          ]
        },
        {
          "question": "د Product کلاس د قیمت له مخې یو واحد، څرګند «طبیعي» ترتیب ته اړتیا لري، او همدارنګه د کوډبیس په مختلفو ځایونو کې د نوم یا سټاک کچې له مخې د ترتیب کولو وړتیا. کوم ترکیب سم ډیزاین دی؟",
          "options": [
            {
              "icon": "",
              "label": "درې جلا ځله Comparable<Product> پلي کړئ"
            },
            {
              "icon": "",
              "label": "د قیمت لپاره Comparable، او د نوم او سټاک لپاره جلا Comparators"
            },
            {
              "icon": "",
              "label": "د نوم لپاره Comparable، او د قیمت او سټاک لپاره Comparators"
            },
            {
              "icon": "",
              "label": "یو Comparable د دریو اوورلوډ شوي compareTo میتودونو سره"
            }
          ]
        },
        {
          "question": "یو میتود new FileReader(path) ته زنګ وهي، کوم چې throws IOException اعلانوي. IOException د Exception پراخوي، نه RuntimeException. تاسو باید د دې کمپایل کولو لپاره څه وکړئ؟",
          "options": [
            {
              "icon": "",
              "label": "هیڅ نه؛ دا لکه څنګه چې لیکل شوي کمپایل کیږي"
            },
            {
              "icon": "",
              "label": "IOException ونیسئ یا throws IOException اعلان کړئ"
            },
            {
              "icon": "",
              "label": "د زنګ شاوخوا RuntimeException ونیسئ"
            },
            {
              "icon": "",
              "label": "میتود static اعلان کړئ"
            }
          ]
        },
        {
          "question": "try (Resource a = new Resource(\"A\"); Resource b = new Resource(\"B\")) { ... } دوه سرچینې کاروي چې AutoCloseable پلي کوي. که د try بلاک په نورمال ډول پای ته ورسیږي، دوی په کوم ترتیب تړل کیږي؟",
          "options": [
            {
              "icon": "",
              "label": "د اعلان په ترتیب کې، A بیا B"
            },
            {
              "icon": "",
              "label": "لومړی B، بیا A"
            },
            {
              "icon": "",
              "label": "دواړه په ورته وخت کې"
            },
            {
              "icon": "",
              "label": "یوازې B په اوتومات ډول تړل کیږي"
            }
          ]
        },
        {
          "question": "int getValue() { try { return 1; } finally { return 2; } } د getValue() زنګ وهل څه بیرته راګرځوي؟",
          "options": [
            {
              "icon": "",
              "label": "1"
            },
            {
              "icon": "",
              "label": "دا یو exception غورځوي"
            },
            {
              "icon": "",
              "label": "2"
            },
            {
              "icon": "",
              "label": "دا کمپایل نه کیږي"
            }
          ]
        },
        {
          "question": "try { ... } catch (IOException e) { ... } catch (FileNotFoundException e) { ... }، او FileNotFoundException د IOException پراخوي. کله چې تاسو د دې کمپایل کولو هڅه کوئ څه پیښیږي؟",
          "options": [
            {
              "icon": "",
              "label": "د نه رسیدونکي دوهم catch لپاره د کمپایل تېروتنه"
            },
            {
              "icon": "",
              "label": "دا کمپایل کیږي؛ د FileNotFoundException بلاک دا ډول اداره کوي"
            },
            {
              "icon": "",
              "label": "دا کمپایل کیږي، او دواړه catch بلاکونه په ترتیب سره چلیږي"
            },
            {
              "icon": "",
              "label": "دا کمپایل کیږي مګر په رنټایم کې په FileNotFoundException کې ناکام کیږي"
            }
          ]
        },
        {
          "question": "یو کلاس یو synchronized instance میتود process() او یو synchronized static میتود configure() لري. هر یو په ځانګړې توګه څه قلف کوي؟",
          "options": [
            {
              "icon": "",
              "label": "process() انسټانس قلف کوي؛ configure() د Class آبجیکټ قلف کوي"
            },
            {
              "icon": "",
              "label": "دواړه یو نړیوال JVM-پراخ قلف قلف کوي"
            },
            {
              "icon": "",
              "label": "process() د Class آبجیکټ قلف کوي؛ configure() د زنګ وهونکي انسټانس قلف کوي"
            },
            {
              "icon": "",
              "label": "هیڅ یو هم دننه د synchronized بلاک پرته هیڅ شی نه قلف کوي"
            }
          ]
        },
        {
          "question": "یو فیلډ volatile int counter = 0; اعلان شوی، او ډیری تریډونه په ورته وخت کې په هغې باندې counter++ چلوي. ایا volatile دلته د ورک شوي تازه معلوماتو مخه نیسي؟",
          "options": [
            {
              "icon": "",
              "label": "هو"
            },
            {
              "icon": "",
              "label": "No"
            },
            {
              "icon": "",
              "label": "یوازې د int او long فیلډونو لپاره"
            },
            {
              "icon": "",
              "label": "یوازې که فیلډ هم static وي"
            }
          ]
        },
        {
          "question": "انټرفیس A او انټرفیس B هر یو یو ډیفالټ میتود describe() اعلانوي. یو کلاس دواړه A او B پلي کوي او پخپله describe() نه اووررایډ کوي. څه پیښیږي؟",
          "options": [
            {
              "icon": "",
              "label": "د A نسخه چلیږي، ځکه چې A لومړی لیست شوی"
            },
            {
              "icon": "",
              "label": "دواړه نسخې چلیږي، یو له بل وروسته"
            },
            {
              "icon": "",
              "label": "دا کمپایل کیږي مګر کله چې زنګ ووهل شي یو exception غورځوي"
            },
            {
              "icon": "",
              "label": "د کمپایل تېروتنه تر هغه چې کلاس describe() اووررایډ نه کړي"
            }
          ]
        },
        {
          "question": "list.stream().filter(x -> x > 0).map(x -> x * 2); لیکل شوی مګر پایله هیڅکله د ټرمینل عملیاتو لکه .collect() یا .forEach() ته نه سپارل کیږي. کله چې دا کرښه اجرا کیږي واقعیا څه پیښیږي؟",
          "options": [
            {
              "icon": "",
              "label": "هیڅ نه؛ پایپ لاین هیڅکله نه چلیږي"
            },
            {
              "icon": "",
              "label": "هر عنصر سمدلاسه فلټر او میپ کیږي"
            },
            {
              "icon": "",
              "label": "یوازې فلټر چلیږي؛ میپ د ټرمینل عملیاتو ته انتظار باسي"
            },
            {
              "icon": "",
              "label": "دا یو IllegalStateException غورځوي"
            }
          ]
        }
      ],
      "optionOrderVersion": "9d7b97ef6cccf4e2"
    }
  },
  "testNames": {
    "java-test": "د جاوا ازموینه"
  }
}
