5 Ekim 2016 Çarşamba

Developer Mülakat Soruları

      S.a. arkadaşlar,
Uzun bir aradan sonra tekrar ilk kez yazıyorum. Bugün yazacağım konu direkt java ile ilgili bir konu değil. Mülakatlarda karşılaştığım ve farklı sitelerden derlediğim java mülakat sorularını ele alıp yine kendimizce cevap arayacağız. Eksiklik veya hata olduğunu düşündüğünüz yerlerde benimle irtibata geçersiniz tekrardan gözden geçirebilir. Umarım istediğiniz gibi güzel işler bulursunuz.
Not: 2.yazıya buradan erişebilirsiniz.

Polimorfizm nedir ?
Farklı sınıflar arasında aynı metod çağırmaya denir. Java ortamı çalıştırma zamanında yöntemin hangi sınıfa ait tanımdan çalıştıracağını dinamik olarak belirlemesidir.[1]http://emyo.beun.edu.tr/cv/fapaydin/wp-content/uploads/sites/3/2015/10/BBS-515-DN09.pdf

Inheritance nedir?
Kalıtım: Bazı özellikleri tekrar tekrar yazmak yerine kullanabileceğimiz bir yapı. Örnek vermek gerekirse bir ailemiz var. Ve bu ailenin bazı özellikleri anne ve babadan gelir. Bu anne babadan gelen özellikleri tekrar çocuk yazmak yerine , anne-babadan referans kullanarak bu bilgileri çekebiliriz. Fakat bununla birlikte çocuğun kendine has özelliklerini ayrıca da ekleyebiliyoruz. Kalıtımın en sade ifadesiyle böyle anlatabilecğimi düşünüyorum.

   public class cocuk extends annebaba {
 
//Yazılacak Kodlar
}

   Yukarıdaki örnek ile anne-babadan gelen özellikleri çocuk artık kullanabilir hale gelmektedir. Kısaca kalıtım böyle.[2]

Interface ve Abstract class arasındaki farklar ?
       Öncelikle daha önceki yazılarda Abstract sınıfların genellikle IS-A(dır,dir) ilişkilerinde,kalıtım(inheritance) özelliğini kullanarak kod tekrarını azaltmak için kullanıldığını söylemiştik. Interface sınıfların ise daha çok CAN-DO(yapabilir..) tarzı ilişkilerde değişen kavramları uygulamadan soyutlamak için kullanıldığını söylemiştik.Ayıca Interface  içerisinde metodların  içerisi  boştur  fakat  abstract  sınıflar  içerisinde implemente edilmiş(içi dolu olan) metodlar yazabiliriz.[3] http://www.cihataltuntas.com/interface-mi-abstract-mi/


Java5  ne getirmiştir ?
Generics          : Typed Collections   List<String>
Loop yapısı      :  for(String s : list)
Autoboxing / unboxing : Integer int arasındaki dönüşümü jdk yapar
Annotation   : @Override
Enum
Static import
Var args

Checked ve Unchecked Exceptionlar nedir ?
Checked       : Compile time sırasında handle etmemiz gereken exceptionlar. FileNotFoundException
Unchecked      :  Compiler ın  handle  etmeye  zorlamadığı   exceptionlar  .NullPointerException
Örnek üzerinden gidersek  bir  dosyayı  açmaya  çalıştığımızda  compiler  kodlarımızı try-catch bloğuna almaya zorlar. Fakat NullPointerException vermez.[4]http://serkansakinmaz.blogspot.com.tr/2014/03/java-is-gorusmelerinde-sk-ckan-sorular.html?view=mosaic

Overriding nedir ?
Kalı tım  yoluyla miras olarak aldığımız  metodu  ezmektektir. ( Araba hızlanıyor yerine , Ferrari hızlanıyor) 

Overloading nedir?
Overloading    bir sınıf içerisinde  metodu  aynı   isimle  ,  aynı   geri  dönüş değeriyle fakat farklı  parametrelerle kullanmaktır. Daha fazla bilgi için tıklayınız.

Serilization nedir ?
Serilization  ile  java objeleri byte  lar halinde stream  lere yazı labilir  . Böylece bir java objesi veritabanına kaydedilebilir. Daha fazla bilgi için tıklayınız.

final anahtar kelimesi ne işe yarar ?
Final variables(değişkenler) : Değiştirilemez. Static  ile beraber   Constant olarak kullanı labilir
Final class           :Extend edilemez
Final methods      : Override edilemez. Daha fazla bilgi için tıklayınız.

error ve exception farkı nedir ?
Error    :OutOfMemoryError  gibi  hande  edilemeyen  hatalardır.  Fakat exception tipindeki hataları  try-catch ile ele alabiliriz. Daha fazla bilgi için tıklayınız.

Static değerlerin özellikleri ?
Static variable :  Class a aittir yani her nesne için bir defa oluşturulmaz. Memory de bir defa oluşturulur
Static method :  Class a aittir yani her nesne için bir defa oluşturulmaz. Class ismiyle çağrı labilir
Static block   : Class execute edildiği zaman heap de yerini alır. Daha fazla bilgi için tıklayınız.

 Encapsulation nedir ?
Kapsülleme: Bir sınıfın içeriğinin bilinmesine gerek kalmadan kullanılabilmesidir. Bir örnekle zenginleştirmek gerekirse, arabası olan bir şoförün motor çalışma mantığına bilmesine gerek yoktur. Sadece anahtarla arabayı çalıştırıp gaza bastığında arabanın gitmesi kafidir. Aynen bu şekilde de kapsülleme yaparak dışarıya gözükmemesi gereken şeyleri gizleye biliyoruz. Burada bir kaç kavramı verip bu konuyu da bitirelim.

     Public: Herkesin görebileceği değişkenlerdir
     Procted: Aynı paket içinde görülebilecek , fakat farklı paketlerden ulaşılamayan değişkenlerdir.
     Private: Sadece aynı sınıftan erişilebilen değişkenlerdir.

     Bu değişkenlerin ulaşılmaz olanlarına ulaşılmak istendiğinde getter/setter metodlarını kullanmak zorundayız. Fakat şu unutulmamalıdır. Sadece kullanacağımız değişkenleri getter/setter yapmalıyız. Yoksa private değişkenlerimizin publicten pek farkı kalmayacaktır. 

Object oriented prensipleri nelerdir ?
Encapsulation  : Değişkenler private yapı larak get.. ve set.. metodlarıylaerişilir
Abstraction  : Gereksiz ayrıntı lar kullanıcıya sunulmaz
Inheritance    :  Bir  sını fın  özellikleri  extend  anahtar  kelimesiyle  miras alınır.
Polymorphism  :  Runtime  sırasında  oluşturulan  sını fın  metodununçağrı lmasıdır.[4],[5]

 Coupling nedir ?
İki  sınıfın  birbirine  olan  bağımlı lığı   diyebiliriz  .  Nesneye  yönelik programlamada  nesnelerin  birbirleriyle  az  bağımlı   olması   benimsenir  (low coupling)  .  Örnek  olarak  A  sını fı   B  sını fına  ne  kadar  bağımlıysa  o  kadar coupling(bağımlı lık  )  artar  .  Bu  nedenle  projenin  bakımı   ve  genişlitebilirliği azalır  .  Low  coupling  için  çeşitli  prensipler  uygulanır  :  interface  kullanımı , çeşitli tasarım patternleri gibi.[6]http://malikmasis.blogspot.com.tr/2014/12/coupling-cohesion.html

 Cohesion nedir ?
Bir  sınıfın  oluşturulma  amacını   ne  kadar  temsil  ettiğini  gösterir  .  Nesneye yönelik programlamada sını fların belirli bir amaca yönelik yazı lması  beklenir (high  cohesion).  Örnek  verirsek  matematik  işlemi  yapan  bir  sını fa  file işlemleri yapan bir metod daha eklediğimiz zaman high cohesion prensibini kırmış oluyoruz.[6]

 Integer ve int arasındaki fark nedir ?
            int : primitive değişken tipidir. Sınıf olmadığı  için herhangi bir metodu da yoktur.
Integer  : Bir  sınıftır  .  parseInt  gibi metodları  mevcuttur. Bu  sını flara wrapper sınıflarda diyebiliriz.Yani  içerisinde  int  tipinde bir değişken ve sayısal işlemler yapmamızı  sağlayan metodlar mevcuttur.[4] Daha fazla bilgi için tıklayınız.

Upcasting nedir ? Downcasting nedir ?
§  Üst Sınıf Tipine Dönüştürme (UpCast)
Üst sınıfa dönüştürülürken dikkat edilmesi gereken şudur. Üst sınıfa dönüştürülen nesne kendi sınıfındaki özel metotlara erişemezler. Sadece Override edilmiş metotlara ve üst sınıfın metotlarına erişebilirler.
§  Alt Sınıf Tipine Dönüştürme(DownCast)
Üst sınıftaki Nesneyi alt sınıflara Cast etmemizin sebebi. İstenilen Nesnenin sadece istenilen metotlarına erişmesini sağlamaktır.
[7] https://yazilimokulu.wordpress.com/tag/upcast-java/

Soru: Bir try/catch/finally yapisi düsünün. try bünyesinde bir unchecked exception olustugunda finally blogu devreye girer mi?
Cevap: Evet. finally icinde bulunan kodlar her zaman kosturulur.[8]http://www.btsoru.com/questions/68/bir-javacnn-is-gorusmesinde-karslasabilecegi-sorular-nelerdir

Soru: Bir sinif düsünün. write() ve read() isminde synchronized kelimesi ile tanimlanmis iki metodu mevcut. Thead A write() metodu icinde bulunuyor. Thread B'nin durumu nedir?
Cevap: Thread B bloke olmus durumdadir. Her nesne bünyesinde thread sekronizyonu icin bir monitor vardir. Thread A write() metodunda oldugu icin bu monitora sahiptir. Bu yüzden B read() e giris yapabilmek icin bu monitor elde etmek icin bekler. Thread A write() metodunu terk ettigi zaman bu monitor Thread B tarafindan edinilir.[8]

Soru: Hibernate bünyesindeki caching mekanizmalari nelerdir?
Cevap: first ve second level cache [8]

Soru: Iki veri tabani tablosu mevcut. Ilk tabloda 10 kayit, ikinci tabloda 12 kayit bulunuyor. Left outer join ile kac kayit sorgulmis oluruz?
Cevap: Ilk tabloda yer alan tüm kayitlar (10 adet) sorgulanmis olur. Bu kayitlarin ikinci tabloda karsiligi olmasa bile sorgulama listesinde yer alirlar.[8]

Soru: Spring bünyesinde hangi tür bagimlilik enjekte (dependency injection) metotlari kullanilir?
Cevap: constructor injection ve setter injection[8]

Reflection nedir ve hangi amaçla kullanılır?
Java Reflection (bundan sonra yansıtma olarak bahsetmeyi uygun buluyorum) bir uygulama geliştirme arayüzü olup, o anki Java Sanal Makinesindeki sınıfları, arayüzleri ve nesneleri yansıtan, temsil eden kütüphanedir. Özellikle geliştirme araçları yazarken yansıtma kütüphanesine ihtiyaç duyarız. Yansıtma kütüphanesini kullanarak; -Bir nesnenin sınıfını belirleriz -Sınıfın sahaları, metodları, yapıcıları, üst sınıfları ve değişkenleri hakkında bilgiler alabiliriz -Bir arayüze ait olan sabit ve metod tanımlamalarını tespit ederiz -Çalışma zamanına kadar ismi bilinmeyen bir sınıf örneği yaratabiliriz (Bir bakıma çalışma zamanında yeni sınıflar yaratabilirsiniz) -Çalışma zamanına kadar ismi bilinmese de sahaların değerini ayarlar ve alabiliriz. -Aynen çalışma zamanına kadar bilinmeyen metodları çalıştırabiliriz. -Çalışma zamanına kadar bileşenleri ve boyutu bilinmeyen diziler yaratabilir, daha sonra bu dizinin bileşenlerini değiştirebiliriz.

Programlamaya ilk başladığınızda küçük projeler yaparsınız, dolayısıyla yaptığınız işlem sayısı, kullandığınız tip sayısı pek fazla değildir. Buna bağlı olarak yazdığınız if-else blokları ve switch-case blokları nispeten küçük olacağından okunmasında, takip edilmesinde çok sıkıntı yaşamazsınız. Reflection ve annotation’lar bu durumların tersinin ortaya çıktığı genellikle büyük ölçekli projelerde kullanışlı olduğu için çoğu geliştirici tarafından bilinmeyen mekanizmalardır. reflection ve annotation yapıları programlama alışkanlıklarımızı tersine çevirebilecek kadar güçlü ve bir o kadar da esnektirler. Günümüzde bu iki mekanizma kullanılarak çok güçlü framework’ler geliştirilmektedir. Bunu da yazılımdaki soyutlamayı bir üst katmana çekerek yapmaktadırlar. Dependency injection tasarım kalıbı ve yeni nesil test frameworklerinde bu yönteme sıkça başvurulmaktadır.


Soru:Tasarım Desenleri(Design Patterns) ile ilgilendiniz mi? Tasarım deseni nedir? Observer pattern hangi amaçla kullanılır, örnek veriniz.
Tasarım desenleri nesne tabanlı dillerde (c#,java gibi) uygulama geliştirilirken karşılaşılan sorunlara çözümler getiren kalıplardır. Tasarım desenleri çalışan kod veya algoritma değildir. Sınıfların iyi bir şekilde nasıl olacağını belirten yöntemlerdir. Uygulamaların geliştirilebilirliğini (esnekliğini) ve kalitesini arttır, geliştirme süresini azaltır ve kodların anlaşılabilirliliğini sağlarlar. Bazı tasarım desenleri ise uygulamalara sanatsal bir boyut atar.

JPA / Hibernate arasındaki fark nedir ?
       JPA (Java Persistence API) veritabanından bağımsız kodlama yapabilmenizi ve sorgular hazırlayabilmenizi olanaklı kılar. Java geliştiricilerine veritabanı tabloları ile sınıflar arasında mapping imkanı sunarak, ilişkisel veritabanlarının nesne tabanlı bir geliştirme iskeleti ile kolaylıkla yönetilmesini sağlar. The Java Persistence API, Java Persistence Query Language ve nesne/tablo ilişkisini gösteren mapping metadataları gibi üç kola ayrılmış bir geliştirim mantığı vardır. JPQL (Java Persistence Query Language) ile yazacağınız sorgular, veritabanınızdaki ilişkisel yapıya göre hazırladığınız, birbiriyle ilişkili POJO(plain old java object) nesnelerini kullandığınız sorgular olacaktır. JPA 'nın sunduğu imkanlar ile çoğu basit işlemi (kayıt silme, ekleme ve birleştirme) de, JPQL kullanmadan, kolaylıkla halledebilme olanağı bulunmaktadır.
       Hibernate, JPA’ nın özelliklerini taşımakla birlikte kendine ait yararlı ek özellikleri de bulunmaktadır. JPA bir standart olduğu için bu döküman JPA ‘ya ağırlık verilmektedir. [12] https://blog.kodcu.com/minikitap/Java.pdf

JVM ve JDK arasındaki fark nedir ?
JVM (Java Virtual Machine) :  Bir Java dosyası derlendiği(compile) zaman  .class  uzantılı java byte kodları oluşur . Java byte kodları işletim sisteminde kurulu olan JVM ile makina kodlarına çevrilir . Bu sayede java kodları derlendikten sonra farklı işletim sistemlerinde sorunsuz olarak çalışır . JVM sayesinde Java da sıkça duyduğumuz ve Javayı Java yapan  "Write Once, Run Anywhere"  özelliğini kullanabilmekteyiz . Her işletim sisteminin kendi sanal makinası vardır

JRE (Java Runtime Edition) :  Bir Java uygulamasını çalıştırmak için gerekli olan Java kütüphanelerini ve JVM içerir
JRE = Java Kütüphaneleri + JVM

JDK (Java Development Kit ) : Java ile geliştirme yapmak için ve yazdığımız java kodlarını compile edip  .class uzantılı dosyaları oluşturmamızı sağlayan tool dur.
JDK = JRE + derleyici + Java Compiler

Stored Procedure  Nedir?
     Stored Procedurin açıklamasına   geçmeden önce procedure açıklamak istiyorum. Procedure belli bir işi yapan kod parçasıdır. Stored Procedure Database server ında tutulan ve ilk derlemeden sonra bir daha derlenmeye ihtiyaç duyulmayan SQL ifadeleridir.                                     [14]http://www.temizkod.com/yazilim-mulakatlarinda-cikan-sorular-1/

 Trigger Nedir ?
      Trigger yani tetikleyici, ilişkisel veri tabanı yönetim sistemlerinde bir tabloda belirli olaylar meydana geldiği zaman yani ekleme, güncelleme, silme işlemlerinden biri gerçekleşmeden önce veya sonra çalışan ve belirli işlemleri kodlandığı şekilde yerine getiren yordamdır.
Soru:Abstract Factory Tasarım Desenini kısaca açıklayınız.
     Bir proje yapacağız ve bu proje veritabanı bağımsız olacak. Yani Projeyi ilk olarak açtığımızda bize hangi veritabanında çalışacağımızı soracak ve hangisini seçersek onunla çalışacak işlemi yapabiliriz.[16]http://www.temizkod.com/yazilim-mulakatlarinda-cikan-sorular-1/

Soru:Singleton design pattern?
      Diyelim ki sisteminiz tek bir class tipinden uygulama boyunca tek bir örneğe ihtiyaç duyuyor ve bu örneğe her yerden erişimin mümkün olması gerekiyor. İşte o zaman bu tasarım desenini kolayca kullanabilirsiniz.[16]

Soru: Autoboxing boxing açıklayınız.
       Compiler tarafından primitive tipten referans tipine dönüşüm yapılması işlemine autoboxing; referans tipinden primitive tipe dönüşüm işlemine ise unboxing denir. [17]http://www.kazimsoylu.com/java/autoboxing-and-unboxing.html

Soru:pass by reference ve pass by value nedir, örneklendiriniz?
Java pass-by-value ‘dir.  Pass-by-reference demek parametrenin gerçek adresini geçmek anlamına gelirken pass-by-value ise sadece değerini bir kopya ile geçmek şeklinde tanımlanabilir.

Soru: Process ve Thread arasındaki farklar nelerdir ?
      Günümüzde bir bilgisayar sisteminde  tek bir işlem birimi olsa dahi , bu tek bir işlem birimi (işlemci) işletim sisteminin kaynak kullanım stratejisine göre her birine belli bir zaman ayırma esasına göre işlem yapmaktadır. Dolayısıyla bilgisayar sisteminde  aynı anda çok sayıda thread ve process bulunmaktadır.
Process” kendisine ait kaynakları olan işlem birimidir. Örneğin her “process” kendisine ait hafıza alanına sahiptir.
“Thread”ler de “Processler gibi”  işlem birimleridir ve  hafif siklet processler (“lightweight processes”) olarak  adlandırılırlar. Threadler daha az kaynağa ihtiyaç duymaktadırlar. “Thread”ler bir “process” içinde yer  almaktadır.  Her thread  mutlaka bir procecesse sahiptir ve onun kaynaklarından faydalanabilir.
“Thread”ler de “process”ler gibi uygulamalarda paralellik elde etmek için kullanılırlar. Ancak “process”ler daha bağımsız işletim birimleridir, kendilerine ait durum bilgileri, kendilerine ait adres alanlarıdır ve birbirleriyle ancak IPC mekanizması ile haberleşirler. Bir “process” birçok “thread” barındırabilir, her bir “thread” mutlaka bir “process” in içinde yer almaktadır, aynı “process” içindeki tüm “thread”ler aynı hafıza alanını ve aynı durumu paylaşır birbirleriyler direk olarak haberleşebilir zaten aynı alanı paylaşırlar.
               
Garbage nedir?
       Garbage Collector, otomatik Garbage Collection mekanizmasi ile memory-leak(bellek aciklari/sizintilari)’lere engel olarak Java’nin Robust (dayanikli, guclu,direncli) ozelligini saglamaya yardimci olur. Ayrica C gibi dillerde olan free() fonksiyonu yerine, Javada Garbage Collector bu isi uslendigi icin bir nevi pointer mekanizmasindan kurtulmamiza destek saglar. Bu da Java’nin Simple(Basit) ozelligini saglamaktadir.

Throw ile throws arasındaki farklar nelerdir ?
throw new ArithmeticException ("Hata");
ama throws main içinde extends edilmesi lazım.
     Eğer bir metot yönetemediği bir istisnaya neden olursa, metot çağırıcılarının kendilerini bu istisnaya karşı koruyabilmeleri için, metodun bu davranışı belirtmesi gerekir. Bunu, metodun deklarasyonuna bir throws cümleciği ekleyerek yapabilirsiniz. [4]

RMI nedir ?
       Remote Method Invocation yani RMI farklı sunucularda olan metodların başka bir sunucudan çağırılarak kullanılmasında kullanılmaktadır. Java Nesnelerinin kullanmak için farklı bir sunucuya/sanal makina’ya bağlanıyorsa buna biz Dağıtık Programlama diyoruz. RMI, Dağıtık Programlama yapmamıza olanak sağlamaktadır.

JMS nedir ?
        JMS her ne kadar ağırlıklı olarak mesajlaşma tabanlı mimarilerde kullanılsada, multi-thread uygulama geliştirmeden tutun da, sadece işlemleri asenkron hale getirmeye kadar farklı bir çok alanda da kullanılıyor. Bu sebepten JEE uygulaması geliştirdiyseniz bu konuya bulaşmış olma ihtimali yüksektir.[21]http://www.bahadirakin.com/tag/amqp-ile-jms-arasindaki-farklar/

JIT nedir ?
      Middle level kodu makine koduna çevirir. Derleme yerine sadece kullanılacak olan kısmı derliyor ve diğer kısımları yorumluyor.. Java kodları direk olarak çalıştırılabilir derlemiyor. Bunun yerine bir ara derlemeden geçiriyor ve bu işlem sonucu bytecode elde ediyoruz yani class dosyaları. Önceden bu class dosyaları java sanal makinesi (JVM) altında derlenerek çalıştırılırdı. Program iki kez derlendiği için hız kaybı oluyordu. JIT derleyici (JVM) altında çalışan bir derleyicidir. Bu derleyicinin özelliği ise çalıştırılacak bytecode un sadece kullanılacak kısmının derlenerek çalıştırılmasını sağlıyor. Diğer kısımlar basitçe yorumlanıyor. [22]http://www.onurcanalp.com/2014/11/25/jit-just-in-time-nedir/

Immutable nedir ?
     Değişmezlerdir. String ve Wrapperler örnek verilebilir.

String builder ve String buffer nedir ?
     StringBuilder sınıfı StringBufferdan çok ufak bir miktar daha hızlıdır, aradaki hız farkı senkronizasyon için harcanan vakittir. Ikisi de primitive özelliği taşır yani değişme özelliği gösterir. Yeni obje oluşmaz. [4][23]http://malikmasis.blogspot.com.tr/2015/01/string-stringbuffer.html

Instance nedir ?
     Test b = new Test(); Buradaki b insatance’dir.

Constructor nedir ?
    Class çağırıldıgında ilk çalışan metotdur. Constructorılar parametre alabilir fakat değer döndürmez. Overload edilir , override edilmez.

Soru:final finally finalize kavramlarını açıklayınız. 
       Final = keyword finally= block finalize() metod -- Ayrıntılı Bilgi için

Native nedir?
    Bir java programı içerisinde java harici bir programlama dilinde yazılmış bir program çağırılabilmektedir. Ayrıntılı Bilgi için

Super ve this kavramları nedir ?
    super anahtar kelimesi, super class içindeki metotlara field’lara ve constructor’lara erişmek için kullanılır.
“this” anahtar kelimesini kullanarak aynı sınıfa ait olan field’lara, metotlara ve constructor’lara erişebilirsiniz. this anahtar kelimesi kullanıldığı yerde, aynı class’ın geçerli bir örneğiymiş (yeni bir instance’mış) gibi davranır.“super()” ve “this()” ifadeleri mutlaka bir constructor içinde kullanılmalı  staticlerle kullanılmaz.

Data hiding ve encaplastion farkları nelerdir ?
        Data Hiding (Bilgi Saklama) nesnelerin iç yapılarının yani sahip oldukları verilerin dışarıdan gizlenmesidir. Encapsulation ise bu dışarıdan saklanmış verilerin nesne üzerinde tanımlanmış fonksiyonlar ile dışarıya açılmasıdır.

Soru:== ve equals kavramlarını karşılaştırınız.
      Bu operatörlerin davranışı değişkenlerin tipine göre farklılaşmaktadır. Eğer karşılaştırılan nesneler primitive ise değerler karşılaştırılırken, nesne tipinde değişkenler içinse == operatörü ile hafızadaki konumlar karşılaştırılır. Nesne tipindeki değişkenler için equals çalışma biçimiyse ilgili nesnenin içinde nasıl tanımlandıysa öyle çalışır. Eğer tanımlı değilse türediği sınıftaki equals fonksiyonuna göre çalışır. Özetle == bellekteki yerlerini equals ise onların değerini gösterir, fakat primitive olursa değişkenler == de değerlerini inceler.

Annotations nedir ?
       Notasyonlar (Annotations) Java 5’den beri Java ortamında kullanılan bileşenlerdir. Notasyonlar genel olarak bir bileşene özellik katma veya konfigürasyon amaçlı olarak kullanılmaktadır. Notasyonlar @ işaretiyle başlayan arayüzlerdir ve notasyonlar içinde alanlar tanımlanabilmektedir.
       Java’da sınıf, metot, paket gibi programatik unsurlar için metadata (veri hakkında veri) oluşturmaya yarayan özelliklerdir. Örneğin; @Override  @SuppressWarnings  @Deprecated   @target [26] https://blog.kodcu.com/2014/09/java-8-tekrarli-notasyonlar-nasil-kullanilir/

XML ve JSON farkları nelerdir ?
    JSON; okunması ve kullanımı kolay XML benzeri içerik kategorileme dilidir. XML dilinin veri alış verişi sırasında büyük ve yavaş kalması üzerine geliştirilmiştir. XML dosyalarına göre daha az yer kaplar.[27] https://melahatmindivanli.wordpress.com/json/

İnner  , left , right join kavramları nedir ?
     Inner 2 tablodaki ortakları alanları kapsar. Left soldakileri alır, sağdaki bir veri yoksa null yazar, sağdaki için de aynı şey geçerlidir. [29]http://www.dijitalders.com/icerik/13/1102/join_islemleri.html#.V_KN0_CLTIU

Soru:varchar ve nvarchar kavramlarını açıklayınız.
       İki veri tipinin arasındaki genel fark karakter bilgisini saklama biçimlerinden kaynaklanıyor.  NVarchar veri tipi unicode karakter verisi saklamak için kullanılır. Unicode karakter seti asya dilleri, arapça gibi latin alfabesi olmayan diğer dilleri, alfabeleri destekler. varchar da anlaşıldığı gibi sadece latin alfabeleri içindir. Varchar her karakter için 8bit (1 Byte) yer tutar. NVarchar her karakter için 16bit (2 Byte) yer tutar. [30] https://azkod.wordpress.com/2011/03/06/varchar-ve-nvarchar-sql-veri-tipi-arasindaki-fark/

Mvc nedir ?
    1-Model: Model, proje içerisinde kullanılacak olan nesnelerin oluşturulduğu kısımdır. Günlük hayattaki somut nesnelerin, bilgisayar ortamında modellenmesi anlamına gelir. Örneğin bir kütüphane otomasyonu yapmak istediğimizde kitap bilgilerinin tutulacağı bir modele ihtiyaç duyulacaktır. Bu modelde kitabın seri numarası, adı, yazarı, yayınevi gibi bilgileri yer alacaktır.
     2-View: Proje tamamlandığında kullanıcının gördüğü arayüzdür. Bu bir web sayfası, masaüstü uygulaması arayüzü veya mobil bir tasarım olabilir. Projenin yapısına göre bu tasarım farklı şekillerde oluşturulabilir.
     3-Controller: Projedeki tüm işlemlerin (veritabanı işlemleri, hesaplamalar, veri aktarımı v.b) yapıldığı kontrol bölümüdür. Controller ayrıca model ve view arasındaki veri akışını da kontrol eder.

Div span farkı nedir ?
       <div> ve <span> ile oluşturulmuş bölümler arasındaki başlıca fark , <div> bölümünün sayfadaki diğer öğelerden ayrı olarak bloklanmasıdır , tıpkı tablolarda olduğu gibi.Eğer bir metnin hemen bitiminde bir tablo oluşturursanız tablonun yeni satırda ayrıca bloklandığını görürsünüz.<div>bölümleri için de böyledir.<span> bölümleri ise ayrıca bloklanmazlar. 


Soru:Js’de  == ve  === operatörlerini karşılaştırınız.
      “==” operatörü karşılaştırma yaparken eğer iki tip birbirine çevrilebiliyorsa çevirme işlemini yapar ve karşılaştırır. Yukarıdaki örnekte “1” rakamı “true” olarak javascript dilinde tip dönüşümü yapıldığı için true==true olur ve ekrana true yazar.
      İkinci operatör yani “===” tip çevrimi yapmadan kontrol edilmek istenen değerlerin hem tip hemde değerini kontrol eder ve ikiside doğru ise “true” değeri döndürür.
     Kısaca    == sadece değeri, === hem tip hem değeri karşılaştır.

Soru:Hybrnate 5 anatasyon örneği veriniz.
     @NotNull: O değişken boş olamaz.
     @Min: Minimum değer.
     @Max: Maksimum değer.
     @Pattern: Email kontrolü yaptırmak için.
     @Size(min, max):
Ayrıca @Columun, @entity, @table gibi daha da artırabilir.

Servlet nedir ?
         Web sunucusu üzerinde çalışır ve gönderilen veriye göre sonuç üreten java sınıflardıdır.Kullanıcı ulaşmak istediği sayfayı belirtip bilgiyi sonucuya gönderir.Web sunucu gelen bu isteği(request) alıp bu isteğe uygun olan servete ait nesne varsa istek servete gönderilir.Eğer istenilen(gönderilen bilgiyle uyuşan) nesne bellekte yoksa üretilip istek ve bilgi servete gönderilir.Servlet kendisine gelen bu istek doğrultusunda bir sonuç üretip(örn:html sayfası formatında) web sunucusuna gönderir.Web suncuda servletten gelen bu değeri isteği yapan kullanıcıya gönderir.Fakrlı sonuçlar için farklı servlet sınıfları üretilmeli(örn:HttpServlet).Servlet makinesi web sunucuda servlet ve javanın nasıl kullanıldığını bilir ve sunucuda bulunmalıdır.Bu makine servletleri JVM(Java virtual machine) ile çalıştırılabilir ve sonuçları kullanıcıya gönderilebilir.Web suncusu ve servlet makinesi içeren bir çok  sunucu vardır.En çok bilinen Apache Tomcat, Macromedya Jrun,Oracle. Aynı servete birden fazla istek aynı anda gelince suncu bu servlet sınıfndan tek bir nesne üreterip bu nesneyi iş parçacığı(multi thread) ile tüm isteklere cevap verebilir.Bu arada javada çoklu süreç(multi process) yok.Çünkü JRE bir süreçtir ve aynı anda birden fazla süreç çalıştırılamaz.Bunun için tek süreç ile çoklu iş parçacığı ile bir çok işlem aynı anda gerçekleştirilebiliyor.[34] http://www.ethemsulan.com/2010/02/java-servlet-nedir-ve-nasl-calsr.html

Argümanve  Prametre nedir ?
     Argüman: bir metodu çağırırken içindeki değişkenlerdir
Örn; topla(a,b) gibi a ve b burada birer argümandır
     Parametre : metod tanımlarken kullanılan değişkenlerdir
Örn; topla(int a, int b){} burada ise a ve b birer parametredir

Comparable & Comparator Nedir ?
        Array Listlerde int string gibi değerleri değil de Java Sınıfını istenen objeye gore sıralar.

İnner Sınıflar nedir ? Niçin kullanılabilir ?
      Java'da bildiğimiz üzere çoklu kalıtım yoktur. Yani SubClass extends SuperClass,Super2Class gibi bir tanımlama yoktur. Bunu Java'da dahili sınıflar ve interfaceler yapar. Öncelikle kod okunurluğunu sağlar. Çünkü bir sürü sınıf yerine , her sınıfın ilgili olduğu alt sınıflarını oluşturabiliriz. [36] http://malikmasis.blogspot.com.tr/2015/01/inner-classes.html

Threadlar kaç farklı şekilde çağrılabilir ?
 1)CoolThread t = new CoolThread();
  Thread t2 = new Thread(new CoolThread()); // implement yöntemi

 2) class MyRunnableMoreThread implements Runnable // extends yöntemi 



15 yorum:

  1. Ellerine yüreğine sağlık çok güzel bir paylaşım olmuş yeni başlayanlar yararlanabileceği bilgiler tabi yazıarı okuyabilmeleri içinde yinede sıfır bilgiyle okumazlarsa daha iyi anlarlar. Bu gibi paylaşımlar ülkemiz geleceği için çok değerli.

    YanıtlaSil
  2. Çok teşekkür ederim Hamit Bey değerli düşünceleriniz için

    YanıtlaSil
  3. Emeğinize sağlık çok teşekkür ederim.

    YanıtlaSil
  4. Rica ederim, faydalanmanıza sevindim :)

    YanıtlaSil
  5. Güzel çalışma olmuş bana gerçekten büyük yararı oldu teşekkürler.

    YanıtlaSil
  6. Rica ederim, faydalanmış olmanıza çok sevindim. İyi çalışmalar

    YanıtlaSil
  7. Çok faydalı ve güzel bir paylaşım olmuş. Emeğinize çok teşekkür ederim.

    YanıtlaSil
  8. Rica ederim, beğenmiş olmanıza çok sevindim. İyi çalışmalar.

    YanıtlaSil
  9. Çok dolu dolu bir paylaşım olmuş emeğine sağlık.

    YanıtlaSil
  10. Teşekkürler sorular güzel fakat cevaplar biraz daha ayrıntılı olabilirdi

    YanıtlaSil
    Yanıtlar
    1. Selamlar,
      Yazının okunurluğu açısından cevapları oldukça kısa tutmaya özen gösterdim, fakat her cevabın yanına da daha ayrıntılı bakabileceğiniz linkler de bulunmaktadır.
      Yorumunuz için teşekkürler.

      Sil
  11. Hocam gerçekten çok teşekkür ederim 5 yıl geçmesine rağmen yarınki mülakatımda işime aşırı yarayağacağından yana hiç şüphem yok. Emeğinize sağlık

    YanıtlaSil
    Yanıtlar
    1. Rica ederim Hocam,
      5 yıl geçmiş de olsa zaman zaman güncellemeye gayret ediyorum. Böyle güzel dönüşler almak çok mutluluk verici.
      İyi şanslar dilerim.

      Sil