🇸🇪 İsveç’te Backend Developer pozisyonları için teknik mülakatlara nasıl hazırlanıyorum?

Uğurcan Laçin
3 min readSep 30, 2021

--

Photo by Colton Sturgeon on Unsplash

8 adımlık hazırlık sürecimi paylaşıyorum 👇

1. Tanışma ve öz geçmiş

Bana göre teknik seviyede kendinizi geliştirmek ne kadar önemliyse, bu teknik bilgiyi iyi sunabilmek de bir o kadar önemli. Teknik mülakatlara hazırlanırken kendi hikayemi ve teknik serüvenimi bir persona olarak hazırlayıp sunuyorum.

Kendimi iyi ve hızlı ifade edebilmek için aşağıdaki sorulara hazırlanıyorum.

- Hangi şirkette ve hangi pozisyonda çalışıyorum?
- Şirketin iş kolu nedir ve bu iş kolunda hangi problemi çözüyor?
- Ben bu çözümün neresinde katkı sağlıyorum? Genel akışa hakim miyim?
- Çalıştığım projede hangi teknik problemleri hangi araçlarla çözdüm? Bu kararları nasıl verdim?
- Ne gibi hatalar yapıp nasıl dersler çıkardım?
- Halen çalıştığım yerde bir problemi farklı çözme imkanım olsaydı nasıl çözerdim?

2. Data structures

List, Hash table, Stack, Queue gibi temel veri yapılarını hiçbir kaynağa bakmadan sıfırdan yazabilecek hale geliyorum. Yıllar geçtikçe otursa da hatırlamak için pratik yapmakta her zaman fayda var.

3. Algorithm Complexity

Bu veri yapılarının ekleme, silme, erişme gibi temel işlemlerinin Big O değerlerini tekrarlıyorum. Zaten veri yapılarını sıfırdan yazabildiğim için nasıl çalıştığını, hangi Big O değerine sahip olduğunu mantıklı bir şekilde açıklayabiliyorum.

Leetcode’daki kolay ve orta seviyedeki soruları brute force ile çözüp, daha sonra algorithm complexity değerini düşürmek için çabalıyorum. Zaten Leetcode ilgili problemin çözümlerini de paylaştığı için bu adım oldukça eğlenceli ve eğitici oluyor.

4. System Design

Aşağıdaki adreste bulunan örnekleri bakmadan çözecek hale geliyorum. Real world architectures kısmında epey faydalı içerikler bulunuyor. Sadece teknik mülakatlara hazırlanırken değil, güncel kalmak için de arada okumak çok şey katıyor.

5. CV — Özgeçmiş

İsveç’te cinsiyet, yaş, ırk, fotoğraf gibi şeyleri CV’ye eklemenize genellikle gerek yok.

CV’yi düzenlerken aşağıdaki kaynaktan yararlanabilirsiniz. Şahsen en beğendiğim tavsiye, genel geçer konuşmak yerine sayısal ifadeler kullanmak.
https://thetechresume.com/

Örneğin;
- Bir takım yönettim demek yerine, 7 kişilik bir takımı yönettim.
- API’leri optimize ettim yerine, 12 saniyeye kadar çıkan bir cevap süresini 300 millisaniyeye düşürdüm.
- Hataları düzelttim yerine, daha iyi error handling yaparak support ticket’larını %20 düşürdüm.

6. Tech stack

Her ne kadar tecrübeniz olsa da kullandığınız dilde bazı uç durumları unutabiliyorsunuz ki bu çok normal. O nedenle her teknik mülakat öncesi java interview questions çözüyorum. Mülakatta zor durumda kalmamak için mümkün olduğunca bilgileri tekrar etmek gerekiyor

Rest API tasarımı konusunda best practice tekrarı yapıyorum. Bazı önemli http status kodlarını (201, 202, 403 gibi) tekrar ediyorum. Zaman geçtikçe oturuyor ancak yine de görüşmede hızlı cevaplar verebilmek için tekrar etmekte fayda var.

Network bilgisi onemli. TCP, UDP, HTTP protokollerini, OSI katmanlarını tekrar ediyorum. Bir istek atıldığında başarılı veya başarısız sonuç verdiğinde neler gerçekleşiyor bir örnek üzerinden anlatabilecek hale geliyorum.

Deadlock, race condition, starvation, live lock gibi paralel programlamada karşılaşılan temel problemleri tekrar ediyorum. Kod yazarken bu durumlara karşı nasıl kod yazmam gerektiğini gerek sözlü olarak gerek pratikte anlatabilecek şekilde hazırlanıyorum.

CAP theorem, SOLID, ACID, BASE, DI gibi temel prensipleri tekrar ediyorum. Mikroservis mimarilerinde kullanılan design patternlerini ve örnek uygulamalarını tekrarlıyorum.

7. Mülakat esnasında dikkat ettiklerim

- Kodlama problemi verildiyse testi var mı? Varsa olası uç durumlar kontrol edilmiş mi?
- Problemi çözerken sesli düşün, farklı öneriler belirt, trade-off analizine göre tercih yap.
- Kodun son haline refactor önerisi verebilir miyim?

8. Şirkete yönelik sorular

- Kaç takım ve proje var?
- Başarı metrikleriniz neler?
- CI/CD süreçleri yoksa planları var mı?
- Gelecek planlarınız neler ve beni hangi pozisyonda degerlendirmek istiyorsunuz?

Henüz yeni keşfettim ama şu repo’daki sorulardan merak ettiklerimi bir sonraki görüşmede mail atarak sormayı düşünüyorum.

https://github.com/viraptor/reverse-interview

Disclaimer

Bu çalışma planı çoğunlukla ihtiyacımdan fazlasını karşılıyor ve mülakatlarda sorun yaşamıyorum. İsveç’te mülakatlarda başarılı olmak için bunların hepsini yapmak zorunda değilsiniz. Sadece başarılı olduğunu gördüğüm kendi hazırlık sürecimi paylaşıyorum.

Başka bir ülkede de iş arasam yine bu süreci kullanırdım. Yazılım geliştirme evrensel olduğu için dünyanın her yerinde işe yarayabilir. Ancak şimdiye kadar sadece İsveç’te deneyimleyip başarı elde ettiğim için burası hakkında yorum yapabiliyorum.

Bu yazıdaki gibi daha fazla içerik görmek istiyorsanız aşağıdaki linkten ulaşabilirsiniz.

🇸🇪 10 başlıkta İsveç’te yazılım geliştirici olmak ve yaşam

Aşağıdaki kanallardan bana ulaşabilirsiniz.
Twitter: https://twitter.com/ugurcanlacin
Linkedin: https://www.linkedin.com/in/ugurcanlacin/
Email: ugurcanlacin@gmail.com
Instagram: https://www.instagram.com/ugurcanlacin/

--

--