Crossover sınavları kişinin hem kendini geliştirdiği hem de kendini ölçümlediği bir sınav sürecinden oluşmaktadır.
Bu süreç boyunca yapılacak çalışmalar kişinin hem teknik konularda bazı bildiği konuları tekrarlamasını, pekiştirmesini ve yeni teknolojilerde kendini yetiştirmesini sağlayacak bir çalışmalar bütünüdür.
Crossover’da yılda $100k kazandıran chief architect pozisyonları şunlardır:
- Java Chief Architect: https://www.crossover.com/x/redirect/job/280
- .NET Chief Architect: https://www.crossover.com/x/redirect/job/279
- C++ Chief Architect: https://www.crossover.com/x/redirect/job/641
Süreç, üç aşamadan oluşmaktadır:
1. Aşama: HackerRank Sitesinde Çoktan Seçmeli Sorular ve Ufak Kodlama Testi
Sınav öncesinde HackerRank sitesine üye olup sitenin genel yapısına aşina olunmalıdır. Çıkan sorular HackerRank sitesinde mevcut açık olan sorulara benzememektedir, site üzerindeki açık soruların çözülmesi konusunda çok fazla zaman harcanmamalıdır.
19-20 soru mevcuttur. 3 tanesi kodlama sorusu olabilmektedir. Kodlama sorularında size bir class veriliyor ve içindeki bir metod boş oluyor. Örneğin bir method yazarak bir dizin içerisinde özel bir harfi içeren kelimeleri saymanız istenebilir.
Özellikle sınav öncesi java 7 nio2 ve java 8 streams, lambda expressions konularına bakmakta fayda var.
Ayrıca Oracle Certified Java Developer sınavı benzeri detay sorular olabildiğinden dolayı mümkün ise bu sınava çalışmak fayda sağlayacaktır (örneğin java da Integer -127 ve +128 değerleri jvm tarafından internal olarak cache lenmektedir).
2. Aşama: Proje Sınavı
Bu aşama 1. aşamayı geçen adaylar tarafından 3-7 gün içinde başlatılması beklenmektedir.
Proje aşaması adaya ve pozisyona göre farklılık göstermektedir. Proje süresi 1-5 gün arasinda değişmektedir fakat genel olarak 3 gün süre verilmektedir.
Projelerde adaylardan sıfırdan bir sistem tasarlanması beklendiği gibi, var olan hatalı bir sistemin üzerinde code review yapılması, sonrasında bu sistemin düzeltilmesinin beklenildiği projelerde mevcuttur.
Bir airline reservation sistemi, single sign-on server, airport weather sensor system gibi projeler gelebilmektedir. Bu projeler yapılırken güncel teknolojilerin doğru olarak tasarımda kullanılması beklenmektedir.
Güncel teknolojilerden Spring, Spring Boot gibi micro service mimarisini destekleyen open-source projelerin kullanılmasında desteklenmekte ve seçim projeye göre adaya bırakılmıştır.
Proje adımında aşağıdaki gibi çıktılar üretilmesi beklenmektedir:
- Project High Level Design Document
- Herhangi bir formatta proje diagramı (UML olabilir)
- Projenin video anlatımı
- Oluşturulan projenin kaynak kodları
- Projede yazılan test kodları (önyüz, junit, mockito vb. frameworkler, integration test)
- Yapılan projede adayın kabulleri, projenin genişleme noktaları, projede tamamlanmayan kısımlar (tasarımın yapıldığı, örnek bir kodun mevcut olduğu, kalan kısmın ekibe bırakıldığı veya zamanın yetmediği)
Bu adımın kısıtlı bir sürede bitirilmesi beklendiğinden dolayı adayların öncesinde aşağıdaki hazırlıkları yapması, örnek doküman, proje vb. oluşturması zaman kazanılması açısından olumlu olacaktır:
- Spring, Spring Boot kullanarak örnek bir maven tabanlı proje oluşturması (internet ten bir open source proje örneği alınabilir – apache commons xx-)
- Örnek projenin local bir sonarqube (http://www.sonarqube.org/downloads/) kurulumu tarafından taratılması ve sonuçlarına göre düzenleme yapılacak bır yapının bilgisayarda kurulması
- Örnek projenin code coverage ölçümleri için gerekli yapıların kurulması (SonarQube JaCoCo plugin, Clover vb.)
- Örnek bir dizayn dokümanı hazırlığı, uml diagramları üreten otomatik tooların hazır olması
- Önyüz içeriği olan projeler için bir mvvc framework (AngularJS, ReactJS vb.) şablon ve örnek hazırlığı
- Mutlaka ve mutlaka design patterns konusunda tüm pattern ların tekrar gözden geçirilmesi çok önemlidir.Çözümlerde design patternların kullanılabileceği adımlarda bunların belirtileren kullanılması (birden fazla pattern’in birleştirilip kullanabileceği problemler de mevcuttur) çok faydalı olacaktır.
Projelerin hangi isimde ve hangi dizin yapısında zipleneceği ile ilgili detaylı bilgi proje bilgilendirme dokümanında mevcuttur. Bir auto-scoring tool ile proje skorlanacağı için projenin değiştirilmemesi gereken interface leri ve bu yapının uygunluğuna dair unit-test içeriği olan bir proje adaya sunulabilir.
3. Aşama: Mülakat
Proje adımını geçen adaylar bu adımda teknik ve business mülakatına gireceklerdir. Teknik mülakat genelde adayın özgeçmişini anlatması ve kendini tanıtması ile başlamaktadır. Bu süreçte adayın ingilizce bilgisi, heyecanı yönetmesi, ifade yeteği gibi tüm konularda değerlendirmesi gerçekleştirilecektir. Bazı adaylardan notepad veya google doc üzerinde örnek kod yazması istenebilmektedir. Bu nokta adayın kodlama konusunda rahatlığı ve deneyimini göstermek için bir fırsat olabilir. Bunun yanı sıra design pattern lar konusunda mutlaka soru gelmektedir. Benzer design pattern lar arasındaki farklılıkların çalışılması faydalı olacaktır.
Örnek bir çalışma olarak twitter.com sitesinin benzerinin tasarlanması istenebilir. Bu noktada requirement analysis, high level design aşamalarının aday tarafından tariflenmesi ve detaylandırılması gerekmektedir.
Business mülakatı teknik mülakatın olumlu geçmesi durumunda ayrı bir kişinin mülakata bağlanması ile gerçekleştirilir. Bu noktada business plan tanımı, örneği gibi sorular gelebilmektedir.
Bu aşamanın da olumlu geçmesi durumunda bir hafta içinde adaya ilgili yönetici görüşmeleri ile teklifler gelmektedir.