Developer Mülakat Soruları

Malik Masis
Apr 7, 2019 · 15 min read

S.a. arkadaşlar,

Uzun bir aradan sonra tekrar ilk kez yazıyorum. Bugün yazacağım konu mülakatlarda karşılaştığım ve farklı sitelerden derlediğim 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çirebilirim. Umarım istediğiniz gibi güzel işler bulursunuz.

Not: Yazı çok uzadığından şimdiki güncellemeyi sonraki yazıya bırakmayı uygun gördüm.

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 Child extends Parent{

//Code
}

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

http://malikmasis.blogspot.com.tr/2014/11/nesneye-yonelik-programlama.html

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/

Checked ve Unchecked Exceptionlar nedir?

Checked : Compile time sırasında handle etmemiz gereken exceptionlar. FileNotFoundException

Unchecked : Compiler’ın handle etmeye zorlamadığı exceptionlar. Null Pointer Exception

Ö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 ezmektedir. ( 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.

Serialization nedir?

Serialization 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.

[5] http://malikmasis.blogspot.com.tr/2014/11/nesneye-yonelik-programlama.html

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?

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.

[9]http://yzgrafik.ege.edu.tr/~tekrei/dosyalar/projeler/JavaReflection.pdf

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.

[10] http://orhanbalci.net/tr/?p=1125

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 esnekliğini ve kalitesini arttır, geliştirme süresini azaltır ve kodların anlaşılabilirliğini sağlarlar.

[11]http://harunozer.com/makale/tasarim_desenleri__design_patterns.htm

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 Environment) : 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

[13] http://www.javaturk.org/java-kurulumu-ve-ilk-program/

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.

[15]http://www.tech-worm.com/trigger-tetikleyici-nedir/

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.

[18] https://avilabs.wordpress.com/2009/09/23/processislem-ve-threadis-parcacigi/

Garbage Collector 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.

[19] http://www.injavawetrust.com/pure-java-37-garbage-collection/

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.

[20]http://blog.burakkutbay.com/java-remote-method-invocation-nedir.html/

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.

[24]http://www.onderdal.com/2016/01/31/javada-super-ve-this-anahtar-kelimeleri/

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.

[25]http://www.cihataltuntas.com/yazilim-muhendisligi-rehberi-pobject-oriented/

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 (Attribute) 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.

[31] http://www.kodlamamerkezi.com/asp-net/mvc-model-view-controller-nedir/

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.

[32] http://forum.ceviz.net/t/div-span.1969/

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.

Ayrıntılı bakmak isteyenler bu linki inceleyebilir.

[33] http://www.cihataltuntas.com/javascript-ve-arasindaki-fark/

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üman ve parametre 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.

[35]http://java.com.tr/index.php/incoming-from-you?id=25:java-encapsulation&start=20

İ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

[37] http://malikmasis.blogspot.com.tr/2015/01/thread.html

readonly ile const arasındaki fark nedir?

readonly ile const neredeyse aynı özellikteki iki anahtar kelimedir, fakat aralarındaki en temel fark şudur: const tanımlandığı anda değer verilmesi gerekirken read only buna ek olarak constructor içinde de değer verilebilir. İkisi de sonradan değer verilmez. Daha fazla bilgi için tıklayınız.

try catch kullanmanın avantaj ve dezavantajları nelerdir?

Try catch neredeyse her programlama dilinde olan hata kontrol ve yakalama mekanizmasıdır. Her şeyde olduğu gibi bunun da avantaj ve dezavantajları bulunmaktadır. En önemli avantajı hatayı yakalayıp fırlatmaktır bilindiği gibi, fakat bunun şöyle yan bir etkisi bulunmaktadır. Kodun işleminin başarıyla beklemesini beklediği için zaman kaybına sebep olmaktadır. Belki bunu bir çoğumuz ihmal etmektedir. Buna iyi bir çözüm ise loglama olabilir. Bunla ilgili ayrıntılı yazıma buradan erişebilirsiniz.

static keyword’ünden neden kaçınmalıyız?

static keyword’ü yine bir çok programcıyı büyük dertten kurtarır, fakat bunun da yine yan etkileri mevcuttur. Programın çalışmasıyla birlikte oluşturulur ve program çalıştığı sürece var olurlar. Bunu iyi yönetemediğimiz zaman başımızı ağrıtabilir. Ayrıca statik metod ve class’lar içinde statik olmayan yapılar çağrılmadığı için de bir yerden sonra programımızın her yerinde bunları kullanmak zorunda kalabiliriz. Daha fazla bilgi için buraya tıklayabilirsiniz.

js’de kaç değişken tipi vardır?

string, number, undefined, null, boolen ve nan olmak üzere 6 tanedir.

AOP nedir ? MVC’de kullanma şeklin nedir ?

AOP ile ilgili aklımda kalan en iyi kavram herhalde “precondition”’dir. Çünkü metot ve sınıfınıza girmeden önce yukarıdaki koşulları kontrol ediyor ve eğer belirttiğiniz koşullardan geçmiyorsa metot veya sınıfınıza girmeyecektir. O yüzden en basit ve anlamlı hali olarak bu aklımda kaldı. Bunu MVC içinde loglama, kullanıcı kontrolü, iş süreçli kontrol ve daha bir sürü yapıda kullanabilirsiniz. Burada mvc ile birlikte kullandığım yazıma göz atabilirsiniz. Daha ayrıntılı okumak isterseniz bu linke de göz atabilirsiniz.

immutable valuable nedir? Nerede tutulur?

immutable değişmeyen anlamına gelmektedir. Primative olan int, decimal, bool gibi tipler dışında kalan tüm değerlerimiz immutable’dir. Yani değeri değişmez. Şöyle anlatmak gerekirse primative olan değişkenlerin değerleri aynen bellekte(stack) tutulduğu için başka bir değer atandığında eski değerin üzerine yazılmış olur, fakat diğer kalan tüm tipler değerlerin adresleri heap’ta tutulduğu için gerçek değerleri değil adresleri değişmiş oluyor.

Framework ile library arasındaki fark nedir ?

library bir kütüphane iken framework tüm altyapıyı oluşturabilen mimari çatıdır. Daha ayrıntılı bilgi için tıklayınız.

Ajax nedir?

Ajax kısaca tüm sayfayı yinelemeden kısmı yineleme sağlayan yapıdır. Daha ayrıntılı bilgi için tıklayınız.

Web servisleri ndir ? Rest ve Soap arasında farklar nelerdir ?

HTTP protokolü ile XML/Json gönderip alarak iki uzak cihaz arasındaki iletişimi sağlayan bir haberleşme yöntemidir. XML/Json olması sayesinde değişik platformalar ve programalama dilleri arasında haberleşme sağlanabilir. Rest ve soap aslında aynı işleri yapmakla birlikte birbirlerine göre avantaj ve dezavantajları vardır. Mesela Rest hem xml hem json desteklerken soap sadece xml destekler. Json yapısı itibariyle daha düzenli ve düşük boyutta olduğu için daha avantajlıdır. Buradan daha ayrıntılı bilgi alabilirsiniz.

İş arama sürecinde herkese başarılar dilerim.

Software Development Turkey

Yazılımcı, tasarımcı ve yetenekli insanların buluştuğu kocaman bir Discord ailesi!