Kazanimlar:
- AI'ın uydurma API, güvensiz kod ve telifli içerik üretebileceğini tanıyıp buna karşı doğrulama uygulayabilme
- Kaynak kod gizliliği, kişisel veri ve kurumsal politika sınırları içinde AI kullanımını yönetebilme
- Lisans uyumu, güvenlik ve etik açısından nihai sorumluluğun mühendiste kaldığını kavrayabilme
Modul Sinavi
1. Bir bilgisayar mühendisi olarak AI kod üretme aracıyla çalışırken aşağıdakilerden hangisinin nihai sorumluluğu her zaman insanda kalmalıdır?
- A) Üretime alınan kodun doğruluğunun, güvenliğinin ve gözden geçirilip test edilmesinin nihai onayı ✔
- B) Bir fonksiyon için ilk kod iskeletini oluşturmak
- C) Değişken adları için öneri listesi üretmek
- D) Kod yorumları için bir taslak metin hazırlamak
Aciklama: AI; kod iskeleti, test taslağı ve dokümantasyon gibi işleri hızlandırabilir. Ancak üretilen kodun doğru, güvenli ve gereksinimlere uygun olduğunun gözden geçirilip test edilerek onaylanması ve üretime alınması mühendisin sorumluluğundadır; bu, bağımsız doğrulama olmadan AI'a devredilemez.
2. AI size bir fonksiyon üretti ve mutlu senaryoda (happy path) çalışıyor görünüyor. Üretime almadan önceki en doğru adım hangisidir?
- A) Fonksiyon çalışır göründüğü için doğrudan üretime almak
- B) Kenar durumları da kapsayan küçük birim testleri yazıp çalıştırarak davranışı doğrulamak ✔
- C) Sadece fonksiyonun satır sayısına bakmak
- D) Fonksiyonun adını daha açıklayıcı yapmak
Aciklama: Çalışıyor görünmek, doğru olmak değildir. Boş girdi, sıfır, negatif, çok büyük değer ve eşleşmeyen durum gibi kenar durumları kapsayan küçük birim testleri yazıp çalıştırmak, fonksiyonun gerçek davranışını canlı ortama taşımadan doğrular.
3. AI, kullandığınız dilde 'array.sortStable()' diye var olmayan bir metot önerdi ve emin bir dille anlattı. İlk yapılacak doğru davranış nedir?
- A) AI emin göründüğü için metodu doğrudan kullanmak
- B) Metodu kendiniz tanımlayıp adını aynen kullanmak
- C) Metodun varlığını dilin/kütüphanenin resmî dokümantasyonundan doğrulamak ✔
- D) Derleyici uyarısını kapatıp devam etmek
Aciklama: Dil modelleri, gerçekte var olmayan kütüphane, paket veya metot adlarını inandırıcı biçimde uydurabilir (halüsinasyon). Önerilen her API, dilin veya kütüphanenin resmî ve güncel dokümantasyonundan birebir doğrulanmalı; belgede yoksa kullanılmamalıdır.
4. Şirketinizin gizli kaynak kodunu ve içinde gömülü bir API anahtarını herkese açık bir AI aracına yapıştırıp yardım istemek istiyorsunuz. En doğru yaklaşım hangisidir?
- A) Hızlı olması için kodu API anahtarıyla birlikte olduğu gibi yapıştırmak
- B) Sadece şirket adını silip kalan her şeyi paylaşmak yeterlidir
- C) Kodu paylaşıp sonra AI'dan silmesini istemek
- D) Sırları ve gizli mantığı çıkarıp sorunu temsili örneğe indirgemek veya kurumsal aracı kullanmak ✔
Aciklama: Gizli kaynak kod ve kimlik bilgileri (API anahtarı, parola, bağlantı dizesi); şirket sırrı ve güvenlik açısından risklidir. Sırları ve gizli iş mantığını çıkarıp sorunu anonim/temsili bir örneğe indirgemek veya kurumsal/veri paylaşmayan bir araç kullanmak gerekir.
5. AI, yazdığı bir arama fonksiyonunun karmaşıklığının O(n) olduğunu söyledi; ancak kodda iki iç içe döngü var. Doğru mühendislik davranışı hangisidir?
- A) Kodu elle analiz edip karmaşıklığı kendiniz çıkarmak ve gerekirse ölçmek ✔
- B) AI söylediği için O(n) kabul edip devam etmek
- C) Döngü sayısının performansla ilgisi olmadığını varsaymak
- D) Sadece fonksiyonun ismini değiştirmek
Aciklama: Zaman karmaşıklığı (Big-O), girdi büyüdükçe işlem sayısının nasıl arttığını gösterir. İç içe iki döngü genellikle O(n^2) demektir. AI'ın karmaşıklık iddiası, kodu elle analiz ederek ve gerekiyorsa artan girdilerle ölçüm yaparak doğrulanmalıdır; iddiaya güvenmek yanlış performans varsayımı üretir.
6. AI, kullanıcı girdisini doğrudan metin birleştirerek bir SQL sorgusuna ekleyen bir kod üretti. Buradaki temel sorun ve doğru çözüm nedir?
- A) Sorun yok; metin birleştirme en hızlı yöntemdir
- B) SQL enjeksiyonu riski vardır; girdiyi ayıran parametreli sorgu (prepared statement) kullanılmalı ✔
- C) Sadece sorguyu büyük harfe çevirmek yeterlidir
- D) Sorguyu daha kısa yazmak sorunu çözer
Aciklama: Kullanıcı girdisini doğrudan sorgu metnine eklemek SQL enjeksiyonu açığı yaratır; saldırgan girdiyle sorguyu değiştirebilir. Doğru çözüm, girdiyi sorgu metninden ayıran parametreli sorgu (prepared statement) kullanmaktır. Bu, AI kodunda en sık atlanan güvenlik hatalarından biridir.
7. AI'ın ürettiği bir kod parçasını incelerken (code review) zamanınız kısıtlı. Hangi konulara öncelik vermek en doğrudur?
- A) Yalnızca girinti ve boşluk gibi biçim ayrıntılarına
- B) Sadece değişken adlarının uzunluğuna
- C) Mantık doğruluğuna, güvenlik açıklarına ve kenar durum davranışına ✔
- D) Sadece dosyanın toplam satır sayısına
Aciklama: Kod incelemede en yüksek risk; mantık hataları, güvenlik açıkları ve gizli bilgi sızıntısı gibi ciddi zarar doğuran konulardır. Biçim ve stil sorunları otomatik araçlarla düzelir; asıl insan dikkatini doğruluk, güvenlik ve kenar durum davranışına ayırmak gerekir.
8. Bir hatayı AI'a çözdürmek istiyorsunuz. AI'ın kök nedeni bulmasına en çok hangi girdi yardımcı olur?
- A) Sadece 'kod çalışmıyor, düzelt' demek
- B) Yalnızca dosyanın adını vermek
- C) Sadece beklenen sonucu, hata metni olmadan söylemek
- D) Tam hata mesajı, yığın izi, ilgili kod ve en küçük yeniden üretim örneği vermek ✔
Aciklama: Etkili hata ayıklama için AI'a tam hata mesajını, yığın izini (stack trace), ilgili kod parçasını ve hatayı üreten en küçük yeniden üretilebilir örneği (minimal repro) vermek gerekir. Belirsiz 'çalışmıyor' ifadesi, AI'ı tahmine ve genel geçer önerilere iter.
9. AI'ın ürettiği birim testlerin hepsi ilk çalıştırmada geçiyor. Bu durumda hangi risk göz ardı edilmemelidir?
- A) Testler kodun mevcut halini onaylıyor ama gerçek/beklenen davranışı doğrulamıyor olabilir ✔
- B) Tüm testler geçtiği için kod kesinlikle hatasızdır
- C) Test sayısı fazlaysa kalite garanti edilir
- D) Geçen test, kapsamın da tam olduğunu kanıtlar
Aciklama: Testler, kodun olması gereken davranışını değil, mevcut (belki hatalı) davranışını doğruluyor olabilir; ya da anlamlı bir doğrulama (assert) içermeyip her zaman geçiyor olabilir. Testlerin gerçek beklentiyi kontrol ettiğini görmek için bilinçli olarak kodu bozup testin kırmızıya döndüğünü teyit etmek gerekir.
10. AI size bir problem için hazır bir kod bloğu üretti. Kodun bir açık kaynak projeden birebir kopyalanmış olabileceğinden şüpheleniyorsunuz. Doğru yaklaşım hangisidir?
- A) Kod çalıştığı için lisansı hiç düşünmeden kullanmak
- B) Kodun kaynağını/lisansını kontrol etmek, gerekiyorsa yeniden yazmak ve kurum politikasına uymak ✔
- C) Sadece değişken adlarını değiştirip sorunu çözülmüş saymak
- D) Lisansın yalnızca büyük şirketleri ilgilendirdiğini varsaymak
Aciklama: AI, eğitim verisindeki telifli/lisanslı kodu birebir üretebilir. Ticari bir üründe lisans ihlali ciddi hukuki risk doğurur. Kodun kaynağını ve lisansını kontrol etmek, gerekiyorsa kendi ifadenizle yeniden yazmak ve kurum lisans politikasına uymak gerekir.
11. AI, projeniz için hemen mikroservis mimarisine geçmenizi önerdi. Bu öneriyi değerlendirirken en doğru mühendislik yaklaşımı hangisidir?
- A) AI önerdiği için hemen tüm sistemi mikroservise bölmek
- B) Mikroservisin her zaman en iyi seçim olduğunu varsaymak
- C) Öneriyi gerçek gereksinim, yük, ekip yapısı ve artı-eksi dengesine göre değerlendirmek ✔
- D) Kararı yalnızca mimarinin popülerliğine göre vermek
Aciklama: Mimari kararlar bağlama bağlıdır; mikroservis ölçek ve ekip ayrımı gibi ihtiyaçlarda değer katar ama işletme karmaşıklığı, dağıtık hata ayıklama ve maliyet gibi bedeller getirir. Öneriyi gerçek gereksinim, yük, ekip yapısı ve artı-eksi dengesine göre değerlendirmek; genel bir tavsiyeyi körü körüne uygulamamak gerekir.
12. AI, kodunuz için akıcı bir README ve API dokümanı üretti; ancak bazı uç noktalar ve parametreler koddakiyle uyuşmuyor. Doğru davranış hangisidir?
- A) Metin akıcı olduğu için dokümanı olduğu gibi yayımlamak
- B) Sadece başlığı düzeltip gerisini olduğu gibi bırakmak
- C) Dokümanı hiç okumadan depoya eklemek
- D) Her uç nokta ve parametreyi gerçek kodla karşılaştırıp uyuşmayanları düzeltmek ✔
Aciklama: Dokümantasyon, gerçek kodun doğru bir yansıması olmalıdır; yanlış doküman, onu okuyan geliştiricileri hatalı kullanıma iter. Her uç nokta, parametre ve dönüş değeri gerçek kodla karşılaştırılıp doğrulanmalı, uyuşmayanlar düzeltilmelidir.
13. AI'dan kod isterken en yüksek kaliteli çıktı için hangi girdi yaklaşımı doğrudur?
- A) Dil/sürüm, girdi-çıktı sözleşmesi, kısıtlar ve hata durumlarını net biçimde vermek ✔
- B) Sadece 'bana çalışan bir kod yaz' demek
- C) Hiç bağlam vermeden en kısa isteği yazmak
- D) Yalnızca kodun kaç satır olacağını belirtmek
Aciklama: Güçlü prompt; kullanılan dil ve sürümü, girdi-çıktı sözleşmesini, performans ve stil kısıtlarını, hata durumlarını ve 'sadece istenen kapsamda kal' talimatını içerir. Bağlamsız 'bana bir fonksiyon yaz' isteği, genel geçer ve çoğu zaman uygun olmayan kod üretir.
14. AI, CI/CD (sürekli entegrasyon/dağıtım) hattınız için bir yapılandırma üretti ve içine veritabanı parolasını düz metin olarak gömdü. Doğru düzeltme hangisidir?
- A) Parola çalıştığı için düz metin olarak bırakmak
- B) Sırları ortam değişkeni veya sır yönetimi aracıyla dışarı taşımak, depoya düz metin koymamak ✔
- C) Parolayı sadece yorum satırına taşımak
- D) Dosya adını değiştirmek sorunu çözer
Aciklama: Parola, anahtar gibi sırların yapılandırma dosyasına düz metin yazılması, sürüm kontrolüne sızma ve yetkisiz erişim riski doğurur. Sırlar; ortam değişkenleri veya özel bir sır yönetimi (secrets manager) ile dışarıda tutulmalı, depoya asla düz metin olarak girmemelidir.