JAVA MÜLAKAT SORULARI 11

Serdar Arslan
3 min readAug 4, 2022

--

Java Mülakat Soruları isimli yazımızın on birinci kısmında iyi okumalar ve mülakatlarda bol şans diliyorum.

51.Hard parse nedir?

Hard Parse: Eğer bir Oracle veritabanı daha önceki kodu yeniden kullanamazsa bu durumda uygulama kodu için yeni bir versiyon çıkartması gerekmektedir. Bu operasyonun adı hard parse’tır ya da diğer bir ismi ile “library cache miss”dir. Bu arada çok önemli bir not, her DDL komutu için hard parse yapılması zorunludur ve yapılır. Hard parse işlemi sırasında data dictionary ve library cache defalarca taranır ve veritabanı tarafından erişilir. Bir veritabanı bu alanlara eriştiği zaman “latch” ismini verdiğimiz ve library cache ya da data dictionary üzerinde oluşan “lock” yani kilitler oluşmaktadır. Satır seviyesinde bir kilit değil, mantıksal bir kilittir. Latch olarak adlandırılan bu kilit mekanizmaları eş zamanlılık çatışmalarına ve sorgularda yavaşlamalara neden olmaktadır. Kaynaklar paylaşılamıyor olabilir.

Kısaca gönderilen sorgu her seferinde farklı sorgular olursa sorgu tekrar tekrar bileşenlerine ayrılarak derlenme işlemi yapılmasına hard parse denir.

52.Soft parse nedir?

Soft parse diğer bir adı ile “library cache hit”tir. Eğer girilen SQL ifadesinin parse call sırasında shared pool içerisinde yeniden kullanılabilecek durumda olan bir planı varsa bu durumda soft parse gerçekleşir. Genel olarak soft parse’ın hard parse’dan fazla olması tercih edilebilen bir durumdur.

Oracle üzerinde bir sorgu çalıştırdığın zaman bunu paylaşımlı bir alanda daha önceden gelmiş ve çalıştırılmış bir sorgu olarak hafızada tutar. Eğer birebir aynı sorgu tekrar gelirse bu paylaşımlı alandan zaten derlenmiş olan sonucu alıp çalıştırır. Buna soft parse denir.

Soft parse olayında sorgular kenarda bir alanda tutulduğu için performans olarak daha hızlı olacaktır. Aslında işlemleri daha hızlı yapmak için kullanılan bir teknikdir.

Programcı genel olarak gönderdiği sorguyu tekrar tekrar derleme işlemine sokmamak için bazı kullanımları alışkanlık haline getirmelidir. Prepared statement kullanımını sürekli hale getirmelidir. Java gibi birçok programlama dili prepared statment yapısını direk destekler.

53. Statement nesnesi ne işe yarar?

Java’da veritabanı işlemlerini Statement nesnesi üzerinden gerçekleştiriyoruz. Statement nesnesi sorguyu veritabanında çalıştırma işlemini gerçekleştirmektedir. Bu çalıştırma işlemini birden fazla şekilde yapabilme yeteneğine sahiptir.

1. Statement : Oluşturulan sorguyu her seferinde tekrar derleyip çalıştıran nesne türü.

Insert, Update, Select sorgularının her seferinde yeniden derlenip (aynı sorgular olsa dahi) çalıştırıldığı yapıdır.

2. PreparedStatement : Bir kere veritabanına gönderilmiş sorgunun bir daha derlenmesine gerek kalmadan çalıştıran nesne türü.

3. CallableStatement : Stored Procedure’ları çalıştıran nesne türüdür.

54. PreparedStatement nasıl çalışır?

PreparedStatement nesnesi, ile sorgu bir kez ön derlemeden geçtikten sonra set() metodu ile sorgunun tekrar derlenmesine gerek kalmaksızın gerektikçe çağrılabilmesidir.

Sorguya eklenen bir değer için yer tutucu olarak bir soru işareti kullanılır. Sorgu her çalıştığında bu değer değiştirilir.

“executeQuery” methodu sorgu tarafından istenen veriyi “ResultSet” nesnesi olarak geri döndürür. “executeUpdate” methodu “UPDATE” ve “DELETE” sql ifadeleri içeren sorguların çalıştırılmasında kullanılır.

Ayrıca Prepare Statement kullanımı JAVA’ da olan veritabanı işlemlerinde bize SQL Injection saldırısını engellemede avantaj sağlayan bir kullanımdır.

SQL Injection SQL dili özelliklerinden faydalanılarak standart uygulama ekranındaki ilgili alana ek SQL ifadelerini ekleyerek yapılan bir tür atak tekniğidir.

55. Java Serialization nedir?

Serializable tanımı temel olarak bir değerin byte dizisine dönüştürülüp disk üzerinde hard copy olarak saklanabilmesine olanak sağlayan yapıdır. Bunun bize en büyük faydası, Java serileştirilmiş bir nesne (başka bir deyişle dosya), Java’nın kullanıldığı tüm platformlarda başarılı bir şekilde tekrar eski haline dönüştürülebilmektedir.

Java’da serileştirme işlemi için Serializable Interface’ini kullanıyoruz.

import java.io.Serializable;

Public class Kisi implements Serializable {

Yazımızın Devamı:

https://medium.com/@serdararslan116/java-m%C3%BClakat-sorulari-12-2ae78772f6de

--

--