[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:backend\u002Fjava-exceptions":4,"config":254},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":148,"samples":168},"backend","Backend","","java-exceptions","Java Exceptions","en",75,3300,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145],{"key":19,"name":20,"count":11},"api-design","API Design",{"key":22,"name":23,"count":11},"caching","Caching",{"key":25,"name":26,"count":11},"concurrency","Concurrency",{"key":28,"name":29,"count":11},"csharp-concurrency-async","Csharp Concurrency Async",{"key":31,"name":32,"count":11},"csharp-exceptions","Csharp Exceptions",{"key":34,"name":35,"count":11},"csharp-generics-interfaces","Csharp Generics Interfaces",{"key":37,"name":38,"count":11},"csharp-memory-performance","Csharp Memory Performance",{"key":40,"name":41,"count":11},"csharp-stdlib-http","Csharp Stdlib Http",{"key":43,"name":44,"count":11},"csharp-testing-tooling","Csharp Testing Tooling",{"key":46,"name":47,"count":11},"databases-sql","Databases \u002F SQL",{"key":49,"name":50,"count":11},"go-concurrency","Go Concurrency",{"key":52,"name":53,"count":11},"go-errors","Go Errors",{"key":55,"name":56,"count":11},"go-interfaces-generics","Go Interfaces Generics",{"key":58,"name":59,"count":11},"go-memory-performance","Go Memory Performance",{"key":61,"name":62,"count":11},"go-stdlib-http","Go Stdlib Http",{"key":64,"name":65,"count":11},"go-testing-tooling","Go Testing Tooling",{"key":67,"name":68,"count":11},"java-concurrency","Java Concurrency",{"key":8,"name":9,"count":11},{"key":71,"name":72,"count":11},"java-generics-interfaces","Java Generics Interfaces",{"key":74,"name":75,"count":11},"java-memory-jvm","Java Memory Jvm",{"key":77,"name":78,"count":11},"java-stdlib-http","Java Stdlib Http",{"key":80,"name":81,"count":11},"java-testing-tooling","Java Testing Tooling",{"key":83,"name":84,"count":11},"messaging-queues","Messaging \u002F Queues",{"key":86,"name":87,"count":11},"networking-http","Networking \u002F HTTP",{"key":89,"name":90,"count":11},"nodejs-error-handling","Nodejs Error Handling",{"key":92,"name":93,"count":11},"nodejs-event-loop-async","Nodejs Event Loop Async",{"key":95,"name":96,"count":11},"nodejs-memory-performance","Nodejs Memory Performance",{"key":98,"name":99,"count":11},"nodejs-modules-streams","Nodejs Modules Streams",{"key":101,"name":102,"count":11},"nodejs-stdlib-http","Nodejs Stdlib Http",{"key":104,"name":105,"count":11},"nodejs-testing-tooling","Nodejs Testing Tooling",{"key":107,"name":108,"count":11},"php-concurrency-async","Php Concurrency Async",{"key":110,"name":111,"count":11},"php-exceptions","Php Exceptions",{"key":113,"name":114,"count":11},"php-generics-interfaces","Php Generics Interfaces",{"key":116,"name":117,"count":11},"php-memory-performance","Php Memory Performance",{"key":119,"name":120,"count":11},"php-stdlib-http","Php Stdlib Http",{"key":122,"name":123,"count":11},"php-testing-tooling","Php Testing Tooling",{"key":125,"name":126,"count":11},"python-concurrency-async","Python Concurrency Async",{"key":128,"name":129,"count":11},"python-errors-context","Python Errors Context",{"key":131,"name":132,"count":11},"python-memory-performance","Python Memory Performance",{"key":134,"name":135,"count":11},"python-stdlib-http","Python Stdlib Http",{"key":137,"name":138,"count":11},"python-testing-tooling","Python Testing Tooling",{"key":140,"name":141,"count":11},"python-typing-oop","Python Typing Oop",{"key":143,"name":144,"count":11},"security","Security",{"key":146,"name":147,"count":11},"testing","Testing",[149,153,156,159,162,165],{"key":150,"name":151,"count":152},"csharp","C#\u002F.NET",450,{"key":154,"name":155,"count":152},"go","Go",{"key":157,"name":158,"count":152},"java","Java",{"key":160,"name":161,"count":152},"nodejs","Node.js",{"key":163,"name":164,"count":152},"php","PHP",{"key":166,"name":167,"count":152},"python","Python",[169,187,201,214,228,241],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":178,"explanation":186},"019f6e5f-23c2-7514-a5c1-a3ae52f7cd1e",1,"Which of these four standard classes is a **checked** exception in Java?",[174,177,180,183],{"key":175,"text":176},"a","NullPointerException, because dereferencing null is a common enough mistake that the compiler forces you to handle it",{"key":178,"text":179},"b","IOException, because it extends Exception directly rather than RuntimeException, so it is checked",{"key":181,"text":182},"c","ArithmeticException, because dividing by zero is always detectable at compile time and therefore checked",{"key":184,"text":185},"d","IllegalStateException, because it signals a serious programming error that must always be declared or caught","A checked exception is any subclass of Exception that does NOT extend RuntimeException. IOException extends Exception directly, so it is checked and must be declared with `throws` or caught. NullPointerException, ArithmeticException and IllegalStateException all extend RuntimeException, so they are unchecked and the compiler never forces you to handle them.",{"id":188,"topic":9,"difficulty":189,"body":190,"options":191,"correct_key":178,"explanation":200},"019f6e5f-23c3-7077-a469-05d9f44e6661",2,"```java\nclass Res implements AutoCloseable {\n    private final String name;\n    Res(String name) {\n        this.name = name;\n        if (name.equals(\"B\")) {\n            throw new RuntimeException(\"cannot open \" + name);\n        }\n        System.out.println(\"open \" + name);\n    }\n    public void close() { System.out.println(\"close \" + name); }\n}\n\npublic class Main {\n    public static void main(String[] args) {\n        try (Res a = new Res(\"A\"); Res b = new Res(\"B\")) {\n            System.out.println(\"body\");\n        } catch (RuntimeException e) {\n            System.out.println(\"caught: \" + e.getMessage());\n        }\n    }\n}\n```\nWhat is printed?",[192,194,196,198],{"key":175,"text":193},"open A, caught: cannot open B — resource A is never closed because its constructor already ran but the try body never started",{"key":178,"text":195},"open A, close A, caught: cannot open B — the JVM tracks that resource A was already successfully constructed and closes it even though resource B's constructor failed and the try body never ran",{"key":181,"text":197},"Nothing is printed and the JVM terminates abnormally, because a failing constructor inside a try-with-resources header leaves the resource list in an undefined state",{"key":184,"text":199},"open A, open B, close A, caught: cannot open B — B's constructor runs to completion before any resource is validated, and only the first resource gets closed afterward","try-with-resources closes exactly the resources that were successfully constructed before the failure, in reverse order — it does not require the try body to have started. Here `a` is fully constructed (\"open A\" prints), then constructing `b` throws before it is assigned, so `b` was never a resource to close. The statement still closes `a` (\"close A\") as it unwinds, and the RuntimeException then propagates to the catch clause.",{"id":202,"topic":9,"difficulty":189,"body":203,"options":204,"correct_key":175,"explanation":213},"019f6e5f-23c3-7c20-b4c8-16c6036113a3","```java\npublic class Main {\n    static int test() {\n        try {\n            return 1;\n        } finally {\n            return 2;\n        }\n    }\n    public static void main(String[] args) {\n        System.out.println(test());\n    }\n}\n```\nWhat is printed?",[205,207,209,211],{"key":175,"text":206},"2, because the return statement inside finally discards the pending return value from try and becomes the method's actual result",{"key":178,"text":208},"1, because the try block's return value is already committed before finally runs and cannot be replaced",{"key":181,"text":210},"The code fails to compile, because a return statement is not allowed inside a finally block",{"key":184,"text":212},"0, because returning from both try and finally cancels the return altogether and the method falls through to the implicit default value for its declared return type","A `return` inside `finally` swallows any pending return (or thrown exception) from the try\u002Fcatch block and becomes the method's actual outcome. Here try schedules a return of 1, but before that value is handed back, finally runs and returns 2 instead — so `test()` returns 2. This is a well-known finally trap and is legal Java, not a compile error.",{"id":215,"topic":9,"difficulty":216,"body":217,"options":218,"correct_key":181,"explanation":227},"019f6e5f-23c4-758a-8ca6-44d14166d167",3,"```java\npublic class Main {\n    static void inner() {\n        try {\n            throw new RuntimeException(\"boom\");\n        } finally {\n            System.out.println(\"inner-finally\");\n        }\n    }\n    public static void main(String[] args) {\n        try {\n            inner();\n        } catch (RuntimeException e) {\n            System.out.println(\"caught: \" + e.getMessage());\n        }\n    }\n}\n```\nWhat is printed?",[219,221,223,225],{"key":175,"text":220},"caught: boom — the finally block never runs because the exception is thrown and caught in a different method",{"key":178,"text":222},"inner-finally — execution stops after the finally block runs, so the exception never reaches main",{"key":181,"text":224},"inner-finally, caught: boom — finally runs first as the exception propagates, then the caller catches it",{"key":184,"text":226},"caught: boom, inner-finally — the exception is caught first, and finally runs afterward as a cleanup step","When an exception is thrown inside try, `finally` runs BEFORE the exception continues propagating up the call stack, even though finally itself doesn't catch anything. So `inner-finally` prints first as the stack unwinds out of `inner()`, and only then does the exception reach `main`'s catch block, printing `caught: boom`.",{"id":229,"topic":9,"difficulty":189,"body":230,"options":231,"correct_key":178,"explanation":240},"019f6e5f-23c4-7eb2-ac47-4e0aaff5c697","```java\ntry {\n    Files.readAllBytes(Path.of(\"data.txt\"));\n    Integer.parseInt(\"x\");\n} catch (IOException | NumberFormatException e) {\n    e = new NumberFormatException(\"replaced\");\n    System.out.println(e.getMessage());\n}\n```\nWhat is true about this multi-catch block?",[232,234,236,238],{"key":175,"text":233},"It compiles and runs correctly, because a multi-catch parameter can be reassigned like any normal local variable",{"key":178,"text":235},"It fails to compile, because a multi-catch parameter `e` is implicitly final and cannot be reassigned inside the catch block",{"key":181,"text":237},"It fails to compile, because IOException and NumberFormatException cannot appear together in the same multi-catch clause, regardless of their position in the exception hierarchy",{"key":184,"text":239},"It compiles, but reassigning e silently has no effect and the original caught exception's message is printed instead","A multi-catch parameter (`catch (A | B e)`) is implicitly `final`, so `e = new NumberFormatException(...)` is a compile error. This restriction doesn't apply to a single-type catch parameter, which can be reassigned. Combining unrelated exception types like IOException and NumberFormatException in one multi-catch clause is perfectly legal as long as neither is a subtype of the other.",{"id":242,"topic":9,"difficulty":171,"body":243,"options":244,"correct_key":184,"explanation":253},"019f6e5f-23c8-7803-a288-18b3701f383b","A method calls another method that declares `throws IOException`, and the calling method does not catch it. What must the calling method do for the code to compile?",[245,247,249,251],{"key":175,"text":246},"Nothing special is required, because IOException is unchecked and the compiler never verifies its handling",{"key":178,"text":248},"It must wrap the call in a try block with an empty catch clause, since Java requires every checked call site to have one",{"key":181,"text":250},"It must catch IOException specifically; declaring it with `throws` on the calling method's own signature is never accepted as a valid alternative by the compiler",{"key":184,"text":252},"It must either catch IOException or declare `throws IOException` on its own signature, propagating the obligation to its caller","IOException is a checked exception, so the compiler enforces the \"catch or specify\" rule: any method that can let it escape must either handle it in a try\u002Fcatch or declare it with `throws IOException` in its own signature, which simply pushes the same obligation onto whoever calls that method next.",{"fields":255,"seniorities":424,"interview_shapes":425,"locales":430,"oauth":432,"question_count":435,"coach_enabled":436,"jd_match_enabled":436},[256,267,287,303,327,340,359,378,398,405,411,418],{"key":5,"name_tr":6,"name_en":6,"sort":171,"specializations":257},[258,261,262,263,264,265,266],{"key":259,"name":260,"field":5},"general","Genel",{"key":154,"name":155,"field":5},{"key":166,"name":167,"field":5},{"key":157,"name":158,"field":5},{"key":150,"name":151,"field":5},{"key":160,"name":161,"field":5},{"key":163,"name":164,"field":5},{"key":268,"name_tr":269,"name_en":269,"sort":189,"specializations":270},"frontend","Frontend",[271,272,275,278,281,284],{"key":259,"name":260,"field":268},{"key":273,"name":274,"field":268},"javascript","JavaScript",{"key":276,"name":277,"field":268},"typescript","TypeScript",{"key":279,"name":280,"field":268},"react","React",{"key":282,"name":283,"field":268},"vue","Vue",{"key":285,"name":286,"field":268},"angular","Angular",{"key":288,"name_tr":289,"name_en":289,"sort":216,"specializations":290},"fullstack","Fullstack",[291,292,293,294,295,296,297,298,299,300,301,302],{"key":259,"name":260,"field":288},{"key":154,"name":155,"field":5},{"key":166,"name":167,"field":5},{"key":157,"name":158,"field":5},{"key":150,"name":151,"field":5},{"key":160,"name":161,"field":5},{"key":163,"name":164,"field":5},{"key":273,"name":274,"field":268},{"key":276,"name":277,"field":268},{"key":279,"name":280,"field":268},{"key":282,"name":283,"field":268},{"key":285,"name":286,"field":268},{"key":304,"name_tr":305,"name_en":305,"sort":306,"specializations":307},"devops-cloud","DevOps \u002F Cloud",4,[308,309,312,315,318,321,324],{"key":259,"name":260,"field":304},{"key":310,"name":311,"field":304},"aws","AWS",{"key":313,"name":314,"field":304},"gcp","GCP",{"key":316,"name":317,"field":304},"azure","Azure",{"key":319,"name":320,"field":304},"kubernetes","Kubernetes",{"key":322,"name":323,"field":304},"terraform","Terraform",{"key":325,"name":326,"field":304},"linux","Linux",{"key":328,"name_tr":329,"name_en":329,"sort":330,"specializations":331},"ai-engineer","AI Engineer",5,[332,333,334,337],{"key":259,"name":260,"field":328},{"key":166,"name":167,"field":328},{"key":335,"name":336,"field":328},"llm-rag","LLM\u002FRAG",{"key":338,"name":339,"field":328},"mlops","MLOps",{"key":341,"name_tr":342,"name_en":343,"sort":344,"specializations":345},"database","Veritabanı","Database",6,[346,347,350,353,356],{"key":259,"name":260,"field":341},{"key":348,"name":349,"field":341},"postgresql","PostgreSQL",{"key":351,"name":352,"field":341},"mysql","MySQL",{"key":354,"name":355,"field":341},"mongodb","MongoDB",{"key":357,"name":358,"field":341},"redis","Redis",{"key":360,"name_tr":361,"name_en":362,"sort":363,"specializations":364},"mobile","Mobil","Mobile",7,[365,366,369,372,375],{"key":259,"name":260,"field":360},{"key":367,"name":368,"field":360},"ios-swift","iOS (Swift)",{"key":370,"name":371,"field":360},"android-kotlin","Android (Kotlin)",{"key":373,"name":374,"field":360},"flutter","Flutter",{"key":376,"name":377,"field":360},"react-native","React Native",{"key":143,"name_tr":379,"name_en":144,"sort":380,"specializations":381},"Güvenlik",8,[382,383,386,389,392,395],{"key":259,"name":260,"field":143},{"key":384,"name":385,"field":143},"appsec","AppSec",{"key":387,"name":388,"field":143},"offensive-pentest","Offensive \u002F Pentest",{"key":390,"name":391,"field":143},"cloud-security","Cloud Security",{"key":393,"name":394,"field":143},"devsecops","DevSecOps",{"key":396,"name":397,"field":143},"blue-team-incident","Blue Team \u002F Incident",{"key":399,"name_tr":400,"name_en":401,"sort":402,"specializations":403},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[404],{"key":259,"name":260,"field":399},{"key":406,"name_tr":407,"name_en":407,"sort":408,"specializations":409},"data-engineer","Data Engineer",10,[410],{"key":259,"name":260,"field":406},{"key":412,"name_tr":413,"name_en":414,"sort":415,"specializations":416},"game-dev","Oyun Geliştirme","Game Development",11,[417],{"key":259,"name":260,"field":412},{"key":419,"name_tr":420,"name_en":420,"sort":421,"specializations":422},"ml-engineer","ML Engineer",12,[423],{"key":259,"name":260,"field":419},[14,15,16],{"junior":426,"mid":428,"senior":429},{"questions":427,"median_sec":3},20,{"questions":427,"median_sec":3},{"questions":427,"median_sec":3},[431,10],"tr",[433,434],"google","github",21750,true]