Microsoft ve Google Mülakat Tecrübem

Son yazımın üzerinden çok uzun zaman geçti. Blog açmamın sebeplerinden biri, geri dönüp bakarak referans almak istediğim konular üzerine not tutmaktı ancak zaman bulamadığımdan artık bir kaç yılda bir yazar oldum.

Son yazımda, 2018 yılında tecrübe ettiğim Amazon mülakat sürecimi paylaşmıştım. 4. yılımı tamamladıktan sonra iş değiştirme fikri ile 2022 …

more ...

A'dan Z'ye Amazon Mülakat Tecrübem

Nisan ayında Amazon’un Dublin ofisinde mülakat yaptıktan ve teklif aldıktan sonra, yaşadığım tecrübeyi paylaşma kararı verdim.

amazon-logo-300px
Bir gün merakımdan Amazon’nun kariyer sayfasında açık olan ilanlara bakıyordum. O gün gözüme bir pozisyon takıldı, iş ilanında güvenlik alanındaki verilerin analizi için uğraşacak, Scala ve Spark bilen kişi arıyorlardı. Çok sıradan …

more ...

Type class nedir? - FP

Yazıya başlamadan önce belirtmem gerekir ki örnekleri Scala üzerinden verdiğim için Scala ve temel düzeyde implicit kavramını bildiğinizi varsaymaktayım.

Type class'ı basitçe anlatmak gerekirse, uygulamamız sahip olmak istediğimiz bazı işlevsellikleri sağlayan bir arayüzdür. Scala'da çoğunlukla trait ile birlikte en az bir type parametresi ile tanımlanır. En önemli özelliklerinden biri ad-hoc …

more ...

Algebraic Data Types nedir? - FP

İsmi bu kadar karmaşık olup da arkasındaki fikir bu kadar basit olan bir yapı olduğunu sanmıyorum. Olay tamamen veriyi modellemektir, davranışlar ile ilgilenilmez. Veri modellenirken mantıksal ve(and) ile veya(or) işleminden yararlanılır. Kısaca örnek vermek gerekirse:

sealed trait Şekil
case class Çember(v: Double) extends Şekil …
more ...

Apache Spark - Part 2 : Resilient Distributed Datasets

Bir önceki yazımda Apache Spark kurlumunu ve basit bir kaç örneği incelemiştik. Bu yazıda RDD("resilient distributed dataset) yani esnek dağıtık veri kümelerini inceliyor olacağız.

RDD'ler basitçe değişmez(immutable) dağıtık obje koleksiyonlarıdır ve her biri farklı düğümlerde hesaplanmak üzere çeşitli parçalara bölünmüş şekildedir. Python, Scala veya Java'nın sahip olduğu tüm …

more ...

En uzun artan altdizi(LIS) - Dinamik Programlama

Bir dizi içerisinde en uzun artan altdiziyi bulmayı amaçlayan bir problemdir. Örneğin

Input:
    {10, 22, 9, 33, 21, 50, 41, 60, 80}
Output:
    6{10, 22, 33, 50, 60, 80}

LCS algoritmasına benzer bir yol izleyeceğiz. Kod anlaşılır durumda, çözüm aşağıdadır.

def lis(arr):
    lis = [1] * len(arr)

    for i …
more ...

En uzun ortak altdizi(LCS) - Dinamik Programlama

Bilgisayar bilimlerinde önemli bir yere sahip olan bu problemde, verilen iki dizgide de ortak olarak bulunan ve aynı yönde sıralanmış dizgiler bütünü elde edilmeye çalışılmaktadır.

Örneğin;

 “ABCDGH” ve “AEDFHR” için “ADH”
 “AGGTAB” ve “GXTXAYB” için “GTAB”

Dosyalar arasındaki farkları, değişiklikleri elde etmede ve özellikle bioinformatik alanında sıkça karşılaşılan bir çözümdür …

more ...

Sieve of Eratosthenes - Matematik Problemi

Verilen bir n sayısı var ve bu sayıya kadar olan tüm asal sayıların elde edilmesi için sunulmuş en efektif çözümdür (ref: Wiki).

gif

Algoritma şu şekilde çalışır.

  1. 2'den n'e kadar bir liste yaratılır. (2,3,4,5,6...n)
  2. p = 2 yapılarak ilk asal sayı 2 ilan edilir.
  3. 2p,3p,4p …
more ...

Sayının faktoriyelinde sonda bulunan 0'ların sayısı - Matematik Problemi

Verilen sayının faktoriyelinde sonda bulunan sıfırların sayısını bulmamız gerekiyor.

Örneğin;

Input: n = 5
Output: 1
5! = 20

Input: n = 20
Output: 4
20! = 2432902008176640000

Input: n = 100
Output: 24

En basit hali ile çözüm, sayının faktoriyelini hesaplamak ve sondaki sıfıların sayısını saymak. Masraflı ve büyük sayılar için çalışmayacak bir yöntem …

more ...

Hileli parayı hilesiz yapmak - Matematik Problemi

Verilen bir fonksiyon yazı tura işlemini %60 yazı %40 tura gelecek şekilde gerçekleştiriyor. Bu verilen fonksiyonu kullanarak bu işlemi nasıl hilesiz yapabiliriz?

Paranın %60 olasılıkla 0, %40 olasılık ile 1 döndürdüğünü biliyoruz. Çözüm olarak bu fonksiyonu iki kere çağıracağız. Eğer sonuçlar (1,0) veya (0,1) ise problem yok, direk …

more ...