[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:backend\u002Fjava-memory-jvm":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-memory-jvm","Java Memory Jvm","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,72,75,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":70,"name":71,"count":11},"java-exceptions","Java Exceptions",{"key":73,"name":74,"count":11},"java-generics-interfaces","Java Generics Interfaces",{"key":8,"name":9,"count":11},{"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,227,240],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":178,"explanation":186},"019f6e5f-2402-79d8-8220-446786db7617",1,"```java\npublic class Demo {\n    public static void main(String[] args) {\n        int x = 5;\n        Point p = new Point(1, 2);\n    }\n}\n\nclass Point {\n    int x, y;\n    Point(int x, int y) { this.x = x; this.y = y; }\n}\n```\nWhere do the local variable `x` and the `Point` object referenced by `p` live in the JVM's memory areas?",[174,177,180,183],{"key":175,"text":176},"a","Both `x` and the `Point` object live on the heap; only `p` itself lives in the stack frame",{"key":178,"text":179},"b","`x` and `p` sit in the stack frame; only the `Point` object lives on the heap",{"key":181,"text":182},"c","Both `x` and the `Point` object live inside `main`'s stack frame",{"key":184,"text":185},"d","`x` lives on the heap, while the `Point` object and `p` both live on the stack","Each thread has its own stack made up of frames, one per active method call. Primitive local variables like `x` are stored directly inside the current frame. Reference variables like `p` are also stored in the frame, but the object they point to -- here, the `Point` instance created by `new` -- is allocated on the shared heap, which all threads can reach. When `main` returns, the frame (and `x`, `p`) disappear, but the `Point` object only goes away once nothing references it anymore and the garbage collector reclaims it.",{"id":188,"topic":9,"difficulty":189,"body":190,"options":191,"correct_key":184,"explanation":200},"019f6e5f-2403-7487-9bf8-049add58d991",2,"```java\nString a = \"hello\";\nString b = \"hello\";\nSystem.out.println(a == b);\n```\nWhat does this print, and why?",[192,194,196,198],{"key":175,"text":193},"`false`, because `==` always compares object identity and string literals are never shared",{"key":178,"text":195},"`false`, because every `String` literal allocates a new object on the heap",{"key":181,"text":197},"`true`, but only because the JIT compiler happens to optimize this specific pattern away",{"key":184,"text":199},"`true`, because both literals are interned into the same entry in the string pool","String literals are automatically interned by the JVM: when the class is loaded, `\"hello\"` is placed once into the string pool, and any other occurrence of the identical literal in the same or another class reuses that same pooled `String` object instead of allocating a new one. Since `a` and `b` both refer to that one pooled object, `==` (identity comparison) returns `true`. This is a JVM-level guarantee for literals, not a JIT optimization, and it's exactly why `==` is unreliable for comparing strings built at runtime instead of literals.",{"id":202,"topic":9,"difficulty":189,"body":203,"options":204,"correct_key":175,"explanation":213},"019f6e5f-2403-7ddf-a012-dd0bc121fb49","```java\nString a = \"hello\";\nString b = new String(\"hello\");\nSystem.out.println(a == b);\nSystem.out.println(a.equals(b));\n```\nWhat is printed, in order?",[205,207,209,211],{"key":175,"text":206},"`false` then `true`",{"key":178,"text":208},"`true` then `true`",{"key":181,"text":210},"`false` then `false`",{"key":184,"text":212},"`true` then `false`","`new String(\"hello\")` explicitly forces allocation of a brand-new `String` object on the heap, even though its characters are copied from the pooled literal -- it is never automatically added to the string pool. So `a` (the pooled literal) and `b` (the freshly allocated copy) are different objects, making `a == b` `false`. `equals` compares character content rather than identity, and both strings hold the same characters, so `a.equals(b)` is `true`. This pair of lines is the classic illustration of why identity comparison and value comparison for `String` are not interchangeable.",{"id":215,"topic":9,"difficulty":171,"body":216,"options":217,"correct_key":181,"explanation":226},"019f6e5f-2404-7514-80dd-1d04b760dd2d","A Java program crashes with `StackOverflowError`. Which best describes what actually ran out?",[218,220,222,224],{"key":175,"text":219},"The heap ran out of space to allocate new objects",{"key":178,"text":221},"The JVM ran out of native operating-system threads",{"key":181,"text":223},"A thread's call stack outgrew its fixed size from deep recursion",{"key":184,"text":225},"The garbage collector could not free enough unreachable objects in time","`StackOverflowError` specifically means a single thread's call stack -- the region holding one frame per active method invocation -- grew past its configured size, almost always because of runaway or excessively deep recursion (each recursive call pushes another frame without returning). This is a distinct memory area and failure mode from the heap: `OutOfMemoryError: Java heap space` means the heap itself is full of objects that can't be collected, which is a different problem with a different fix.",{"id":228,"topic":9,"difficulty":189,"body":229,"options":230,"correct_key":178,"explanation":239},"019f6e5f-2404-7b05-8734-70adb931fb97","```java\nString s = \"a\";\nfor (int i = 0; i \u003C 3; i++) {\n    s += i;\n}\nSystem.out.println(s);\n```\nEach time `s += i` executes inside the loop, what happens to the `String` object in memory, and why?",[231,233,235,237],{"key":175,"text":232},"The existing String object referenced by `s` is mutated in place to append the new character; only one String object ever exists",{"key":178,"text":234},"Because `String` is immutable, `s += i` creates a brand-new String object each iteration (the old contents concatenated with `i`), and the previous object referenced by `s` becomes unreachable garbage; after the loop, several discarded intermediate String objects have been created along the way",{"key":181,"text":236},"The JVM always rewrites this loop to use a single `StringBuilder` call across all iterations, so no matter how many times the loop runs, at most one intermediate object is ever created",{"key":184,"text":238},"`s += i` only allocates a new object the first time the loop runs; later iterations reuse the same underlying character array since Java arrays can be resized","Java `String` objects are immutable -- no method on `String` can change the characters it already holds. Compilers commonly translate a single `+` expression into an internal buffer-based call for efficiency, but that optimization applies per concatenation expression; it does not merge separate loop iterations into one accumulator, because `s` is reassigned to a new reference on every iteration. So each `s += i` produces a new String object holding the combined characters, and the object `s` previously pointed to becomes eligible for garbage collection. For repeated concatenation across many iterations, using a single `StringBuilder` and calling `.append()` avoids creating and discarding all these intermediate objects.",{"id":241,"topic":9,"difficulty":242,"body":243,"options":244,"correct_key":175,"explanation":253},"019f6e5f-2405-744d-b701-c721ec35f304",3,"A junior developer relies on overriding `finalize()` to close a file handle when an object is garbage collected, instead of using try-with-resources. What is the core problem with this approach?",[245,247,249,251],{"key":175,"text":246},"GC decides if and when `finalize()` runs, so cleanup timing is unpredictable",{"key":178,"text":248},"`finalize()` is called synchronously the instant a reference goes out of scope, which can block the calling thread",{"key":181,"text":250},"`finalize()` can only be used on classes that also implement `AutoCloseable`",{"key":184,"text":252},"Objects that override `finalize()` are automatically ineligible for garbage collection","Relying on `finalize()` for resource cleanup is unreliable because the JVM makes no promise about when -- or even whether -- `finalize()` runs; it depends entirely on when (or if) the garbage collector decides an object is unreachable and schedules finalization, which could be long after the resource should have been released, or never if the JVM exits first. Try-with-resources, in contrast, calls `close()` deterministically the moment the block exits, which is why it's the recommended pattern for anything holding an OS-level resource like a file handle or socket.",{"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":242,"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]