Teknik Mülakatta Kodunuzu İngilizce Nasıl Açıklarsınız
Teknik mülakatlarda düşünce sürecinizi İngilizce olarak sesli anlatmayı öğrenin. Bu rehber, kullanışlı ifadeler, stratejiler ve kaçınılması gereken hatalar sunar.
· 9 dk okuma

Ana diliniz olmayan bir dilde teknik bir mülakata girmek kendine özgü bir zorluktur. Bu sadece bir problemi çözmekle ilgili değil; problem çözme sürecinizi gerçek zamanlı olarak sesli bir şekilde göstermekle ilgilidir. Mülakatı yapanlar nasıl düşündüğünüzü anlamak ister ve bu da açık, kendinden emin bir iletişim gerektirir.
Bu rehber, kodlama sürecinizi anlatmanıza yardımcı olacak yapılandırılmış bir yaklaşım ve özel İngilizce ifadeler sunar. İlk problemi netleştirmekten nihai çözümünüzü adım adım anlatmaya kadar her şeyi ele alarak, teknik becerilerinizi ve iletişim yeteneklerinizi aynı anda göstermenize yardımcı olacağız.
Kodlamaya Başlamadan Önce: Problemi Netleştirin
Adayların yaptığı en yaygın hatalardan biri, çok hızlı bir şekilde kod yazmaya başlamaktır. Tek bir satır bile yazmadan önce problemi, girdilerini, çıktılarını ve kısıtlamalarını tam olarak anladığınızdan emin olmalısınız. Bu, mülakatı yapan kişiye düşünceli ve metodik olduğunuzu gösterir.
Anladığınızı teyit etmek için problemi kendi kelimelerinizle yeniden ifade ederek başlayın.
Gereksinimleri Netleştirmek İçin İfadeler
- "So, just to make sure I understand correctly, the goal is to write a function that takes [input] and returns [output]?" (Yani, doğru anladığımdan emin olmak için soruyorum, amaç [girdi] alan ve [çıktı] döndüren bir fonksiyon yazmak, değil mi?)
- "To clarify, are we expecting the input array to contain only numbers, or can it have other data types?" (Netleştirmek için soruyorum, girdi dizisinin sadece sayılar içermesini mi bekliyoruz, yoksa başka veri türleri de olabilir mi?)
- "Could you give me an example of a valid input and the expected output?" (Geçerli bir girdi ve beklenen çıktı örneği verebilir misiniz?)
- "When you say 'most frequent,' if there's a tie, which value should be returned?" ("En sık geçen" derken, eğer bir eşitlik durumu olursa hangi değer döndürülmeli?)
Kısıtlamaları ve Uç Durumları (Edge Cases) Tartışmak İçin İfadeler
- "What are the constraints on the size of the input? For example, how large can the array be?" (Girdinin boyutu üzerindeki kısıtlamalar nelerdir? Örneğin, dizi ne kadar büyük olabilir?)
- "How should the function handle invalid inputs, like a
nullor an empty list? Should it return an error, or a specific value?" (nullveya boş bir liste gibi geçersiz girdileri fonksiyon nasıl ele almalı? Bir hata mı yoksa belirli bir değer mi döndürmeli?) - "Are there any performance requirements I should be aware of, like time or space complexity?" (Zaman veya alan karmaşıklığı gibi bilmem gereken herhangi bir performans gereksinimi var mı?)
- "I'm thinking about edge cases. For instance, what if the input list contains duplicates? Or what if all elements are the same?" (Uç durumları düşünüyorum. Örneğin, girdi listesi tekrar eden elemanlar içeriyorsa ne olur? Veya tüm elemanlar aynıysa?)
Bunu yapmak için birkaç dakika ayırmak, sizi sadece yanlış problemi çözmekten alıkoymakla kalmaz, aynı zamanda mülakatı yapan kişiyle etkileşim halindeyken düşünmek için size değerli zaman kazandırır.
"Sesli Düşünme" Yöntemi: Düşünce Sürecinizi Anlatma
Mülakatı yapanlar, düşünme biçiminizi değerlendirmek için kodlama görevleri kullanır. Sessizlik içinde sunulan mükemmel bir çözüm, net bir şekilde açıklanan iyi bir çözümden daha az değerlidir. Problemden çözüme giden yolculuğunuzu anlatmanız gerekir.
Aşama 1: İlk Yaklaşım
İlk, en basit fikrinizi açıklayarak başlayın. Bu genellikle "kaba kuvvet" (brute-force) çözümüdür. Bu, optimize etmeye çalışmadan önce çalışan bir çözüm bulabildiğinizi gösterir.
- "My first thought is to approach this with a nested loop. I can iterate through each element and then compare it with every other element." (İlk düşüncem bu soruna iç içe bir döngüyle yaklaşmak. Her bir eleman üzerinden geçip sonra onu diğer tüm elemanlarla karşılaştırabilirim.)
- "A straightforward way to solve this would be to sort the array first. That would simplify finding the duplicates." (Bunu çözmenin basit bir yolu önce diziyi sıralamak olurdu. Bu, tekrar edenleri bulmayı basitleştirir.)
- "Initially, I'm thinking of a brute-force approach. It might not be the most efficient, but it would work. From there, we can look for optimizations." (Başlangıçta, kaba kuvvet (brute-force) bir yaklaşım düşünüyorum. En verimli olmayabilir ama işe yarar. Oradan optimizasyonlara bakabiliriz.)
Aşama 2: Analiz Etme ve İyileştirme
İlk fikrinizi belirttikten sonra, getiri ve götürülerini, özellikle de zaman ve alan karmaşıklığını analiz edin. Bu, algoritmalar ve veri yapıları hakkında daha derin bir anlayışa sahip olduğunuzu gösterir.
- "The time complexity of this nested loop approach would be O(n²), which might be too slow if the input is very large." (Bu iç içe döngü yaklaşımının zaman karmaşıklığı O(n²) olur, bu da girdi çok büyükse fazla yavaş olabilir.)
- "This solution has a space complexity of O(n) because I'm creating a new data structure to store the results." (Bu çözümün alan karmaşıklığı O(n) çünkü sonuçları saklamak için yeni bir veri yapısı oluşturuyorum.)
- "We could optimize this. If we use a hash map, we can reduce the time complexity to O(n) by trading off some space." (Bunu optimize edebiliriz. Eğer bir hash map kullanırsak, biraz alandan feragat ederek zaman karmaşıklığını O(n)'e düşürebiliriz.)
- "I think we can do better. Let me consider an alternative approach using a two-pointer technique." (Daha iyisini yapabileceğimizi düşünüyorum. İki işaretçi (two-pointer) tekniği kullanarak alternatif bir yaklaşımı değerlendireyim.)
Aşama 3: Kodunuzu Yapılandırma
Hızla yazmaya başlamadan önce planınızın ana hatlarını çizin. Kullanmayı düşündüğünüz fonksiyonları, değişkenleri ve mantığı açıklayın. Bu hem sizin hem de mülakatı yapan kişi için bir yol haritası görevi görür.
- "Okay, my plan is to first initialize an empty dictionary to store character counts." (Tamam, planım öncelikle karakter sayılarını saklamak için boş bir sözlük (dictionary) başlatmak.)
- "I'll write a main function that takes the array as an argument. Inside it, I'll have a loop to iterate through the elements." (Diziyi argüman olarak alan bir ana fonksiyon yazacağım. İçinde, elemanlar arasında dolaşacak bir döngü olacak.)
- "I think I'll need a helper function to handle the logic for reversing this part of the string. It will make the main function cleaner." (Sanırım string'in bu kısmını tersine çevirme mantığını ele almak için bir yardımcı fonksiyona ihtiyacım olacak. Bu, ana fonksiyonu daha temiz hale getirecek.)
- "I'll start by handling the edge cases we discussed, like an empty input array." (Boş bir girdi dizisi gibi konuştuğumuz uç durumları ele alarak başlayacağım.)
Kod Yazarken: Sohbeti Sürdürün
Kodunuzu yazarken, ne yaptığınızı ve neden yaptığınızı açıklamaya devam edin. Sadece kodunuzu sesli okumayın. Her mantıksal bloğun amacını açıklayın.
- "Now, I'm creating a
forloop that will go from the beginning of the array to the end." (Şimdi, dizinin başından sonuna gidecek birfordöngüsü oluşturuyorum.) - "This variable,
max_so_far, will keep track of the largest value we've seen." (Bumax_so_fardeğişkeni, şimdiye kadar gördüğümüz en büyük değeri takip edecek.) - "Inside the loop, this
ifstatement checks if we've encountered this element before. If we have, I'll increment its count in the map." (Döngünün içinde, buififadesi bu elemanla daha önce karşılaşıp karşılaşmadığımızı kontrol ediyor. Eğer karşılaştıysak, map'teki sayısını artıracağım.) - "I'm using a
whileloop here because the number of iterations isn't fixed; it depends on the values of these two pointers." (Burada birwhiledöngüsü kullanıyorum çünkü tekrar sayısı sabit değil; bu iki işaretçinin değerlerine bağlı.)
Peki ya takılırsanız? Sessizlik düşmanınızdır. Düşünmek için bir an duraksamaya ihtiyaç duymak tamamen normaldir. Sadece bunu dile getirin.
- "Let me take a moment to think about the best way to structure this next part." (Bu sonraki kısmı yapılandırmanın en iyi yolu hakkında düşünmek için bir saniye rica ediyorum.)
- "I'm just double-checking my logic for this condition. One second." (Bu koşul için mantığımı tekrar kontrol ediyorum. Bir saniye.)
- "Hmm, I think there might be a small issue here. Let me trace the execution with an example input to find it." (Hmm, sanırım burada küçük bir sorun olabilir. Bulmak için bir örnek girdiyle çalışmasını takip edeyim.)
Mantığa odaklanmışken doğru İngilizce kelimeler aklınıza gelmiyorsa, bu stresli olabilir. Profesyonel ifadeler önerebilen bir asistan yardımcı olabilir. Örneğin, Subtl'ın yapay zeka yönlendiricisi, "Let me think through the logic for this edge case" (Bu uç durum için mantığı bir düşüneyim) gibi ifadeleri gerçek zamanlı olarak hazırlayarak, konsantrasyonunuzu bozmadan akıcı bir sohbet sürdürmenize yardımcı olabilir.
İpuçlarını ve Geri Bildirimleri Yönetme
Mülakatı yapan kişi bir ipucu verirse, bu bir başarısızlık işareti değildir. Bu, işbirliği için bir davettir. Geri bildirimi nasıl aldığınız ve uyguladığınız, test ettikleri kritik bir beceridir. Dikkatle dinleyin, ipucunu kabul edin ve onu nasıl kullanacağınızı açıklayın.
Bir İpucunu Kabul Etmek İçin İfadeler
- "That's a great point. Using a set here would indeed make the lookup much faster. I'll change my approach." (Bu harika bir nokta. Burada bir set kullanmak gerçekten de aramayı çok daha hızlı hale getirir. Yaklaşımımı değiştireceğim.)
- "Thank you, that clarifies it. I see now that I was overcomplicating the base case for the recursion." (Teşekkür ederim, bu durumu netleştirdi. Şimdi anlıyorum ki özyinelemenin (recursion) temel durumunu fazla karmaşıklaştırıyordum.)
- "Ah, I didn't consider that edge case. You're right. I need to add a check for that before the loop starts." (Ah, o uç durumu düşünmemiştim. Haklısınız. Döngü başlamadan önce bunun için bir kontrol eklemem gerekiyor.)
Eğer gerçekten takıldıysanız, sessiz kalmaktansa küçük bir ipucu istemek daha iyidir. Bu, öz farkındalığınızı ve yardım isteme konusundaki istekliliğinizi gösterir.
- "I'm a bit stuck on optimizing the space complexity here. Could I perhaps get a small hint?" (Burada alan karmaşıklığını optimize etme konusunda biraz takıldım. Belki küçük bir ipucu alabilir miyim?)
- "I'm considering two data structures for this part, a dictionary or a simple list. I'm leaning towards the dictionary for performance, but I'm not sure. Do you have any thoughts on that?" (Bu kısım için iki veri yapısı düşünüyorum, bir sözlük (dictionary) veya basit bir liste. Performans için sözlüğe daha yakınım ama emin değilim. Bu konuda bir fikriniz var mı?)
Kodu Yazdıktan Sonra: Test Etme ve Açıklama
Çözümünüzü yazmayı bitirdiğinizde, sadece "Bitti" demeyin. Mülakat henüz bitmedi. Kodunuzu doğrulamanız ve performansını tartışmanız gerekir.
Bir örnekle test edin: Kodunuzu bir örnek girdiyle manuel olarak adım adım çalıştırın. Bu, hataları yakalamanızı sağlar ve yazdığınız şeyi anladığınızı kanıtlar.
- "Let's test this with the example input
[3, 1, 4, 1, 5]." (Bunu[3, 1, 4, 1, 5]örnek girdisiyle test edelim.) - "First, the map is empty. In the first iteration, we add
3with a count of1. In the second, we add1with a count of1. In the fourth iteration, we see1again, so we increment its count to2." (İlk olarak, map boş. İlk iterasyonda,3'ü1sayısıyla ekliyoruz. İkincisinde,1'i1sayısıyla ekliyoruz. Dördüncü iterasyonda,1'i tekrar görüyoruz, bu yüzden sayısını2'ye çıkarıyoruz.)
- "Let's test this with the example input
Karmaşıklığı tekrar tartışın: Nihai çözümünüzün zaman ve alan karmaşıklığını yeniden belirtin.
- "The final time complexity is O(n) because we iterate through the list once. The space complexity is O(k), where k is the number of unique elements, because of the hash map." (Nihai zaman karmaşıklığı O(n) çünkü liste üzerinden bir kez geçiyoruz. Alan karmaşıklığı ise hash map nedeniyle O(k), burada k benzersiz elemanların sayısıdır.)
İyileştirmelerden bahsedin: Daha fazla zamanınız olsaydı kodun nasıl iyileştirilebileceğinden kısaca bahsedin.
- "If this were production code, I would add more robust error handling for different input types." (Eğer bu bir production kodu olsaydı, farklı girdi türleri için daha sağlam hata yönetimi eklerdim.)
- "Another possible optimization, if memory were a major concern, might be to modify the input array in-place, although that has its own trade-offs." (Eğer bellek önemli bir endişe olsaydı, başka bir olası optimizasyon, kendi getiri ve götürüleri olsa da, girdi dizisini yerinde (in-place) değiştirmek olabilirdi.)
Kaçınılması Gereken Yaygın Hatalar
- Sessizce çalışmak. Bu en büyük hatadır. Mülakatı yapan kişi zihninizi okuyamaz. Düşünce sürecinizi aşırı derecede anlatın.
- Doğrudan koda atlamak. Her zaman önce problemi netleştirin ve yaklaşımınızı tartışın.
- İpuçlarını görmezden gelmek veya tartışmak. Mülakatı yapan kişiyi bir işbirlikçi olarak görün. Geri bildirimlerini nazikçe dahil edin.
- Takıldığınızda pes etmek. Duraklamak sorun değil, ancak düşündüğünüzü bildirin. Kendi kodunuzdaki hatayı sesli olarak bulmaya çalışın.
- Uç durumları unutmak. Her zaman boş girdileri, null'ları, tekrar edenleri ve diğer standart dışı senaryoları göz önünde bulundurun.
Rıza ve Araçlar Hakkında Bir Not
Bir görüşme sırasında canlı transkripsiyon veya yardım için herhangi bir araç kullanmayı planlıyorsanız, şeffaf olmalısınız. Birçok yargı bölgesinde, tüm tarafların transkripsiyona veya kayda alınmaya rıza göstermesi gerekir. Böyle bir araç kullanıyorsanız, görüşmenin başında mülakatı yapan kişiyi daima bilgilendirin. Daha fazla ayrıntı için, arama kaydı yasaları hakkındaki genel rehberliği inceleyebilirsiniz. /law/ adresindeki kılavuzumuza bakın.
Kodunuzu İngilizce olarak sesli bir şekilde açıklamak, pratikle geliştirebileceğiniz bir beceridir. İletişiminizi yapılandırarak, net ifadeler kullanarak ve mülakatı işbirlikçi bir oturum olarak görerek, İngilizce ana diliniz olmasa bile teknik yeteneklerinizi etkili bir şekilde gösterebilirsiniz.
Yüksek önem taşıyan mülakatlara hazırlanmak için, gerçek zamanlı geri bildirim ve çeviri sağlayan bir araçla pratik yapmak özgüveninizi artırabilir. Subtl for Mac, konuşmanızın canlı bir dökümünü sunar, böylece söylenenleri gözden geçirebilir ve net, profesyonel yanıtlar oluşturmanıza yardımcı olur. /use-cases/interviews/ için kullanımı hakkında daha fazla bilgi edinin.
teknik mülakatiş mülakatıingilizce iletişimyazılım geliştirme


